tree:
https://github.com/meghadey/crypto gcm_vaes
head: 170448f9b4611af0d2d219a0888173f0ab9b290b
commit: 170448f9b4611af0d2d219a0888173f0ab9b290b [3/3] working
config: x86_64-randconfig-a016-20200519 (attached as .config)
compiler: clang version 11.0.0 (
https://github.com/llvm/llvm-project
135b877874fae96b4372c8a3fbfaa8ff44ff86e3)
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout 170448f9b4611af0d2d219a0888173f0ab9b290b
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
> arch/x86/crypto/aesni-intel_glue.c:813:47: warning: format
specifies type 'unsigned long' but the argument has type 'u32' (aka
'unsigned int') [-Wformat]
printk("Megha KeyLength %lx left %lxn",
ctx->key_length, left);
~~~ ^~~~~~~~~~~~~~~
%x
1 warning generated.
vim +813 arch/x86/crypto/aesni-intel_glue.c
718
719 static int gcmaes_crypt_by_sg(bool enc, struct aead_request *req,
720 unsigned int assoclen, u8 *hash_subkey,
721 u8 *iv, void *aes_ctx)
722 {
723 struct crypto_aead *tfm = crypto_aead_reqtfm(req);
724 unsigned long auth_tag_len = crypto_aead_authsize(tfm);
725 const struct aesni_gcm_tfm_s *gcm_tfm = aesni_gcm_tfm;
726 struct gcm_context_data data AESNI_ALIGN_ATTR;
727 struct scatter_walk dst_sg_walk = {};
728 unsigned long left = req->cryptlen;
729 unsigned long len, srclen, dstlen;
730 struct scatter_walk assoc_sg_walk;
731 struct scatter_walk src_sg_walk;
732 struct scatterlist src_start[2];
733 struct scatterlist dst_start[2];
734 struct scatterlist *src_sg;
735 struct scatterlist *dst_sg;
736 u8 *src, *dst, *assoc;
737 u8 *assocmem = NULL;
738 u8 authTag[16];
739 int i;
740 struct crypto_aes_ctx *ctx;
741
742 if (!enc)
743 left -= auth_tag_len;
744
745 if (left < AVX_GEN4_OPTSIZE && gcm_tfm == &aesni_gcm_tfm_avx_gen4)
746 gcm_tfm = &aesni_gcm_tfm_avx_gen2;
747 if (left < AVX_GEN2_OPTSIZE && gcm_tfm == &aesni_gcm_tfm_avx_gen2)
748 gcm_tfm = &aesni_gcm_tfm_sse;
749
750 /* Linearize assoc, if not already linear */
751 if (req->src->length >= assoclen && req->src->length
&&
752 (!PageHighMem(sg_page(req->src)) ||
753 req->src->offset + req->src->length <= PAGE_SIZE)) {
754 scatterwalk_start(&assoc_sg_walk, req->src);
755 assoc = scatterwalk_map(&assoc_sg_walk);
756 } else {
757 /* assoc can be any length, so must be on heap */
758 assocmem = kmalloc(assoclen, GFP_ATOMIC);
759 if (unlikely(!assocmem))
760 return -ENOMEM;
761 assoc = assocmem;
762
763 scatterwalk_map_and_copy(assoc, req->src, 0, assoclen, 0);
764 }
765
766 if (left) {
767 src_sg = scatterwalk_ffwd(src_start, req->src, req->assoclen);
768 scatterwalk_start(&src_sg_walk, src_sg);
769 if (req->src != req->dst) {
770 dst_sg = scatterwalk_ffwd(dst_start, req->dst,
771 req->assoclen);
772 scatterwalk_start(&dst_sg_walk, dst_sg);
773 }
774 }
775
776 kernel_fpu_begin();
777 ctx = (struct crypto_aes_ctx*) aes_ctx;
778 memcpy(data.hash_keys , hash_subkey, 16*48);
779 gcm_tfm->init(aes_ctx, &data, iv,
780 hash_subkey, assoc, assoclen);
781 if (req->src != req->dst) {
782 while (left) {
783 src = scatterwalk_map(&src_sg_walk);
784 dst = scatterwalk_map(&dst_sg_walk);
785 srclen = scatterwalk_clamp(&src_sg_walk, left);
786 dstlen = scatterwalk_clamp(&dst_sg_walk, left);
787 len = min(srclen, dstlen);
788 if (len) {
789 if (enc) {
790 gcm_tfm->enc_update(aes_ctx, &data,
791 dst, src, len);
792 } else
793 gcm_tfm->dec_update(aes_ctx, &data,
794 dst, src, len);
795 }
796 left -= len;
797
798 scatterwalk_unmap(src);
799 scatterwalk_unmap(dst);
800 scatterwalk_advance(&src_sg_walk, len);
801 scatterwalk_advance(&dst_sg_walk, len);
802 scatterwalk_done(&src_sg_walk, 0, left);
803 scatterwalk_done(&dst_sg_walk, 1, left);
804 }
805 } else {
806 while (left) {
807 dst = src = scatterwalk_map(&src_sg_walk);
808 len = scatterwalk_clamp(&src_sg_walk, left);
809 if (len) {
810 if (enc) {
811 gcm_tfm->enc_update(aes_ctx, &data,
812 src, src, len);
813 printk("Megha KeyLength %lx left %lx\n",
ctx->key_length, left);
814 printk("Megha cipher:\n");
815 for(i=0;i<8;i++)
816 printk("%lx ", *(unsigned long*)(src + (i*8)));
817 printk("\n");
818 } else {
819 gcm_tfm->dec_update(aes_ctx, &data,
820 src, src, len);
821 printk("Megha plaintext:\n");
822 for(i=0;i<8;i++)
823 printk("%lx ", *(unsigned
long*)(src + (i*8)));
824 printk("\n");
825 }
826 }
827 left -= len;
828 scatterwalk_unmap(src);
829 scatterwalk_advance(&src_sg_walk, len);
830 scatterwalk_done(&src_sg_walk, 1, left);
831 }
832 }
833 gcm_tfm->finalize(aes_ctx, &data, authTag, auth_tag_len);
834 printk("Megha tag:\n");
835 for(i=0;i<2;i++)
836 printk("%lx ", *(unsigned long*)(authTag + (i*8)));
837 printk("\n");
838 kernel_fpu_end();
839
840 if (!assocmem)
841 scatterwalk_unmap(assoc);
842 else
843 kfree(assocmem);
844
845 if (!enc) {
846 u8 authTagMsg[16];
847
848 /* Copy out original authTag */
849 scatterwalk_map_and_copy(authTagMsg, req->src,
850 req->assoclen + req->cryptlen -
851 auth_tag_len,
852 auth_tag_len, 0);
853
854 /* Compare generated tag with passed in tag. */
855 return crypto_memneq(authTagMsg, authTag, auth_tag_len) ?
856 -EBADMSG : 0;
857 }
858
859 /* Copy in the authTag */
860 scatterwalk_map_and_copy(authTag, req->dst,
861 req->assoclen + req->cryptlen,
862 auth_tag_len, 1);
863
864 return 0;
865 }
866
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org