From patchwork Wed Apr 2 03:59:55 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: fariyaf@gmail.com X-Patchwork-Id: 3926561 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id B2A3BBF540 for ; Wed, 2 Apr 2014 04:00:37 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id DA86B2024D for ; Wed, 2 Apr 2014 04:00:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1883A20240 for ; Wed, 2 Apr 2014 04:00:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750744AbaDBEAd (ORCPT ); Wed, 2 Apr 2014 00:00:33 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:63534 "EHLO mail-pb0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751928AbaDBEAZ (ORCPT ); Wed, 2 Apr 2014 00:00:25 -0400 Received: by mail-pb0-f45.google.com with SMTP id uo5so10845128pbc.18 for ; Tue, 01 Apr 2014 21:00:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=a1P/JB2fqqdn+VAGg8b/yoy1w7KgJcyYK8c3Hc9wjtI=; b=vI9/4CDHmZk6uWWURPu80skdXLUE1vyqmuHkhGEVA5b10Y2ZdqvG2Xu0ijllGuFARn utavk0fOXqlhmKQC5tidmLFIdUrxyMugqNnEBDRk2H1tbCqusIAfNCN19jhPHEtTYxco DTD9VjzORQACxb2tjGKo8FTRj4VMe+15BAcb/7t7pjLA24aVYZP3I65gK9wOY428UPmK EiAeX8tqAdyjshMoJmWojb44cxhqcEIYKw9zzSYhJCDeGisGZnXmwlw0sz8lvD1hWW3c FlrqtxAxED12juEHYK3RuqLpeFxC+CeFwzASwgRfTvtBlvIlPPBAWPtvmvkJjmWV6TV5 68YQ== X-Received: by 10.68.7.66 with SMTP id h2mr34950154pba.91.1396411225622; Tue, 01 Apr 2014 21:00:25 -0700 (PDT) Received: from localhost.localdomain ([27.6.128.194]) by mx.google.com with ESMTPSA id pq3sm1161795pbb.57.2014.04.01.21.00.23 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 01 Apr 2014 21:00:24 -0700 (PDT) From: Fariya Fatima To: linux-wireless@vger.kernel.org Cc: Fariya Fatima Subject: [PATCH 6/6] rsi: Fixed issue relating to doing dma on stack error. Date: Wed, 2 Apr 2014 09:29:55 +0530 Message-Id: <1396411195-5051-7-git-send-email-fariyaf@gmail.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1396411195-5051-1-git-send-email-fariyaf@gmail.com> References: <1396411195-5051-1-git-send-email-fariyaf@gmail.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Fariya Fatima Signed-off-by: Fariya Fatima --- drivers/net/wireless/rsi/rsi_91x_usb.c | 26 +++++++++++++++++++------- 1 files changed, 19 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/rsi/rsi_91x_usb.c b/drivers/net/wireless/rsi/rsi_91x_usb.c index bb1bf96..4c46e56 100644 --- a/drivers/net/wireless/rsi/rsi_91x_usb.c +++ b/drivers/net/wireless/rsi/rsi_91x_usb.c @@ -154,24 +154,30 @@ static int rsi_usb_reg_read(struct usb_device *usbdev, u16 *value, u16 len) { - u8 temp_buf[4]; - int status = 0; + u8 *buf; + int status = -ENOMEM; + + buf = kmalloc(0x04, GFP_KERNEL); + if (!buf) + return status; status = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0), USB_VENDOR_REGISTER_READ, USB_TYPE_VENDOR, ((reg & 0xffff0000) >> 16), (reg & 0xffff), - (void *)temp_buf, + (void *)buf, len, HZ * 5); - *value = (temp_buf[0] | (temp_buf[1] << 8)); + *value = (buf[0] | (buf[1] << 8)); if (status < 0) { rsi_dbg(ERR_ZONE, "%s: Reg read failed with error code :%d\n", __func__, status); } + kfree(buf); + return status; } @@ -190,8 +196,12 @@ static int rsi_usb_reg_write(struct usb_device *usbdev, u16 value, u16 len) { - u8 usb_reg_buf[4]; - int status = 0; + u8 *usb_reg_buf; + int status = -ENOMEM; + + usb_reg_buf = kmalloc(0x04, GFP_KERNEL); + if (!usb_reg_buf) + return status; usb_reg_buf[0] = (value & 0x00ff); usb_reg_buf[1] = (value & 0xff00) >> 8; @@ -212,6 +222,8 @@ static int rsi_usb_reg_write(struct usb_device *usbdev, "%s: Reg write failed with error code :%d\n", __func__, status); } + kfree(usb_reg_buf); + return status; } @@ -286,7 +298,7 @@ int rsi_usb_write_register_multiple(struct rsi_hw *adapter, return -ENOMEM; while (count) { - transfer = min_t(int, count, 4096); + transfer = (u8)(min_t(u32, count, 4096)); memcpy(buf, data, transfer); status = usb_control_msg(dev->usbdev, usb_sndctrlpipe(dev->usbdev, 0),