From nobody Fri Dec 19 17:00:20 2025 Received: from mail-io1-f45.google.com (mail-io1-f45.google.com [209.85.166.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D55E8564B for ; Thu, 11 Apr 2024 15:33:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849618; cv=none; b=hQLJYoabU02Q6J08WMPMIf+wWJK+7DA4Z+ppt7rNq2qQtSUQXblsas5k4WQoNPqW0YjVXv9jTP0Z4TzuC0cfVQ4G/IOfdx/fWGEXTSskVEJy3bsjIC1MsL6U+zuuZeoR3N7WC4CxVwwTw5fTiLWCdUT8oKdGloHALp4n63F/p/E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849618; c=relaxed/simple; bh=2Aknt2fNfmtfzyfGpCI3l2Vhz3PcTOKFW0stXt6FNXQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HB/7lNt9ww4l6aZz88hn+Y6GEyVoBtEoHhm3wvw2Hw5FcxpmlDpZPD9hEddSeJbDCPohjsBNVXl0AybCPKWqc1wp0C3QRPFXr1rwbnGNqgthM0xTo0H8A0o6VwXfZFTObUMtS0lntrz8oSXSV/trQHKtOOXWMWMDntOuqZikezQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk; spf=pass smtp.mailfrom=kernel.dk; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b=DZSmQ56/; arc=none smtp.client-ip=209.85.166.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kernel.dk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b="DZSmQ56/" Received: by mail-io1-f45.google.com with SMTP id ca18e2360f4ac-7d5ed700c2dso16116439f.0 for ; Thu, 11 Apr 2024 08:33:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1712849615; x=1713454415; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xp3aRaK4n7JQXsntmXRZLUnrNQ/JzYe0/RqCvU+dnYw=; b=DZSmQ56/iL0VGNCUbFx1cs8P/5frWn1JkaFKuygvBtYhe4YfksjA2PL8rw1ibZaIOS KGNB9u+0rX8HgZfNyOmiPLyCP2lHXbfdYbLk59C7Gaad5lMUOuuMTjLBuWQPlEELwzVq ++SG8SHkzdMQsgxikW+y9eCJuPkGoXBr93c7Xl4oGPerKat0h6yU+YyuravKFgXPcJcD 8j8lMuayYBXjNuwSrAeUv3Z/YrC2cTzX+CcgDQhnx6OT08ne+h9+dSeGCLJz0CmDGC7h AA38k6QCNfeCYbl0gLn5Ug4+rtWHdsa84LlDl/kCVCH/5MMWboVJDw5QYhk5u9leGwUA 2Mqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712849615; x=1713454415; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xp3aRaK4n7JQXsntmXRZLUnrNQ/JzYe0/RqCvU+dnYw=; b=Z87Qjuwca14VecO+R85QOWxUag1M+KUhq4WpiVO/+x4Fsg/hc/RtowhjAH+Y8yljMc F8GYF6W9sYpaw2NXsBvkhgfA21n8BiGAa6cC9t9/CuAtwGN6CHLvU5Am4dEqoV9TX7FT tphx1zwnvFL9c9IulZsWWPsLKvRpl/AQ1sn1x7OSaNVGbCTxjz4vQ7gxHpgvJRdkH+cS qYLzivH9vyqrECNIx3219NhVDkbkQWV3htnX8Rh843V+MEXztTsJEdXyqVzqxYXBh1QS gjKcGoAUaaWc3TDM4iQwEkbJd0ZrHU5lDYYCrUn85VkgfBRot767Ufv4jzkkee/3UN+W agZw== X-Gm-Message-State: AOJu0YzeayJBR8AVe9tMbym3uOBvQp52UhsKX2WfOCEbclnETFfmSzxy rUntqM1t/0ngk51tv9MX1emCAdj6u4pIP3KVt71Q/a1Z+hMxrdboBblN2O9j6f7AcnGP6v69XLa c X-Google-Smtp-Source: AGHT+IFnhyUWht8mSxNssgi4UZlSmb/sZOn59BdTXEp/NBO46sQtt/hUJa/VkmagKdUGt7vfJVRqJQ== X-Received: by 2002:a05:6602:38d:b0:7d6:513b:254 with SMTP id f13-20020a056602038d00b007d6513b0254mr174825iov.2.1712849614653; Thu, 11 Apr 2024 08:33:34 -0700 (PDT) Received: from localhost.localdomain ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id jc25-20020a056638891900b0047f14b7f6c0sm457056jab.5.2024.04.11.08.33.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Apr 2024 08:33:33 -0700 (PDT) From: Jens Axboe To: linux-kernel@vger.kernel.org Cc: Jens Axboe Subject: [PATCH 066/437] ASoC: SOF: Core: convert to read/write iterators Date: Thu, 11 Apr 2024 09:13:26 -0600 Message-ID: <20240411153126.16201-67-axboe@kernel.dk> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240411153126.16201-1-axboe@kernel.dk> References: <20240411153126.16201-1-axboe@kernel.dk> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Jens Axboe --- sound/soc/sof/debug.c | 34 +++++----- sound/soc/sof/sof-client-ipc-flood-test.c | 19 +++--- .../soc/sof/sof-client-ipc-kernel-injector.c | 15 +++-- sound/soc/sof/sof-client-ipc-msg-injector.c | 67 +++++++++---------- sound/soc/sof/sof-client-probes.c | 31 +++++---- 5 files changed, 85 insertions(+), 81 deletions(-) diff --git a/sound/soc/sof/debug.c b/sound/soc/sof/debug.c index 7c8aafca8fde..c735af9a5f23 100644 --- a/sound/soc/sof/debug.c +++ b/sound/soc/sof/debug.c @@ -19,9 +19,9 @@ #include "sof-priv.h" #include "ops.h" =20 -static ssize_t sof_dfsentry_write(struct file *file, const char __user *bu= ffer, - size_t count, loff_t *ppos) +static ssize_t sof_dfsentry_write(struct kiocb *iocb, struct iov_iter *fro= m) { + size_t count =3D iov_iter_count(from); size_t size; char *string; int ret; @@ -30,19 +30,19 @@ static ssize_t sof_dfsentry_write(struct file *file, co= nst char __user *buffer, if (!string) return -ENOMEM; =20 - size =3D simple_write_to_buffer(string, count, ppos, buffer, count); + size =3D simple_copy_from_iter(string, &iocb->ki_pos, count, from); ret =3D size; =20 kfree(string); return ret; } =20 -static ssize_t sof_dfsentry_read(struct file *file, char __user *buffer, - size_t count, loff_t *ppos) +static ssize_t sof_dfsentry_read(struct kiocb *iocb, struct iov_iter *to) { - struct snd_sof_dfsentry *dfse =3D file->private_data; + struct snd_sof_dfsentry *dfse =3D iocb->ki_filp->private_data; struct snd_sof_dev *sdev =3D dfse->sdev; - loff_t pos =3D *ppos; + size_t count =3D iov_iter_count(to); + loff_t pos =3D iocb->ki_pos; size_t size_ret; int skip =3D 0; int size; @@ -66,8 +66,8 @@ static ssize_t sof_dfsentry_read(struct file *file, char = __user *buffer, size =3D ALIGN(count, 4); =20 /* if start position is unaligned, read extra u32 */ - if (unlikely(pos !=3D *ppos)) { - skip =3D *ppos - pos; + if (unlikely(pos !=3D iocb->ki_pos)) { + skip =3D iocb->ki_pos - pos; if (pos + size + 4 < dfse->size) size +=3D 4; } @@ -109,7 +109,7 @@ static ssize_t sof_dfsentry_read(struct file *file, cha= r __user *buffer, } =20 /* copy to userspace */ - size_ret =3D copy_to_user(buffer, buf + skip, count); + size_ret =3D !copy_to_iter_full(buf + skip, count, to); =20 kfree(buf); =20 @@ -117,16 +117,15 @@ static ssize_t sof_dfsentry_read(struct file *file, c= har __user *buffer, if (size_ret) return -EFAULT; =20 - *ppos =3D pos + count; - + iocb->ki_pos =3D pos + count; return count; } =20 static const struct file_operations sof_dfs_fops =3D { .open =3D simple_open, - .read =3D sof_dfsentry_read, + .read_iter =3D sof_dfsentry_read, .llseek =3D default_llseek, - .write =3D sof_dfsentry_write, + .write_iter =3D sof_dfsentry_write, }; =20 /* create FS entry for debug files that can expose DSP memories, registers= */ @@ -284,6 +283,11 @@ static ssize_t memory_info_read(struct file *file, cha= r __user *to, size_t count return simple_read_from_buffer(to, count, ppos, dfse->buf, dfse->buf_data= _size); } =20 +static ssize_t memory_info_read_iter(struct kiocb *iocb, struct iov_iter *= to) +{ + return vfs_read_iter(iocb, to, memory_info_read); +} + static int memory_info_open(struct inode *inode, struct file *file) { struct snd_sof_dfsentry *dfse =3D inode->i_private; @@ -304,7 +308,7 @@ static int memory_info_open(struct inode *inode, struct= file *file) =20 static const struct file_operations memory_info_fops =3D { .open =3D memory_info_open, - .read =3D memory_info_read, + .read_iter =3D memory_info_read_iter, .llseek =3D default_llseek, }; =20 diff --git a/sound/soc/sof/sof-client-ipc-flood-test.c b/sound/soc/sof/sof-= client-ipc-flood-test.c index c0d6723aed59..6e53d60975c9 100644 --- a/sound/soc/sof/sof-client-ipc-flood-test.c +++ b/sound/soc/sof/sof-client-ipc-flood-test.c @@ -238,29 +238,30 @@ static ssize_t sof_ipc_flood_dfs_write(struct file *f= ile, const char __user *buf kfree(string); return ret; } +FOPS_WRITE_ITER_HELPER(sof_ipc_flood_dfs_write); =20 /* return the result of the last IPC flood test */ -static ssize_t sof_ipc_flood_dfs_read(struct file *file, char __user *buff= er, - size_t count, loff_t *ppos) +static ssize_t sof_ipc_flood_dfs_read(struct kiocb *iocb, struct iov_iter = *to) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_ipc_flood_priv *priv =3D cdev->data; + size_t count =3D iov_iter_count(to); size_t size_ret; =20 struct dentry *dentry; =20 - dentry =3D file->f_path.dentry; + dentry =3D iocb->ki_filp->f_path.dentry; if (!strcmp(dentry->d_name.name, DEBUGFS_IPC_FLOOD_COUNT) || !strcmp(dentry->d_name.name, DEBUGFS_IPC_FLOOD_DURATION)) { - if (*ppos) + if (iocb->ki_pos) return 0; =20 count =3D min_t(size_t, count, strlen(priv->buf)); - size_ret =3D copy_to_user(buffer, priv->buf, count); + size_ret =3D !copy_to_iter_full(priv->buf, count, to); if (size_ret) return -EFAULT; =20 - *ppos +=3D count; + iocb->ki_pos +=3D count; return count; } return count; @@ -275,9 +276,9 @@ static int sof_ipc_flood_dfs_release(struct inode *inod= e, struct file *file) =20 static const struct file_operations sof_ipc_flood_fops =3D { .open =3D sof_ipc_flood_dfs_open, - .read =3D sof_ipc_flood_dfs_read, + .read_iter =3D sof_ipc_flood_dfs_read, .llseek =3D default_llseek, - .write =3D sof_ipc_flood_dfs_write, + .write_iter =3D sof_ipc_flood_dfs_write_iter, .release =3D sof_ipc_flood_dfs_release, =20 .owner =3D THIS_MODULE, diff --git a/sound/soc/sof/sof-client-ipc-kernel-injector.c b/sound/soc/sof= /sof-client-ipc-kernel-injector.c index ad0ed2d570a9..77f5d73a126e 100644 --- a/sound/soc/sof/sof-client-ipc-kernel-injector.c +++ b/sound/soc/sof/sof-client-ipc-kernel-injector.c @@ -37,21 +37,22 @@ static int sof_msg_inject_dfs_open(struct inode *inode,= struct file *file) return ret; } =20 -static ssize_t sof_kernel_msg_inject_dfs_write(struct file *file, const ch= ar __user *buffer, - size_t count, loff_t *ppos) +static ssize_t sof_kernel_msg_inject_dfs_write(struct kiocb *iocb, + struct iov_iter *from) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_msg_inject_priv *priv =3D cdev->data; struct sof_ipc_cmd_hdr *hdr =3D priv->kernel_buffer; struct device *dev =3D &cdev->auxdev.dev; + size_t count =3D iov_iter_count(from); ssize_t size; int ret; =20 - if (*ppos) + if (iocb->ki_pos) return 0; =20 - size =3D simple_write_to_buffer(priv->kernel_buffer, priv->max_msg_size, - ppos, buffer, count); + size =3D simple_copy_from_iter(priv->kernel_buffer, &iocb->ki_pos, + priv->max_msg_size, from); if (size < 0) return size; if (size !=3D count) @@ -82,7 +83,7 @@ static int sof_msg_inject_dfs_release(struct inode *inode= , struct file *file) =20 static const struct file_operations sof_kernel_msg_inject_fops =3D { .open =3D sof_msg_inject_dfs_open, - .write =3D sof_kernel_msg_inject_dfs_write, + .write_iter =3D sof_kernel_msg_inject_dfs_write, .release =3D sof_msg_inject_dfs_release, =20 .owner =3D THIS_MODULE, diff --git a/sound/soc/sof/sof-client-ipc-msg-injector.c b/sound/soc/sof/so= f-client-ipc-msg-injector.c index e249d3a9afb5..e13f867b4e1e 100644 --- a/sound/soc/sof/sof-client-ipc-msg-injector.c +++ b/sound/soc/sof/sof-client-ipc-msg-injector.c @@ -49,37 +49,37 @@ static int sof_msg_inject_dfs_open(struct inode *inode,= struct file *file) return ret; } =20 -static ssize_t sof_msg_inject_dfs_read(struct file *file, char __user *buf= fer, - size_t count, loff_t *ppos) +static ssize_t sof_msg_inject_dfs_read(struct kiocb *iocb, struct iov_iter= *to) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_msg_inject_priv *priv =3D cdev->data; struct sof_ipc_reply *rhdr =3D priv->rx_buffer; + size_t count =3D iov_iter_count(to); =20 - if (!rhdr->hdr.size || !count || *ppos) + if (!rhdr->hdr.size || !count || iocb->ki_pos) return 0; =20 if (count > rhdr->hdr.size) count =3D rhdr->hdr.size; =20 - if (copy_to_user(buffer, priv->rx_buffer, count)) + if (!copy_to_iter_full(priv->rx_buffer, count, to)) return -EFAULT; =20 - *ppos +=3D count; + iocb->ki_pos +=3D count; return count; } =20 -static ssize_t sof_msg_inject_ipc4_dfs_read(struct file *file, - char __user *buffer, - size_t count, loff_t *ppos) +static ssize_t sof_msg_inject_ipc4_dfs_read(struct kiocb *iocb, + struct iov_iter *to) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_msg_inject_priv *priv =3D cdev->data; struct sof_ipc4_msg *ipc4_msg =3D priv->rx_buffer; size_t header_size =3D sizeof(ipc4_msg->header_u64); + size_t count =3D iov_iter_count(to); size_t remaining; =20 - if (!ipc4_msg->header_u64 || !count || *ppos) + if (!ipc4_msg->header_u64 || !count || iocb->ki_pos) return 0; =20 /* we need space for the header at minimum (u64) */ @@ -99,10 +99,10 @@ static ssize_t sof_msg_inject_ipc4_dfs_read(struct file= *file, remaining =3D count; =20 /* copy the header first */ - if (copy_to_user(buffer, &ipc4_msg->header_u64, header_size)) + if (!copy_to_iter_full(&ipc4_msg->header_u64, header_size, to)) return -EFAULT; =20 - *ppos +=3D header_size; + iocb->ki_pos +=3D header_size; remaining -=3D header_size; =20 if (!remaining) @@ -112,10 +112,10 @@ static ssize_t sof_msg_inject_ipc4_dfs_read(struct fi= le *file, remaining =3D ipc4_msg->data_size; =20 /* Copy the payload */ - if (copy_to_user(buffer + *ppos, ipc4_msg->data_ptr, remaining)) + if (!copy_to_iter_full(ipc4_msg->data_ptr, remaining, to)) return -EFAULT; =20 - *ppos +=3D remaining; + iocb->ki_pos +=3D remaining; return count; } =20 @@ -145,19 +145,19 @@ static int sof_msg_inject_send_message(struct sof_cli= ent_dev *cdev) return ret; } =20 -static ssize_t sof_msg_inject_dfs_write(struct file *file, const char __us= er *buffer, - size_t count, loff_t *ppos) +static ssize_t sof_msg_inject_dfs_write(struct kiocb *iocb, struct iov_ite= r *from) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_msg_inject_priv *priv =3D cdev->data; + size_t count =3D iov_iter_count(from); ssize_t size; int ret; =20 - if (*ppos) + if (iocb->ki_pos) return 0; =20 - size =3D simple_write_to_buffer(priv->tx_buffer, priv->max_msg_size, - ppos, buffer, count); + size =3D simple_copy_from_iter(priv->tx_buffer, &iocb->ki_pos, + priv->max_msg_size, from); if (size < 0) return size; if (size !=3D count) @@ -174,25 +174,25 @@ static ssize_t sof_msg_inject_dfs_write(struct file *= file, const char __user *bu return size; }; =20 -static ssize_t sof_msg_inject_ipc4_dfs_write(struct file *file, - const char __user *buffer, - size_t count, loff_t *ppos) +static ssize_t sof_msg_inject_ipc4_dfs_write(struct kiocb *iocb, + struct iov_iter *from) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_msg_inject_priv *priv =3D cdev->data; struct sof_ipc4_msg *ipc4_msg =3D priv->tx_buffer; + size_t count =3D iov_iter_count(from); size_t data_size; int ret; =20 - if (*ppos) + if (iocb->ki_pos) return 0; =20 if (count < sizeof(ipc4_msg->header_u64)) return -EINVAL; =20 /* copy the header first */ - if (copy_from_user(&ipc4_msg->header_u64, buffer, - sizeof(ipc4_msg->header_u64))) + if (!copy_from_iter_full(&ipc4_msg->header_u64, + sizeof(ipc4_msg->header_u64), from)) return -EFAULT; =20 data_size =3D count - sizeof(ipc4_msg->header_u64); @@ -200,8 +200,7 @@ static ssize_t sof_msg_inject_ipc4_dfs_write(struct fil= e *file, return -EINVAL; =20 /* Copy the payload */ - if (copy_from_user(ipc4_msg->data_ptr, - buffer + sizeof(ipc4_msg->header_u64), data_size)) + if (!copy_from_iter_full(ipc4_msg->data_ptr, data_size, from)) return -EFAULT; =20 ipc4_msg->data_size =3D data_size; @@ -230,8 +229,8 @@ static int sof_msg_inject_dfs_release(struct inode *ino= de, struct file *file) =20 static const struct file_operations sof_msg_inject_fops =3D { .open =3D sof_msg_inject_dfs_open, - .read =3D sof_msg_inject_dfs_read, - .write =3D sof_msg_inject_dfs_write, + .read_iter =3D sof_msg_inject_dfs_read, + .write_iter =3D sof_msg_inject_dfs_write, .llseek =3D default_llseek, .release =3D sof_msg_inject_dfs_release, =20 @@ -240,8 +239,8 @@ static const struct file_operations sof_msg_inject_fops= =3D { =20 static const struct file_operations sof_msg_inject_ipc4_fops =3D { .open =3D sof_msg_inject_dfs_open, - .read =3D sof_msg_inject_ipc4_dfs_read, - .write =3D sof_msg_inject_ipc4_dfs_write, + .read_iter =3D sof_msg_inject_ipc4_dfs_read, + .write_iter =3D sof_msg_inject_ipc4_dfs_write, .llseek =3D default_llseek, .release =3D sof_msg_inject_dfs_release, =20 diff --git a/sound/soc/sof/sof-client-probes.c b/sound/soc/sof/sof-client-p= robes.c index 30f771ac7bbf..d81da01b6d87 100644 --- a/sound/soc/sof/sof-client-probes.c +++ b/sound/soc/sof/sof-client-probes.c @@ -188,10 +188,10 @@ static const struct snd_compress_ops sof_probes_compr= essed_ops =3D { .copy =3D sof_probes_compr_copy, }; =20 -static ssize_t sof_probes_dfs_points_read(struct file *file, char __user *= to, - size_t count, loff_t *ppos) +static ssize_t sof_probes_dfs_points_read(struct kiocb *iocb, + struct iov_iter *to) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_probes_priv *priv =3D cdev->data; struct device *dev =3D &cdev->auxdev.dev; struct sof_probe_point_desc *desc; @@ -233,8 +233,7 @@ static ssize_t sof_probes_dfs_points_read(struct file *= file, char __user *to, } } =20 - ret =3D simple_read_from_buffer(to, count, ppos, buf, strlen(buf)); - + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, strlen(buf), to); kfree(desc); =20 pm_error: @@ -249,13 +248,13 @@ static ssize_t sof_probes_dfs_points_read(struct file= *file, char __user *to, } =20 static ssize_t -sof_probes_dfs_points_write(struct file *file, const char __user *from, - size_t count, loff_t *ppos) +sof_probes_dfs_points_write(struct kiocb *iocb, struct iov_iter *from) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_probes_priv *priv =3D cdev->data; const struct sof_probes_ipc_ops *ipc =3D priv->ipc_ops; struct device *dev =3D &cdev->auxdev.dev; + size_t count =3D iov_iter_count(from); struct sof_probe_point_desc *desc; u32 num_elems, *array; size_t bytes; @@ -266,7 +265,7 @@ sof_probes_dfs_points_write(struct file *file, const ch= ar __user *from, return -ENOENT; } =20 - ret =3D parse_int_array_user(from, count, (int **)&array); + ret =3D parse_int_array_iter(from, (int **)&array); if (ret < 0) return ret; =20 @@ -300,21 +299,21 @@ sof_probes_dfs_points_write(struct file *file, const = char __user *from, =20 static const struct file_operations sof_probes_points_fops =3D { .open =3D simple_open, - .read =3D sof_probes_dfs_points_read, - .write =3D sof_probes_dfs_points_write, + .read_iter =3D sof_probes_dfs_points_read, + .write_iter =3D sof_probes_dfs_points_write, .llseek =3D default_llseek, =20 .owner =3D THIS_MODULE, }; =20 static ssize_t -sof_probes_dfs_points_remove_write(struct file *file, const char __user *f= rom, - size_t count, loff_t *ppos) +sof_probes_dfs_points_remove_write(struct kiocb *iocb, struct iov_iter *fr= om) { - struct sof_client_dev *cdev =3D file->private_data; + struct sof_client_dev *cdev =3D iocb->ki_filp->private_data; struct sof_probes_priv *priv =3D cdev->data; const struct sof_probes_ipc_ops *ipc =3D priv->ipc_ops; struct device *dev =3D &cdev->auxdev.dev; + size_t count =3D iov_iter_count(from); int ret, err; u32 *array; =20 @@ -323,7 +322,7 @@ sof_probes_dfs_points_remove_write(struct file *file, c= onst char __user *from, return -ENOENT; } =20 - ret =3D parse_int_array_user(from, count, (int **)&array); + ret =3D parse_int_array_iter(from, (int **)&array); if (ret < 0) return ret; =20 @@ -348,7 +347,7 @@ sof_probes_dfs_points_remove_write(struct file *file, c= onst char __user *from, =20 static const struct file_operations sof_probes_points_remove_fops =3D { .open =3D simple_open, - .write =3D sof_probes_dfs_points_remove_write, + .write_iter =3D sof_probes_dfs_points_remove_write, .llseek =3D default_llseek, =20 .owner =3D THIS_MODULE, --=20 2.43.0