From patchwork Mon Feb 18 11:37:44 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kumar Amit Mehta X-Patchwork-Id: 221267 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44ABF2C007E for ; Mon, 18 Feb 2013 22:40:12 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754105Ab3BRLjx (ORCPT ); Mon, 18 Feb 2013 06:39:53 -0500 Received: from mail-pa0-f44.google.com ([209.85.220.44]:53772 "EHLO mail-pa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751731Ab3BRLiP (ORCPT ); Mon, 18 Feb 2013 06:38:15 -0500 Received: by mail-pa0-f44.google.com with SMTP id kp1so2820498pab.17 for ; Mon, 18 Feb 2013 03:38:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer; bh=JKFRmiMtehq6RZGSqD7hk0n5mhT3uvrYqgGqEqp1/PQ=; b=iRNDq9eueNrrMzTtwp7qr3N4Am2DV3gT2qk4ukZbtNBJYBanZWcB6qSaZR/AMc/sjW 0/hl7zCx6x+jQ8O6WRG/Vk8HLyUUS/nAf0PINCGrSLZlMeHlQCcjpVEwowve0EHBlYmd gpVoEoX34w84yXguyuprrScjnlbQGNDS+77o3W6h2XZWHJFvDHO0xQzAXxV/2HUJkhjw t7tDaNAbIiGpfSuq44DVm7Imh9CLO04FpEbboUqzXIB2CUOnD8oNzWb5LyRbo/1PYI9M uNiR778JW45OChhVauG+30P5lZJJ78M9kwO7sTeYdTMg4R417Ki/tExFuygYpAMkzoy6 llRA== X-Received: by 10.68.190.231 with SMTP id gt7mr29098476pbc.117.1361187495134; Mon, 18 Feb 2013 03:38:15 -0800 (PST) Received: from localhost.localdomain ([115.248.49.121]) by mx.google.com with ESMTPS id d1sm67075326paz.17.2013.02.18.03.38.11 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 18 Feb 2013 03:38:14 -0800 (PST) From: Kumar Amit Mehta To: linville@tuxdriver.com Cc: sarah.a.sharp@linux.intel.com, dan.carpenter@oracle.com, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: [PATCH] net: wireless: orinoco: orinoco_usb.c: fix DMA buffers on stack Date: Mon, 18 Feb 2013 03:37:44 -0800 Message-Id: <1361187464-24174-1-git-send-email-gmate.amit@gmail.com> X-Mailer: git-send-email 1.7.9.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch fixes an instance of DMA buffer on stack(being passed to usb_control_msg) for the wireless USB version of the Agere Orinoco card driver. It also fixes the missing audit for the return value of firmware download routine. Found using smatch. Signed-off-by: Kumar Amit Mehta --- drivers/net/wireless/orinoco/orinoco_usb.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/orinoco/orinoco_usb.c b/drivers/net/wireless/orinoco/orinoco_usb.c index 01624dc..7744f42 100644 --- a/drivers/net/wireless/orinoco/orinoco_usb.c +++ b/drivers/net/wireless/orinoco/orinoco_usb.c @@ -804,10 +804,15 @@ static inline int ezusb_8051_cpucs(struct ezusb_priv *upriv, int reset) static int ezusb_firmware_download(struct ezusb_priv *upriv, struct ez_usb_fw *fw) { - u8 fw_buffer[FW_BUF_SIZE]; + u8 *fw_buffer; int retval, addr; int variant_offset; + fw_buffer = kmalloc(FW_BUF_SIZE, GFP_KERNEL); + if (!fw_buffer) { + printk(KERN_ERR PFX "Out of memory for firmware buffer.\n"); + return -ENOMEM; + } /* * This byte is 1 and should be replaced with 0. The offset is * 0x10AD in version 0.0.6. The byte in question should follow @@ -859,6 +864,7 @@ static int ezusb_firmware_download(struct ezusb_priv *upriv, printk(KERN_ERR PFX "Firmware download failed, error %d\n", retval); exit: + kfree(fw_buffer); return retval; } @@ -1681,7 +1687,8 @@ static int ezusb_probe(struct usb_interface *interface, firmware.code = fw_entry->data; } if (firmware.size && firmware.code) { - ezusb_firmware_download(upriv, &firmware); + if (ezusb_firmware_download(upriv, &firmware)) + goto error; } else { err("No firmware to download"); goto error;