Patch "hostap: avoid uninitialized variable use in hfa384x_get_rid" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
hostap: avoid uninitialized variable use in hfa384x_get_rid
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
hostap-avoid-uninitialized-variable-use-in-hfa384x_get_rid.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
48dc5fb3ba53b20418de8514700f63d88c5de3a3Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <[email protected]>
Date: Thu, 28 Jan 2016 22:58:28 +0100
Subject: hostap: avoid uninitialized variable use in hfa384x_get_rid
From: Arnd Bergmann <[email protected]>
commit 48dc5fb3ba53b20418de8514700f63d88c5de3a3 upstream.
The driver reads a value from hfa384x_from_bap(), which may fail, and then assigns the value to a local variable. gcc detects that in in the failure case, the 'rlen' variable now contains uninitialized data:
In file included from ../drivers/net/wireless/intersil/hostap/hostap_pci.c:220:0:drivers/net/wireless/intersil/hostap/hostap_hw.c: In function 'hfa384x_get_rid':drivers/net/wireless/intersil/hostap/hostap_hw.c:842:5: warning: 'rec' may be used uninitialized in this function [-Wmaybe-uninitialized]
if (le16_to_cpu(rec.len) == 0) {
This restructures the function as suggested by Russell King, to make it more readable and get more reliable error handling, by handling each failure mode using a goto.
--- drivers/net/wireless/hostap/hostap_hw.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
drivers/net/wireless/hostap/hostap_hw.c +10 -5
@@ -836,25 +836,30 @@ static int hfa384x_get_rid(struct net_despin_lock_bh (&local->baplock); res =hfa384x_setup_bap (dev,BAP0 , rid,0 ); -if (!res) - res =hfa384x_from_bap (dev,BAP0 , &rec,sizeof (rec)); +if (res) + goto unlock; + + res =hfa384x_from_bap (dev,BAP0 , &rec,sizeof (rec)); +if (res) + goto unlock;if (le16_to_cpu (rec.len) ==0 ) {/* RID not available */ res = -ENODATA ; + goto unlock; } rlen = (le16_to_cpu (rec.len) -1 ) *2 ; -if (!res && exact_len && rlen != len) { +if (exact_len && rlen != len) {printk (KERN_DEBUG "%s: hfa384x_get_rid - RID len mismatch: " "rid=0x%04x, len=%d (expected %d)\n" , dev->name, rid, rlen, len); res = -ENODATA ; } -if (!res) - res =hfa384x_from_bap (dev,BAP0 , buf, len); + res =hfa384x_from_bap (dev,BAP0 , buf, len); +unlock:spin_unlock_bh (&local->baplock);mutex_unlock (&local->rid_bap_mtx);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/tty-nozomi-avoid-a-harmless-gcc-warning.patch queue-4.4/gfs2-avoid-uninitialized-variable-warning.patch queue-4.4/hostap-avoid-uninitialized-variable-use-in-hfa384x_get_rid.patch