Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2981294imu; Sun, 9 Dec 2018 14:13:11 -0800 (PST) X-Google-Smtp-Source: AFSGD/VwqvbKEwOmxVtj6ZehClqRamgF5XnmhH3XJ1MeMW/t05WTDfkuABb4MlnsK6f0GMni1Cdq X-Received: by 2002:a62:c28e:: with SMTP id w14mr10066361pfk.115.1544393591513; Sun, 09 Dec 2018 14:13:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544393591; cv=none; d=google.com; s=arc-20160816; b=tp2Uoe3gQYv/7jyPHfMBK5fj2KG7Jxgco0rGn7Ygw2AJW6BDbuCQT553PMCHAJ1SP3 iHpJpQ3pRf7kFJiml+600q/HyxSJm36lgPwbXKLSrw953QPKUKZdI+0XopfT3+KLACe0 FYTb2jpJf0x6KQ5aisQwXsth6WTSJSO8+NbuMro4lKnBSPED0ocgrCLPSNU2IYGxP+9V FCiby/hNV8hxmrV4hVdQSodx1byLN2zlSKd7ePxIwKZZwT/sgPpu2I6ggyrjBs7SuVMH Tvm7YGL/wrhXN9OOTu6qgiCNDSnIBuaD4r3E5dote8lD6rwgDtUK+KayYyP3JTUlCcqI /Z6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=QGOyXr4gfwUeqtuF/wTXH9QqZXiAHmCUmDn6cw9EMCI=; b=XtteMI5YiroceOyEgQWNC8uuWL5WAoBb8UWxNN/9nhp9olvMrwuR2FEHyKiTP7hOfv n/DmaI5mQBsbhRKDizMYSn0YOf7ESxYGmu0SF3UpGC2+x6XndOOYAdHvF5ckLSSXjt8L Mhdl7VBvDT3nzInX1mSH3r9YZhJoolNtkyjsWtfEySL3b356eJx2TpavDdzQ9TGghxhc GImL6M3uiER/FUHiRmsqi1/Aj4spcmvYwXoJyrdaVNZHgf9gJt38d1wg/Ho1BE29nhQo RHgrDiSNJlo/tNp5yYfD2EkxZu4/YKD5a85tk4NC0eqrMqX5ofW/NVgXnkr2UwXfS+u1 hM3w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 191si7918879pgd.228.2018.12.09.14.12.56; Sun, 09 Dec 2018 14:13:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728005AbeLIWK3 (ORCPT + 99 others); Sun, 9 Dec 2018 17:10:29 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:37552 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727125AbeLIWK2 (ORCPT ); Sun, 9 Dec 2018 17:10:28 -0500 Received: from pub.yeoldevic.com ([81.174.156.145] helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gW73L-0002ih-1Y; Sun, 09 Dec 2018 21:55:55 +0000 Received: from ben by deadeye with local (Exim 4.91) (envelope-from ) id 1gW72a-0003IT-Vz; Sun, 09 Dec 2018 21:55:08 +0000 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, "Mauro Carvalho Chehab" , "Akihiro Tsukada" Date: Sun, 09 Dec 2018 21:50:33 +0000 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) X-Patchwork-Hint: ignore Subject: [PATCH 3.16 079/328] media: dvb-usb-v2/gl861: ensure USB message buffers DMA'able In-Reply-To: X-SA-Exim-Connect-IP: 81.174.156.145 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.62-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Akihiro Tsukada commit 86f65c218123c4e36fd855fbbc38147ffaf29974 upstream. i2c message buf might be on stack. Signed-off-by: Akihiro Tsukada Signed-off-by: Mauro Carvalho Chehab [bwh: Backported to 3.16: adjust context] Signed-off-by: Ben Hutchings --- drivers/media/usb/dvb-usb-v2/gl861.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) --- a/drivers/media/usb/dvb-usb-v2/gl861.c +++ b/drivers/media/usb/dvb-usb-v2/gl861.c @@ -20,6 +20,8 @@ static int gl861_i2c_msg(struct dvb_usb_ u16 value = addr << (8 + 1); int wo = (rbuf == NULL || rlen == 0); /* write-only */ u8 req, type; + u8 *buf; + int ret; if (wo) { req = GL861_REQ_I2C_WRITE; @@ -42,11 +44,23 @@ static int gl861_i2c_msg(struct dvb_usb_ KBUILD_MODNAME, wlen); return -EINVAL; } - + buf = NULL; + if (rlen > 0) { + buf = kmalloc(rlen, GFP_KERNEL); + if (!buf) + return -ENOMEM; + } msleep(1); /* avoid I2C errors */ - return usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0), req, type, - value, index, rbuf, rlen, 2000); + ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0), req, type, + value, index, buf, rlen, 2000); + if (rlen > 0) { + if (ret > 0) + memcpy(rbuf, buf, rlen); + kfree(buf); + } + + return ret; } /* I2C */