From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:56112 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1162761AbdD0OtE (ORCPT ); Thu, 27 Apr 2017 10:49:04 -0400 Subject: Patch "hostap: avoid uninitialized variable use in hfa384x_get_rid" has been added to the 3.18-stable tree To: arnd@arndb.de, gregkh@linuxfoundation.org, kvalo@codeaurora.org Cc: , From: Date: Thu, 27 Apr 2017 16:28:56 +0200 Message-ID: <14933033361818@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: 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 3.18-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-3.18 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >>From 48dc5fb3ba53b20418de8514700f63d88c5de3a3 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Thu, 28 Jan 2016 22:58:28 +0100 Subject: hostap: avoid uninitialized variable use in hfa384x_get_rid From: Arnd Bergmann 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. Signed-off-by: Arnd Bergmann Signed-off-by: Kalle Valo Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/hostap/hostap_hw.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c @@ -836,25 +836,30 @@ static int hfa384x_get_rid(struct net_de spin_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 arnd@arndb.de are queue-3.18/net-vxge-avoid-unused-function-warnings.patch queue-3.18/tty-nozomi-avoid-a-harmless-gcc-warning.patch queue-3.18/perf-avoid-horrible-stack-usage.patch queue-3.18/btrfs-fix-state-private-cast-on-32-bit-machines.patch queue-3.18/mm-init-fix-zone-boundary-creation.patch queue-3.18/iommu-vt-d-remove-unused-variable.patch queue-3.18/mips-msp71xx-remove-odd-locking-in-pci-config-space-access-code.patch queue-3.18/net-tulip-turn-compile-time-warning-into-dev_warn.patch queue-3.18/nfsd-work-around-a-gcc-5.1-warning.patch queue-3.18/fs-nfs-fix-new-compiler-warning-about-boolean-in-switch.patch queue-3.18/aic94xx-skip-reading-user-settings-if-flash-is-not-found.patch queue-3.18/mmc-sunxi-avoid-invalid-pointer-calculation.patch queue-3.18/acpi-power-avoid-maybe-uninitialized-warning.patch queue-3.18/gfs2-avoid-uninitialized-variable-warning.patch queue-3.18/gadgetfs-fix-uninitialized-variable-in-error-handling.patch queue-3.18/arm-8296-1-cache-l2x0-clean-up-aurora-cache-handling.patch queue-3.18/brcmfmac-avoid-gcc-5.1-warning.patch queue-3.18/kconfig-tinyconfig-provide-whole-choice-blocks-to-avoid-warnings.patch queue-3.18/net-ti-cpmac-fix-compiler-warning-due-to-type-confusion.patch queue-3.18/clk-at91-usb-fix-determine_rate-prototype-again.patch queue-3.18/mips-ralink-cosmetic-change-to-prom_init.patch queue-3.18/mips-fix-the-build-on-jz4740-after-removing-the-custom-gpio.h.patch queue-3.18/mips-asm-compiler-add-new-macros-to-set-isa-and-arch-asm-annotations.patch queue-3.18/misc-ioc4-simplify-wave-period-measurement-in-clock_calibrate.patch queue-3.18/hostap-avoid-uninitialized-variable-use-in-hfa384x_get_rid.patch queue-3.18/dm-bufio-hide-bogus-warning.patch queue-3.18/fix-signed-unsigned-pointer-warning.patch