CC: [email protected] TO: Steve French <[email protected]>
tree: git://github.com/smfrench/smb3-kernel.git for-next
head: 28711a66701e3aefc5748dcde38dba1e2e79de34
commit: 46c2db2a20898662a26fc3de1fa9499271049570 [12/18] cifs: take
cifs_tcp_ses_lock for status checks
:::::: branch date: 24 hours ago
:::::: commit date: 24 hours ago
config: i386-randconfig-c001-20211118 (attached as .config)
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://github.com/smfrench/smb3-kernel/commit/46c2db2a20898662a26fc3de1fa9499271049570
git remote add smfrench-smb3 git://github.com/smfrench/smb3-kernel.git
git fetch --no-tags smfrench-smb3 for-next
git checkout 46c2db2a20898662a26fc3de1fa9499271049570
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386
clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
clang-analyzer warnings: (new ones prefixed by >>)
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:836:21:
note: Assuming field 'usMclkDependencyTableOffset' is equal to 0
if (result == 0 && powerplay_table->usMclkDependencyTableOffset != 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:836:2:
note: Taking false branch
if (result == 0 && powerplay_table->usMclkDependencyTableOffset != 0)
^
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:840:6:
note: 'result' is equal to 0
if (result == 0 && powerplay_table->usPCIETableOffset != 0)
^~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:840:6:
note: Left side of '&&' is true
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:840:21:
note: Assuming field 'usPCIETableOffset' is equal to 0
if (result == 0 && powerplay_table->usPCIETableOffset != 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:840:2:
note: Taking false branch
if (result == 0 && powerplay_table->usPCIETableOffset != 0)
^
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:844:6:
note: 'result' is equal to 0
if (result == 0 && powerplay_table->usHardLimitTableOffset != 0)
^~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:844:6:
note: Left side of '&&' is true
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:844:21:
note: Assuming field 'usHardLimitTableOffset' is equal to 0
if (result == 0 && powerplay_table->usHardLimitTableOffset != 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:844:2:
note: Taking false branch
if (result == 0 && powerplay_table->usHardLimitTableOffset != 0)
^
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:857:6:
note: 'result' is equal to 0
if (result == 0 && (NULL != pp_table_information->vdd_dep_on_mclk)
^~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:857:6:
note: Left side of '&&' is true
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:857:22:
note: NULL is equal to field 'vdd_dep_on_mclk'
if (result == 0 && (NULL != pp_table_information->vdd_dep_on_mclk)
^
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
#define NULL ((void *)0)
^~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:858:3:
note: Left side of '&&' is false
&& (0 != pp_table_information->vdd_dep_on_mclk->count))
^
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:862:6:
note: 'result' is equal to 0
if (result == 0 && (NULL != pp_table_information->vdd_dep_on_sclk)
^~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:862:6:
note: Left side of '&&' is true
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:862:22:
note: NULL is equal to field 'vdd_dep_on_sclk'
if (result == 0 && (NULL != pp_table_information->vdd_dep_on_sclk)
^
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
#define NULL ((void *)0)
^~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:863:3:
note: Left side of '&&' is false
&& (0 != pp_table_information->vdd_dep_on_sclk->count))
^
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:867:7:
note: 'result' is 0
if (!result && gpio_table)
^~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:867:6:
note: Left side of '&&' is true
if (!result && gpio_table)
^
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:867:17:
note: Assuming 'gpio_table' is non-null
if (!result && gpio_table)
^~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:867:2:
note: Taking true branch
if (!result && gpio_table)
^
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:868:12:
note: Calling 'get_gpio_table'
result = get_gpio_table(hwmgr,
&pp_table_information->gpio_table,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:765:18:
note: Calling 'kzalloc'
pp_gpio_table = kzalloc(table_size, GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:724:9: note: Calling 'kmalloc'
return kmalloc(size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:578:2: note: Taking false branch
if (__builtin_constant_p(size)) {
^
include/linux/slab.h:595:2: note: Returning pointer, which participates in a
condition later
return __kmalloc(size, flags);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:724:9: note: Returning from 'kmalloc'
return kmalloc(size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:724:2: note: Returning pointer, which participates in a
condition later
return kmalloc(size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:765:18:
note: Returning from 'kzalloc'
pp_gpio_table = kzalloc(table_size, GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:766:6:
note: Assuming 'pp_gpio_table' is non-null
if (!pp_gpio_table)
^~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:766:2:
note: Taking false branch
if (!pp_gpio_table)
^
drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.c:769:6:
note: Access to field 'count' results in a dereference of a null pointer
(loaded from field 'vdd_dep_on_sclk')
if (pp_table_information->vdd_dep_on_sclk->count <
^ ~~~~~~~~~~~~~~~
Suppressed 6 warnings (6 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
9 warnings generated.
>> fs/cifs/smb1ops.c:229:6: warning: Branch condition evaluates to a garbage
>> value [clang-analyzer-core.uninitialized.Branch]
if (reconnect) {
^~~~~~~~~
fs/cifs/smb1ops.c:166:18: note: 'reconnect' declared without an initial value
bool collision, reconnect;
^~~~~~~~~
fs/cifs/smb1ops.c:176:6: note: Assuming 'cur_mid' is not equal to 65535
if (cur_mid == 0xffff)
^~~~~~~~~~~~~~~~~
fs/cifs/smb1ops.c:176:2: note: Taking false branch
if (cur_mid == 0xffff)
^
fs/cifs/smb1ops.c:188:9: note: Assuming 'cur_mid' is equal to 'last_mid'
while (cur_mid != last_mid) {
^~~~~~~~~~~~~~~~~~~
fs/cifs/smb1ops.c:188:2: note: Loop condition is false. Execution continues
on line 227
while (cur_mid != last_mid) {
^
fs/cifs/smb1ops.c:229:6: note: Branch condition evaluates to a garbage value
if (reconnect) {
^~~~~~~~~
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
8 warnings generated.
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
3 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use
-system-headers to display errors from system headers as well.
6 warnings generated.
drivers/staging/greybus/fw-download.c:51:19: warning: Use of memory after it
is freed [clang-analyzer-unix.Malloc]
release_firmware(fw_req->fw);
^
drivers/staging/greybus/fw-download.c:442:6: note: Assuming 'connection' is
non-null
if (!connection)
^~~~~~~~~~~
drivers/staging/greybus/fw-download.c:442:2: note: Taking false branch
if (!connection)
^
drivers/staging/greybus/fw-download.c:453:2: note: Loop condition is false.
Execution continues on line 455
list_for_each_entry(fw_req, &fw_download->fw_requests, node)
^
include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry'
for (pos = list_first_entry(head, typeof(*pos), member); \
^
drivers/staging/greybus/fw-download.c:458:2: note: Loop condition is true.
Entering loop body
list_for_each_entry_safe(fw_req, tmp, &fw_download->fw_requests,
node) {
^
include/linux/list.h:717:2: note: expanded from macro
'list_for_each_entry_safe'
for (pos = list_first_entry(head, typeof(*pos), member), \
^
drivers/staging/greybus/fw-download.c:460:3: note: Calling 'free_firmware'
free_firmware(fw_download, fw_req);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/greybus/fw-download.c:118:6: note: Assuming field 'disabled'
is false
if (fw_req->disabled)
^~~~~~~~~~~~~~~~
drivers/staging/greybus/fw-download.c:118:2: note: Taking false branch
if (fw_req->disabled)
^
drivers/staging/greybus/fw-download.c:126:2: note: Calling 'put_fw_req'
put_fw_req(fw_req);
^~~~~~~~~~~~~~~~~~
drivers/staging/greybus/fw-download.c:88:2: note: Calling 'kref_put'
kref_put(&fw_req->kref, fw_req_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'fw_req_release'
release(kref);
^~~~~~~~~~~~~
drivers/staging/greybus/fw-download.c:48:2: note: Taking false branch
dev_dbg(fw_req->fw_download->parent, "firmware %s released\n",
^
include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
if (0) \
^
drivers/staging/greybus/fw-download.c:65:6: note: Assuming field 'timedout'
is true
if (!fw_req->timedout)
^~~~~~~~~~~~~~~~~
drivers/staging/greybus/fw-download.c:65:2: note: Taking false branch
if (!fw_req->timedout)
^
drivers/staging/greybus/fw-download.c:69:2: note: Memory is released
kfree(fw_req);
vim +229 fs/cifs/smb1ops.c
a891f0f895f4a7 Pavel Shilovsky 2012-05-23 139
88257360605f93 Pavel Shilovsky 2012-05-23 140 /*
88257360605f93 Pavel Shilovsky 2012-05-23 141 * Find a free
multiplex id (SMB mid). Otherwise there could be
88257360605f93 Pavel Shilovsky 2012-05-23 142 * mid collisions
which might cause problems, demultiplexing the
88257360605f93 Pavel Shilovsky 2012-05-23 143 * wrong response to
this request. Multiplex ids could collide if
88257360605f93 Pavel Shilovsky 2012-05-23 144 * one of a series
requests takes much longer than the others, or
88257360605f93 Pavel Shilovsky 2012-05-23 145 * if a very large
number of long lived requests (byte range
88257360605f93 Pavel Shilovsky 2012-05-23 146 * locks or
FindNotify requests) are pending. No more than
88257360605f93 Pavel Shilovsky 2012-05-23 147 * 64K-1 requests
can be outstanding at one time. If no
88257360605f93 Pavel Shilovsky 2012-05-23 148 * mids are
available, return zero. A future optimization
88257360605f93 Pavel Shilovsky 2012-05-23 149 * could make the
combination of mids and uid the key we use
88257360605f93 Pavel Shilovsky 2012-05-23 150 * to demultiplex on
(rather than mid alone).
88257360605f93 Pavel Shilovsky 2012-05-23 151 * In addition to
the above check, the cifs demultiplex
88257360605f93 Pavel Shilovsky 2012-05-23 152 * code already used
the command code as a secondary
88257360605f93 Pavel Shilovsky 2012-05-23 153 * check of the
frame and if signing is negotiated the
88257360605f93 Pavel Shilovsky 2012-05-23 154 * response would be
discarded if the mid were the same
88257360605f93 Pavel Shilovsky 2012-05-23 155 * but the signature
was wrong. Since the mid is not put in the
88257360605f93 Pavel Shilovsky 2012-05-23 156 * pending queue
until later (when it is about to be dispatched)
88257360605f93 Pavel Shilovsky 2012-05-23 157 * we do have to
limit the number of outstanding requests
88257360605f93 Pavel Shilovsky 2012-05-23 158 * to somewhat less
than 64K-1 although it is hard to imagine
88257360605f93 Pavel Shilovsky 2012-05-23 159 * so many threads
being in the vfs at one time.
88257360605f93 Pavel Shilovsky 2012-05-23 160 */
88257360605f93 Pavel Shilovsky 2012-05-23 161 static __u64
88257360605f93 Pavel Shilovsky 2012-05-23 162
cifs_get_next_mid(struct TCP_Server_Info *server)
88257360605f93 Pavel Shilovsky 2012-05-23 163 {
88257360605f93 Pavel Shilovsky 2012-05-23 164 __u64 mid = 0;
88257360605f93 Pavel Shilovsky 2012-05-23 165 __u16 last_mid,
cur_mid;
46c2db2a208986 Steve French 2021-11-19 166 bool collision,
reconnect;
88257360605f93 Pavel Shilovsky 2012-05-23 167
88257360605f93 Pavel Shilovsky 2012-05-23 168
spin_lock(&GlobalMid_Lock);
88257360605f93 Pavel Shilovsky 2012-05-23 169
88257360605f93 Pavel Shilovsky 2012-05-23 170 /* mid is 16
bit only for CIFS/SMB */
88257360605f93 Pavel Shilovsky 2012-05-23 171 cur_mid =
(__u16)((server->CurrentMid) & 0xffff);
88257360605f93 Pavel Shilovsky 2012-05-23 172 /* we do not
want to loop forever */
88257360605f93 Pavel Shilovsky 2012-05-23 173 last_mid =
cur_mid;
88257360605f93 Pavel Shilovsky 2012-05-23 174 cur_mid++;
03d9a9fe3f3aec Roberto Bergantinos Corpas 2019-10-14 175 /* avoid 0xFFFF
MID */
03d9a9fe3f3aec Roberto Bergantinos Corpas 2019-10-14 176 if (cur_mid ==
0xffff)
03d9a9fe3f3aec Roberto Bergantinos Corpas 2019-10-14 177
cur_mid++;
88257360605f93 Pavel Shilovsky 2012-05-23 178
88257360605f93 Pavel Shilovsky 2012-05-23 179 /*
88257360605f93 Pavel Shilovsky 2012-05-23 180 * This nested
loop looks more expensive than it is.
88257360605f93 Pavel Shilovsky 2012-05-23 181 * In practice
the list of pending requests is short,
88257360605f93 Pavel Shilovsky 2012-05-23 182 * fewer than
50, and the mids are likely to be unique
88257360605f93 Pavel Shilovsky 2012-05-23 183 * on the first
pass through the loop unless some request
88257360605f93 Pavel Shilovsky 2012-05-23 184 * takes longer
than the 64 thousand requests before it
88257360605f93 Pavel Shilovsky 2012-05-23 185 * (and it
would also have to have been a request that
88257360605f93 Pavel Shilovsky 2012-05-23 186 * did not time
out).
88257360605f93 Pavel Shilovsky 2012-05-23 187 */
88257360605f93 Pavel Shilovsky 2012-05-23 188 while (cur_mid
!= last_mid) {
88257360605f93 Pavel Shilovsky 2012-05-23 189 struct
mid_q_entry *mid_entry;
88257360605f93 Pavel Shilovsky 2012-05-23 190
unsigned int num_mids;
88257360605f93 Pavel Shilovsky 2012-05-23 191
88257360605f93 Pavel Shilovsky 2012-05-23 192
collision = false;
88257360605f93 Pavel Shilovsky 2012-05-23 193 if
(cur_mid == 0)
88257360605f93 Pavel Shilovsky 2012-05-23 194
cur_mid++;
88257360605f93 Pavel Shilovsky 2012-05-23 195
88257360605f93 Pavel Shilovsky 2012-05-23 196
num_mids = 0;
88257360605f93 Pavel Shilovsky 2012-05-23 197
list_for_each_entry(mid_entry, &server->pending_mid_q, qhead) {
88257360605f93 Pavel Shilovsky 2012-05-23 198
++num_mids;
88257360605f93 Pavel Shilovsky 2012-05-23 199
if (mid_entry->mid == cur_mid &&
88257360605f93 Pavel Shilovsky 2012-05-23 200
mid_entry->mid_state == MID_REQUEST_SUBMITTED) {
88257360605f93 Pavel Shilovsky 2012-05-23 201
/* This mid is in use, try a different one */
88257360605f93 Pavel Shilovsky 2012-05-23 202
collision = true;
88257360605f93 Pavel Shilovsky 2012-05-23 203
break;
88257360605f93 Pavel Shilovsky 2012-05-23 204
}
88257360605f93 Pavel Shilovsky 2012-05-23 205 }
88257360605f93 Pavel Shilovsky 2012-05-23 206
88257360605f93 Pavel Shilovsky 2012-05-23 207 /*
88257360605f93 Pavel Shilovsky 2012-05-23 208 * if
we have more than 32k mids in the list, then something
88257360605f93 Pavel Shilovsky 2012-05-23 209 * is
very wrong. Possibly a local user is trying to DoS the
88257360605f93 Pavel Shilovsky 2012-05-23 210 * box
by issuing long-running calls and SIGKILL'ing them. If
88257360605f93 Pavel Shilovsky 2012-05-23 211 * we
get to 2^16 mids then we're in big trouble as this
88257360605f93 Pavel Shilovsky 2012-05-23 212 *
function could loop forever.
88257360605f93 Pavel Shilovsky 2012-05-23 213 *
88257360605f93 Pavel Shilovsky 2012-05-23 214 * Go
ahead and assign out the mid in this situation, but force
88257360605f93 Pavel Shilovsky 2012-05-23 215 * an
eventual reconnect to clean out the pending_mid_q.
88257360605f93 Pavel Shilovsky 2012-05-23 216 */
88257360605f93 Pavel Shilovsky 2012-05-23 217 if
(num_mids > 32768)
46c2db2a208986 Steve French 2021-11-19 218
reconnect = true;
88257360605f93 Pavel Shilovsky 2012-05-23 219
88257360605f93 Pavel Shilovsky 2012-05-23 220 if
(!collision) {
88257360605f93 Pavel Shilovsky 2012-05-23 221
mid = (__u64)cur_mid;
88257360605f93 Pavel Shilovsky 2012-05-23 222
server->CurrentMid = mid;
88257360605f93 Pavel Shilovsky 2012-05-23 223
break;
88257360605f93 Pavel Shilovsky 2012-05-23 224 }
88257360605f93 Pavel Shilovsky 2012-05-23 225
cur_mid++;
88257360605f93 Pavel Shilovsky 2012-05-23 226 }
88257360605f93 Pavel Shilovsky 2012-05-23 227
spin_unlock(&GlobalMid_Lock);
46c2db2a208986 Steve French 2021-11-19 228
46c2db2a208986 Steve French 2021-11-19 @229 if (reconnect) {
46c2db2a208986 Steve French 2021-11-19 230
spin_lock(&cifs_tcp_ses_lock);
46c2db2a208986 Steve French 2021-11-19 231
server->tcpStatus = CifsNeedReconnect;
46c2db2a208986 Steve French 2021-11-19 232
spin_unlock(&cifs_tcp_ses_lock);
46c2db2a208986 Steve French 2021-11-19 233 }
46c2db2a208986 Steve French 2021-11-19 234
88257360605f93 Pavel Shilovsky 2012-05-23 235 return mid;
88257360605f93 Pavel Shilovsky 2012-05-23 236 }
88257360605f93 Pavel Shilovsky 2012-05-23 237
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
