From patchwork Tue Aug 7 07:14:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 143563 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4156593ljj; Tue, 7 Aug 2018 00:13:28 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfk4vzyDFkoIlIipW11LJR0V1itzopcckAtJgkT3KQKj7KRjzAzEdIoRXXBeI/Oo5VloUgK X-Received: by 2002:a63:f953:: with SMTP id q19-v6mr17018378pgk.292.1533626008478; Tue, 07 Aug 2018 00:13:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533626008; cv=none; d=google.com; s=arc-20160816; b=PtqdagQRJDS+ZbVG4g4IGjmqcEBkMK6VCRpxu8vK1yFWbOQ1+WYiZmUApCkmGots2H +NLA72fhPoUXOey6ogN1YyQ9mJh/FJXKj40VMIBqOHl7tCsk3K8NxBvm/5QCqVZgsWiG btKSd7/Y0UD+eZZqJ1id03zUYPAgFUt13rWCnpDN9C6ta1JtW7YJiuC/p5sqV4T+VBBa ViwhJUGZUmOYSq6OMlRrDLqzn7EHxGVdFIT1mXq0p58tgJsuf+/fiETuTkGx+38xwVpl 2IbnQ3MptSswCcTQo+wdQMpwQYFFLh3omi7ElLuOR+6LgOY0wEOnJwojRn4yNL2+Qp3j gQ0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=xltT5TAoujnPv7v6tjWXB8ywHjR+DA+W/BmUvJoRLG8=; b=X50FydjEqZczxsflPbEQK2uDARmPZy7juIspVwL2KZ8rTGtCU8cJp2LTDpawS25pVt HKN8obkwpg16xJcHmpUlkD98SrPOtwcEhIMlz3NNAM35iLAOoEbyKb1EGukRfrmZpynf ldZWDpA9x78PF/hbQ25QyYVi5xY1nSIWzDN9j5iJXZ8EiPV11qEZ2M/dPvEk7Wpd2uwx 65MV/18DcJL1djMDNRGO3ZXyDkD4yLEAVnksL4wTsTEMggubGM832bJWtXp98uFZXR7v gS4rN+pnRFyjW+UWESftcHUrE1fCQhQBIevgg0t9fwP0//BSwRfYVdQRHtUOIBkLT2kE cakA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=XcMpjyts; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q19-v6si560444pll.370.2018.08.07.00.13.28; Tue, 07 Aug 2018 00:13:28 -0700 (PDT) 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; dkim=pass header.i=@linaro.org header.s=google header.b=XcMpjyts; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388556AbeHGJ0W (ORCPT + 31 others); Tue, 7 Aug 2018 05:26:22 -0400 Received: from mail-pf1-f194.google.com ([209.85.210.194]:42518 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732772AbeHGJ0W (ORCPT ); Tue, 7 Aug 2018 05:26:22 -0400 Received: by mail-pf1-f194.google.com with SMTP id l9-v6so8105113pff.9 for ; Tue, 07 Aug 2018 00:13:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=xltT5TAoujnPv7v6tjWXB8ywHjR+DA+W/BmUvJoRLG8=; b=XcMpjytswNVhZH34hRITmXk6+jgo1crh8uXcwaqNwl9RGVkVC/jsKHkmZR384VTbRb ljaMc4lwc+bq6AgkHoV2uLENWYwC+7RfJqfSntEVKo0Mq98Yn09324EzEGCHewdJ3ipa Fm9s5LfVQEzGE5FXu3CPJ0xAITCOkPhG5a8Cg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=xltT5TAoujnPv7v6tjWXB8ywHjR+DA+W/BmUvJoRLG8=; b=dyKMHRL6rgIx+KRQbWmapY4Y1IZy2qD/mdK+TjQkEakcRFeunQrppsCmKd5kU6kMa+ ePIq9MQZiJGFdyy/ZfogSauM358AO6sEWGJKHxJBaTWCOln4/PwpkHCVWIBy63+B8tLu HYi6sTJPUIEjJYaFU1BDcrrYDFmi5yF3XscUOd0WUvFzggk2SQG/Wpd0Z5BFmU5DZSal jVHMBMUv8vo4gunRMLqZjh29orFO/M1JqkJBNL5ogNkRXONgMojwD12fAzQ58yZhNeLv yg3d6G1DR5JY8GCsASMjc1uj97v2jcfjAdA4MgDwgU1mz8wpdgweatpOSxzb/EY/A3Rm DQJQ== X-Gm-Message-State: AOUpUlGVa3Jf/0Emj6IG73qAJpKUpmxNhKhM5olMGOBlIYI4aCxjhrFg wPP6FxayReYR9J8whwhDffcx9CwnPbA= X-Received: by 2002:a62:51c6:: with SMTP id f189-v6mr10435412pfb.7.1533626004766; Tue, 07 Aug 2018 00:13:24 -0700 (PDT) Received: from localhost.localdomain (104-188-17-28.lightspeed.sndgca.sbcglobal.net. [104.188.17.28]) by smtp.gmail.com with ESMTPSA id q25-v6sm1735898pfk.96.2018.08.07.00.13.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Aug 2018 00:13:24 -0700 (PDT) From: Bjorn Andersson To: Ohad Ben-Cohen , Bjorn Andersson Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] rpmsg: char: Migrate to iter versions of read and write Date: Tue, 7 Aug 2018 00:14:24 -0700 Message-Id: <20180807071424.3236-1-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.18.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In order to be able to use the aio interface for writing to a rpmsg_char the write_iter function must be implemented, so migrate to iter version for read and write functions. Regular read and write uses the iter methods if present and is as such unaffected. Signed-off-by: Bjorn Andersson --- drivers/rpmsg/rpmsg_char.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) -- 2.18.0 diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c index a76b963a7e50..eea5ebbb5119 100644 --- a/drivers/rpmsg/rpmsg_char.c +++ b/drivers/rpmsg/rpmsg_char.c @@ -167,9 +167,9 @@ static int rpmsg_eptdev_release(struct inode *inode, struct file *filp) return 0; } -static ssize_t rpmsg_eptdev_read(struct file *filp, char __user *buf, - size_t len, loff_t *f_pos) +static ssize_t rpmsg_eptdev_read_iter(struct kiocb *iocb, struct iov_iter *to) { + struct file *filp = iocb->ki_filp; struct rpmsg_eptdev *eptdev = filp->private_data; unsigned long flags; struct sk_buff *skb; @@ -205,8 +205,8 @@ static ssize_t rpmsg_eptdev_read(struct file *filp, char __user *buf, if (!skb) return -EFAULT; - use = min_t(size_t, len, skb->len); - if (copy_to_user(buf, skb->data, use)) + use = min_t(size_t, iov_iter_count(to), skb->len); + if (copy_to_iter(skb->data, use, to) != use) use = -EFAULT; kfree_skb(skb); @@ -214,16 +214,21 @@ static ssize_t rpmsg_eptdev_read(struct file *filp, char __user *buf, return use; } -static ssize_t rpmsg_eptdev_write(struct file *filp, const char __user *buf, - size_t len, loff_t *f_pos) +static ssize_t rpmsg_eptdev_write_iter(struct kiocb *iocb, + struct iov_iter *from) { + struct file *filp = iocb->ki_filp; struct rpmsg_eptdev *eptdev = filp->private_data; + size_t len = iov_iter_count(from); void *kbuf; int ret; - kbuf = memdup_user(buf, len); - if (IS_ERR(kbuf)) - return PTR_ERR(kbuf); + kbuf = kzalloc(len, GFP_KERNEL); + if (!kbuf) + return -ENOMEM; + + if (!copy_from_iter_full(kbuf, len, from)) + return -EFAULT; if (mutex_lock_interruptible(&eptdev->ept_lock)) { ret = -ERESTARTSYS; @@ -281,8 +286,8 @@ static const struct file_operations rpmsg_eptdev_fops = { .owner = THIS_MODULE, .open = rpmsg_eptdev_open, .release = rpmsg_eptdev_release, - .read = rpmsg_eptdev_read, - .write = rpmsg_eptdev_write, + .read_iter = rpmsg_eptdev_read_iter, + .write_iter = rpmsg_eptdev_write_iter, .poll = rpmsg_eptdev_poll, .unlocked_ioctl = rpmsg_eptdev_ioctl, .compat_ioctl = rpmsg_eptdev_ioctl,