Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wusb: replace memset by memzero_explicit

Memset on a local variable may be removed when it is called just before the
variable goes out of scope. Using memzero_explicit defeats this
optimization. A simplified version of the semantic patch that makes this
change is as follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
identifier x;
type T;
@@

{
... when any
T x[...];
... when any
when exists
- memset
+ memzero_explicit
(x,
-0,
...)
... when != x
when strict
}
// </smpl>

This change was suggested by Daniel Borkmann <dborkman@redhat.com>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Julia Lawall and committed by
Greg Kroah-Hartman
eb94ec7a b19e5f04

+5 -5
+1 -1
drivers/usb/wusbcore/dev-sysfs.c
··· 101 101 if (wusbhc == NULL) 102 102 return -ENODEV; 103 103 result = wusb_dev_4way_handshake(wusbhc, usb_dev->wusb_dev, &ck); 104 - memset(&ck, 0, sizeof(ck)); 104 + memzero_explicit(&ck, sizeof(ck)); 105 105 wusbhc_put(wusbhc); 106 106 return result < 0 ? result : size; 107 107 }
+4 -4
drivers/usb/wusbcore/security.c
··· 522 522 error_hs2: 523 523 error_hs1: 524 524 memset(hs, 0, 3*sizeof(hs[0])); 525 - memset(&keydvt_out, 0, sizeof(keydvt_out)); 526 - memset(&keydvt_in, 0, sizeof(keydvt_in)); 527 - memset(&ccm_n, 0, sizeof(ccm_n)); 528 - memset(mic, 0, sizeof(mic)); 525 + memzero_explicit(&keydvt_out, sizeof(keydvt_out)); 526 + memzero_explicit(&keydvt_in, sizeof(keydvt_in)); 527 + memzero_explicit(&ccm_n, sizeof(ccm_n)); 528 + memzero_explicit(mic, sizeof(mic)); 529 529 if (result < 0) 530 530 wusb_dev_set_encryption(usb_dev, 0); 531 531 error_dev_set_encryption: