All of lore.kernel.org
 help / color / mirror / Atom feed
* [xilinx-xlnx:lkp_test 267/504] drivers/gpu/drm/xlnx/hdcp/xlnx_hdcp2x_crypt.c:312:6: warning: stack frame size (1032) exceeds limit (1024) in 'xlnx_hdcp2x_tx_compute_hprime'
@ 2025-01-11 11:08 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-01-11 11:08 UTC (permalink / raw)
  To: Lakshmi Prasanna Eachuri
  Cc: llvm, oe-kbuild-all, git, Michal Simek, Vishal Sagar

tree:   https://github.com/Xilinx/linux-xlnx lkp_test
head:   9ac6b4acf9144465ac1408d4d799635dec0223a0
commit: 6c8caf3eeadd38ffab47f6cfb7dba45556256143 [267/504] drm: xlnx: Add HDCP2X TX support
config: hexagon-allmodconfig (https://download.01.org/0day-ci/archive/20250111/202501111807.GgRdE5tE-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project f5cd181ffbb7cb61d582fe130d46580d5969d47a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250111/202501111807.GgRdE5tE-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202501111807.GgRdE5tE-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/xlnx/hdcp/xlnx_hdcp2x_crypt.c:312:6: warning: stack frame size (1032) exceeds limit (1024) in 'xlnx_hdcp2x_tx_compute_hprime' [-Wframe-larger-than]
     312 | void xlnx_hdcp2x_tx_compute_hprime(const u8 *r_rx, const u8 *rxcaps,
         |      ^
>> drivers/gpu/drm/xlnx/hdcp/xlnx_hdcp2x_crypt.c:380:6: warning: stack frame size (1040) exceeds limit (1024) in 'xlnx_hdcp2x_tx_compute_lprime' [-Wframe-larger-than]
     380 | void xlnx_hdcp2x_tx_compute_lprime(const u8 *rn, const u8 *km,
         |      ^
>> drivers/gpu/drm/xlnx/hdcp/xlnx_hdcp2x_crypt.c:411:6: warning: stack frame size (1192) exceeds limit (1024) in 'xlnx_hdcp2x_tx_compute_v' [-Wframe-larger-than]
     411 | void xlnx_hdcp2x_tx_compute_v(const u8 *rn, const u8 *r_rx, const u8 *rx_info,
         |      ^
>> drivers/gpu/drm/xlnx/hdcp/xlnx_hdcp2x_crypt.c:446:6: warning: stack frame size (1216) exceeds limit (1024) in 'xlnx_hdcp2x_tx_compute_m' [-Wframe-larger-than]
     446 | void xlnx_hdcp2x_tx_compute_m(const u8 *rn, const u8 *r_rx, const u8 *r_tx,
         |      ^
   4 warnings generated.


vim +/xlnx_hdcp2x_tx_compute_hprime +312 drivers/gpu/drm/xlnx/hdcp/xlnx_hdcp2x_crypt.c

   311	
 > 312	void xlnx_hdcp2x_tx_compute_hprime(const u8 *r_rx, const u8 *rxcaps,
   313					   const u8 *r_tx, const u8 *txcaps,
   314					   const u8 *km, u8 *hprime)
   315	{
   316		u8 kd[HDCP2X_TX_DKEY_SIZE * HDCP2X_TX_AES128_SIZE] = {0};
   317		u8 aes_iv[HDCP2X_TX_AES128_SIZE] = {0};
   318		u8 aes_key[HDCP2X_TX_AES128_SIZE] = {0};
   319		u8 hash_input[HDCP_2_2_RTX_LEN + HDCP_2_2_RXCAPS_LEN +
   320					HDCP2X_TX_TXCAPS_SIZE] = {0};
   321		int idx = 0;
   322	
   323		memcpy(aes_key, km, HDCP2X_TX_KM_SIZE);
   324		memcpy(aes_iv, r_tx, HDCP_2_2_RTX_LEN);
   325		memcpy(&aes_iv[HDCP_2_2_RTX_LEN], r_rx, HDCP_2_2_RRX_LEN);
   326	
   327		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, kd);
   328	
   329		/* Determine dkey1, counter is 1: Rrx | 0x01. */
   330	
   331		/*
   332		 * Reference: Section 2.7.1: Key derivation
   333		 * https://www.digital-cp.com/sites/default/files/HDCP%20on%20DisplayPort%20Specification%20Rev2_3.pdf
   334		 */
   335		aes_iv[HDCP2X_TX_DKEY] ^= HDCP2X_TX_DKEY_CTR1;
   336	
   337		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, &kd[HDCP2X_TX_KM_SIZE]);
   338		memcpy(hash_input, r_tx, HDCP_2_2_RTX_LEN);
   339		idx += HDCP_2_2_RTX_LEN;
   340		memcpy(&hash_input[idx], rxcaps, HDCP_2_2_RXCAPS_LEN);
   341		idx += HDCP_2_2_RXCAPS_LEN;
   342		memcpy(&hash_input[idx], txcaps, HDCP2X_TX_TXCAPS_SIZE);
   343	
   344		xlnx_hdcp2x_cmn_hmac_sha256_hash(hash_input, sizeof(hash_input), kd,
   345						 sizeof(kd), hprime);
   346	}
   347	
   348	void xlnx_hdcp2x_tx_compute_edkey_ks(const u8 *rn, const u8 *km, const u8 *ks,
   349					     const u8 *r_rx, const u8 *r_tx,
   350					     u8 *encrypted_ks)
   351	{
   352		u8 aes_iv[HDCP2X_TX_AES128_SIZE] = {0};
   353		u8 aes_key[HDCP2X_TX_AES128_SIZE] = {0};
   354		u8 dkey2[HDCP2X_TX_AES128_SIZE] = {0};
   355	
   356		memcpy(&aes_key[HDCP_2_2_RN_LEN], rn, HDCP_2_2_RN_LEN);
   357	
   358		xlnx_hdcp2x_tx_memxor(aes_key, aes_key, km, HDCP2X_TX_KM_SIZE);
   359	
   360		/* Determine dkey2. */
   361		/* Add m = Rtx || Rrx. */
   362		memcpy(aes_iv, r_tx, HDCP_2_2_RTX_LEN);
   363		memcpy(&aes_iv[HDCP_2_2_RTX_LEN], r_rx, HDCP_2_2_RRX_LEN);
   364	
   365		aes_iv[HDCP2X_TX_DKEY] ^= HDCP2X_TX_DKEY_CTR2;
   366	
   367		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, dkey2);
   368	
   369		/* EdkeyKs = Ks XOR (Dkey2 XOR Rrx). */
   370		/* Rrx XOR Dkey2. */
   371		memset(encrypted_ks, 0, HDCP_2_2_E_DKEY_KS_LEN);
   372	
   373		memcpy(&encrypted_ks[HDCP_2_2_E_DKEY_KS_LEN - HDCP_2_2_RRX_LEN], r_rx,
   374		       HDCP_2_2_RRX_LEN);
   375	
   376		xlnx_hdcp2x_tx_memxor(encrypted_ks, encrypted_ks, dkey2, HDCP2X_TX_AES128_SIZE);
   377		xlnx_hdcp2x_tx_memxor(encrypted_ks, encrypted_ks, ks, HDCP2X_TX_KS_SIZE);
   378	}
   379	
 > 380	void xlnx_hdcp2x_tx_compute_lprime(const u8 *rn, const u8 *km,
   381					   const u8 *r_rx, const u8 *r_tx,
   382					   u8 *lprime)
   383	{
   384		u8 hash_key[HDCP2X_TX_SHA256_HASH_SIZE] = {0};
   385		u8 aes_iv[HDCP2X_TX_AES128_SIZE] = {0};
   386		u8 aes_key[HDCP2X_TX_AES128_SIZE] = {0};
   387		u8 kd[HDCP2X_TX_DKEY_SIZE * HDCP2X_TX_AES128_SIZE] = {0};
   388	
   389		memcpy(aes_key, km, HDCP2X_TX_KM_SIZE);
   390		memcpy(aes_iv, r_tx, HDCP_2_2_RTX_LEN);
   391		memcpy(&aes_iv[HDCP_2_2_RTX_LEN], r_rx, HDCP_2_2_RRX_LEN);
   392	
   393		/* Compute Dkey0. */
   394		/* Add m = Rtx || Rrx. */
   395		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, kd);
   396	
   397		/* Compute Dkey , counter is 1: Rrx | 0x01. */
   398		aes_iv[HDCP2X_TX_DKEY] ^= HDCP2X_TX_DKEY_CTR1;
   399		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, &kd[HDCP2X_TX_KM_SIZE]);
   400	
   401		/* Create hash with HMAC-SHA256. */
   402		/* Key:	Kd XOR Rrx (least sign. 64 bits). */
   403		memcpy(&hash_key[HDCP2X_TX_SHA256_HASH_SIZE - HDCP_2_2_RRX_LEN], r_rx,
   404		       HDCP_2_2_RRX_LEN);
   405	
   406		xlnx_hdcp2x_tx_memxor(hash_key, hash_key, kd, HDCP2X_TX_SHA256_HASH_SIZE);
   407		xlnx_hdcp2x_cmn_hmac_sha256_hash(rn, HDCP_2_2_RN_LEN, hash_key,
   408						 HDCP2X_TX_SHA256_HASH_SIZE, lprime);
   409	}
   410	
 > 411	void xlnx_hdcp2x_tx_compute_v(const u8 *rn, const u8 *r_rx, const u8 *rx_info,
   412				      const u8 *r_tx, const u8 *rcvid_list, const u8 rcvid_count,
   413				      const u8 *seq_num_v, const u8 *km, u8 *hash_v)
   414	{
   415		u8 kd[HDCP2X_TX_DKEY_SIZE * HDCP2X_TX_AES128_SIZE] = {0};
   416		u8 aes_iv[HDCP2X_TX_AES128_SIZE] = {0};
   417		u8 aes_key[HDCP2X_TX_AES128_SIZE] = {0};
   418		u8 hash_input[(HDCP_2_2_MAX_DEVICE_COUNT * HDCP_2_2_RECEIVER_ID_LEN) +
   419					  HDCP_2_2_RXINFO_LEN + HDCP_2_2_SEQ_NUM_LEN];
   420		int idx = 0;
   421	
   422		memcpy(aes_key, km, HDCP2X_TX_KM_SIZE);
   423	
   424		/* Determine Dkey. */
   425		/* Add m = Rtx || Rrx. */
   426		memcpy(aes_iv, r_tx, HDCP_2_2_RTX_LEN);
   427		memcpy(&aes_iv[HDCP_2_2_RTX_LEN], r_rx, HDCP_2_2_RRX_LEN);
   428	
   429		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, kd);
   430	
   431		aes_iv[HDCP2X_TX_DKEY] ^= HDCP2X_TX_DKEY_CTR1;
   432		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, &kd[HDCP2X_TX_KM_SIZE]);
   433	
   434		/* Create hash with HMAC-SHA256. */
   435		/* Input: ReceiverID list || RxInfo || seq_num_V. */
   436		memcpy(hash_input, rcvid_list, (rcvid_count * HDCP_2_2_RECEIVER_ID_LEN));
   437		idx += (rcvid_count * HDCP_2_2_RECEIVER_ID_LEN);
   438		memcpy(&hash_input[idx], rx_info, HDCP_2_2_RXINFO_LEN);
   439		idx += HDCP_2_2_RXINFO_LEN;
   440		memcpy(&hash_input[idx], seq_num_v, HDCP_2_2_SEQ_NUM_LEN);
   441		idx += HDCP_2_2_SEQ_NUM_LEN;
   442	
   443		xlnx_hdcp2x_cmn_hmac_sha256_hash(hash_input, idx, kd, sizeof(kd), hash_v);
   444	}
   445	
 > 446	void xlnx_hdcp2x_tx_compute_m(const u8 *rn, const u8 *r_rx, const u8 *r_tx,
   447				      const u8 *stream_id_type, const u8 *k,
   448				      const u8 *seq_num_m, const u8 *km, u8 *m_hash)
   449	{
   450		u8 aes_iv[HDCP2X_TX_AES128_SIZE];
   451		u8 aes_key[HDCP2X_TX_AES128_SIZE];
   452		u8 kd[HDCP2X_TX_DKEY_SIZE * HDCP2X_TX_AES128_SIZE];
   453		u8 sha256_kd[HDCP2X_TX_SHA256_HASH_SIZE];
   454		u8 hash_input[(HDCP_2_2_MAX_DEVICE_COUNT * HDCP_2_2_RECEIVER_ID_LEN) +
   455					  HDCP_2_2_RXINFO_LEN + HDCP_2_2_SEQ_NUM_LEN];
   456		u16 stream_id_count;
   457		int idx = 0;
   458	
   459		stream_id_count  = k[0] << BITS_PER_BYTE;
   460		stream_id_count |= k[1];
   461	
   462		memcpy(aes_key, km, HDCP2X_TX_KM_SIZE);
   463		memcpy(aes_iv, r_tx, HDCP_2_2_RTX_LEN);
   464		memcpy(&aes_iv[HDCP_2_2_RTX_LEN], r_rx, HDCP_2_2_RRX_LEN);
   465	
   466		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, kd);
   467	
   468		/* Determine Dkey0. */
   469		/* Add m = Rtx || Rrx. */
   470		aes_iv[HDCP2X_TX_DKEY] ^= HDCP2X_TX_DKEY_CTR1;
   471	
   472		xlnx_hdcp2x_tx_aes128_encrypt(aes_iv, aes_key, &kd[HDCP2X_TX_KM_SIZE]);
   473	
   474		sha256(kd, sizeof(kd), sha256_kd);
   475	
   476		/* Create hash with HMAC-SHA256. */
   477		/* Input: StreamID_Type list || seq_num_M. */
   478		memcpy(hash_input, stream_id_type, (stream_id_count * HDCP2X_TX_STREAMID_TYPE_SIZE));
   479		idx += (stream_id_count * HDCP2X_TX_STREAMID_TYPE_SIZE);
   480		memcpy(&hash_input[idx], seq_num_m, HDCP_2_2_SEQ_NUM_LEN);
   481		idx += HDCP_2_2_SEQ_NUM_LEN;
   482	
   483		/* HashKey:	SHA256(Kd) */
   484		xlnx_hdcp2x_cmn_hmac_sha256_hash(hash_input, idx, sha256_kd, sizeof(sha256_kd), m_hash);
   485	}
   486	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-01-11 11:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-11 11:08 [xilinx-xlnx:lkp_test 267/504] drivers/gpu/drm/xlnx/hdcp/xlnx_hdcp2x_crypt.c:312:6: warning: stack frame size (1032) exceeds limit (1024) in 'xlnx_hdcp2x_tx_compute_hprime' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.