tree:
git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git for-kernelci
head: 295a2a7d5fd9ff0e1fd50d5265297464888cbfef
commit: 295a2a7d5fd9ff0e1fd50d5265297464888cbfef [4/4] efi: use 32-bit alignment for
efi_guid_t literals
config: x86_64-randconfig-s021-20210309 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-262-g5e674421-dirty
#
https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git/commit/?id...
git remote add ardb
git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git
git fetch --no-tags ardb for-kernelci
git checkout 295a2a7d5fd9ff0e1fd50d5265297464888cbfef
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
"sparse warnings: (new ones prefixed by >>)"
> drivers/infiniband/hw/hfi1/efivar.c:100:16: sparse: sparse:
incorrect type in initializer (different base types) @@ expected restricted __le32
[usertype] a @@ got unsigned int @@
drivers/infiniband/hw/hfi1/efivar.c:100:16: sparse: expected restricted __le32
[usertype] a
drivers/infiniband/hw/hfi1/efivar.c:100:16: sparse: got unsigned int
> drivers/infiniband/hw/hfi1/efivar.c:100:16: sparse: sparse:
incorrect type in initializer (different base types) @@ expected restricted __le16
[usertype] b @@ got int @@
drivers/infiniband/hw/hfi1/efivar.c:100:16:
sparse: expected restricted __le16 [usertype] b
drivers/infiniband/hw/hfi1/efivar.c:100:16: sparse: got int
> drivers/infiniband/hw/hfi1/efivar.c:100:16: sparse: sparse:
incorrect type in initializer (different base types) @@ expected restricted __le16
[usertype] c @@ got int @@
drivers/infiniband/hw/hfi1/efivar.c:100:16:
sparse: expected restricted __le16 [usertype] c
drivers/infiniband/hw/hfi1/efivar.c:100:16: sparse: got int
vim +100 drivers/infiniband/hw/hfi1/efivar.c
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 56
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 57
/*
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 58 *
Read the named EFI variable. Return the size of the actual data in *size
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 59 *
and a kmalloc'ed buffer in *return_data. The caller must free the
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 60 *
data. It is guaranteed that *return_data will be NULL and *size = 0
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 61 *
if this routine fails.
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 62
*
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 63 *
Return 0 on success, -errno on failure.
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 64
*/
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 65
static int read_efi_var(const char *name, unsigned long *size,
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 66
void **return_data)
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 67 {
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 68
efi_status_t status;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 69
efi_char16_t *uni_name;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 70
efi_guid_t guid;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 71
unsigned long temp_size;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 72
void *temp_buffer;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 73
void *data;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 74
int i;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 75
int ret;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 76
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 77
/* set failure return values */
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 78
*size = 0;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 79
*return_data = NULL;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 80
d79b348c354061 drivers/infiniband/hw/hfi1/efivar.c Ard Biesheuvel 2020-01-23 81
if (!efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE))
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 82
return -EOPNOTSUPP;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 83
5a267953baca23 drivers/staging/rdma/hfi1/efivar.c Janani Ravichandran 2016-02-09 84
uni_name = kcalloc(strlen(name) + 1, sizeof(efi_char16_t), GFP_KERNEL);
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 85
temp_buffer = kzalloc(EFI_DATA_SIZE, GFP_KERNEL);
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 86
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 87
if (!uni_name || !temp_buffer) {
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 88
ret = -ENOMEM;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 89
goto fail;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 90
}
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 91
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 92
/* input: the size of the buffer */
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 93
temp_size = EFI_DATA_SIZE;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 94
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 95
/* convert ASCII to unicode - it is a 1:1 mapping */
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 96
for (i = 0; name[i]; i++)
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 97
uni_name[i] = name[i];
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 98
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 99
/* need a variable for our GUID */
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 @100
guid = HFI1_EFIVAR_GUID;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 101
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 102
/* call into EFI runtime services */
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 103
status = efi.get_variable(
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 104
uni_name,
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 105
&guid,
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 106
NULL,
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 107
&temp_size,
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 108
temp_buffer);
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 109
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 110
/*
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 111
* It would be nice to call efi_status_to_err() here, but that
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 112
* is in the EFIVAR_FS code and may not be compiled in.
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 113
* However, even that is insufficient since it does not cover
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 114
* EFI_BUFFER_TOO_SMALL which could be an important return.
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 115
* For now, just split out succces or not found.
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 116
*/
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 117
ret = status == EFI_SUCCESS ? 0 :
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 118
status == EFI_NOT_FOUND ? -ENOENT :
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 119
-EINVAL;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 120
if (ret)
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 121
goto fail;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 122
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 123
/*
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 124
* We have successfully read the EFI variable into our
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 125
* temporary buffer. Now allocate a correctly sized
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 126
* buffer.
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 127
*/
94b397cd253396 drivers/staging/rdma/hfi1/efivar.c Amitoj Kaur Chawla 2016-02-16 128
data = kmemdup(temp_buffer, temp_size, GFP_KERNEL);
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 129
if (!data) {
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 130
ret = -ENOMEM;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 131
goto fail;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 132
}
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 133
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 134
*size = temp_size;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 135
*return_data = data;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 136
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 137
fail:
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 138
kfree(uni_name);
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 139
kfree(temp_buffer);
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 140
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 141
return ret;
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 142 }
5d9157aafb16be drivers/staging/rdma/hfi1/efivar.c Dean Luick 2015-11-16 143
:::::: The code at line 100 was first introduced by commit
:::::: 5d9157aafb16bed45e3bf167baa16f1fbe1090cd staging/rdma/hfi1: Read EFI variable for
device description
:::::: TO: Dean Luick <dean.luick(a)intel.com>
:::::: CC: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org