From nobody Fri Dec 19 17:16:32 2025 Received: from mail-io1-f52.google.com (mail-io1-f52.google.com [209.85.166.52]) (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 2FFFA14EC6A for ; Thu, 11 Apr 2024 15:34:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849685; cv=none; b=UJMrpVQGB9hHWRXiQhly1gCNEItTHWwg7aMHWj15rvy+jXb7WVGP/6oE/jkI1CrmYERaouBJiII6q3HUG6KbguJd0FbX4XjyPBsjhRANK8d9nqjkKroU424XmJrSNfQqhlqdPrALGHTVel4rtcbN93Y923fInMKMLV311qo+ZGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849685; c=relaxed/simple; bh=EvF9GK5fbHclBik/U1ZhjLcyJWbBmhwlfutDJHY9YgA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sWZ2iYvyfbTp69ovre1/Y0g1v/gWw2ZOYr7PPh4AKLNEZhZbFLY1tdXFCtbgt03yBKCyPjm2AOY0BJyBa9sarUtxOGBhTXX2z/txWnBDt5zoI/l2weIna4vapEecIUTavpSs9UEueg0ji3xu+RkC3tT2NOXmORcOi+4dKYUmSxw= 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=09yiS8Cc; arc=none smtp.client-ip=209.85.166.52 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="09yiS8Cc" Received: by mail-io1-f52.google.com with SMTP id ca18e2360f4ac-7d6812b37a6so8913039f.0 for ; Thu, 11 Apr 2024 08:34:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1712849680; x=1713454480; 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=X69VkKRBRS4SFDGlDKAfZ/Z/En9tZp2QBRLJAwyAOQw=; b=09yiS8CcWQbJtgcH3fYbx+4F/FAEiTFz0FdSd+JmMMpIxqqgWhZ/IMbmwNFzQN5gUa 43L7x0kUTPhyBxpVYxJDgjZWAUcI/X8U51OMSj58eB1Q9dbJMr1fQfNL8fBSY5yBo3kJ 39HlNHnytEbAKqNaZROgQIS78wW3/io148f1KOwFHUIedxLSpz3SihNoKLs7H4D45lON 6NKQvVNBU3mi8Is8ZZJ31Ur/lqvGMug2mcA6/ZjeGFjztULH5ssqqAvXJDxyQn16fkdn nDXhl3UflHPjLdwWI1OfTBJOe2Vaoke+YkYXBkNgqYQe68x1rAVuMxrIE1oVH1VZFD2p rCKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712849680; x=1713454480; 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=X69VkKRBRS4SFDGlDKAfZ/Z/En9tZp2QBRLJAwyAOQw=; b=HQuqKSR8n8IGXZJWeKcrh0Od21MEjwxcSO0SvOjIbI1HM7ruywBbn4ppGdt71h0rqG V/FolsjA5tDpryz8XEbzkDJwVC+p1EWrPg15ZOp5gFQmAw3uuZQCWPt+Nn5rLYEY185q 8QY1Oo7xlcF9qh1GW26UX3shvunAW7HnYgQfbLH7CG3m5NgY9D5RqTlqu9TrqGkr0KaF 9GzeFP/g32fuGLHl7IsnKYh9f4Tj5pZJ/yhE3oKtGelZvtRp+V7ngP99brk2ubln91cm P5/5JiZD33hhlbrwi7VWywtb0ZAcH8IgcHyQzYo+XTA+lVF7k7517kCYfTQyC/2GDqIc VZDg== X-Gm-Message-State: AOJu0YwKqM5VtsLAYuKeBUgrt4I3imYDO6MrUM6I935FMXUO8hfrZz8P BrkrDsx1Tk0ac2CQdSSA6X4gkvMJBaOcQ6lk9BTZRyK1/ZLbUo7N75E4WBtCuFn5yhdIjHEQODA n X-Google-Smtp-Source: AGHT+IFU9YDLxYgk/NRreQh4oW+aVM5ku7TnNUhdZGYxwT9BiCbmhU5jsiW27zt+ETFg3i2rXgXPgQ== X-Received: by 2002:a92:2912:0:b0:36a:f9aa:5757 with SMTP id l18-20020a922912000000b0036af9aa5757mr3578832ilg.2.1712849680519; Thu, 11 Apr 2024 08:34:40 -0700 (PDT) Received: from localhost.localdomain ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id jc25-20020a056638891900b0047f14b7f6c0sm457056jab.5.2024.04.11.08.34.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Apr 2024 08:34:38 -0700 (PDT) From: Jens Axboe To: linux-kernel@vger.kernel.org Cc: Jens Axboe Subject: [PATCH 106/437] crypto: hisilicon: convert to read/write iterators Date: Thu, 11 Apr 2024 09:14:06 -0600 Message-ID: <20240411153126.16201-107-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 --- drivers/crypto/hisilicon/debugfs.c | 51 +++++++++++------------ drivers/crypto/hisilicon/hpre/hpre_main.c | 23 +++++----- drivers/crypto/hisilicon/qm.c | 22 +++++----- drivers/crypto/hisilicon/sec2/sec_main.c | 23 +++++----- drivers/crypto/hisilicon/zip/zip_main.c | 23 +++++----- 5 files changed, 68 insertions(+), 74 deletions(-) diff --git a/drivers/crypto/hisilicon/debugfs.c b/drivers/crypto/hisilicon/= debugfs.c index cd67fa348ca7..6dd67b0fcf36 100644 --- a/drivers/crypto/hisilicon/debugfs.c +++ b/drivers/crypto/hisilicon/debugfs.c @@ -137,8 +137,7 @@ static struct hisi_qm *file_to_qm(struct debugfs_file *= file) return container_of(debug, struct hisi_qm, debug); } =20 -static ssize_t qm_cmd_read(struct file *filp, char __user *buffer, - size_t count, loff_t *pos) +static ssize_t qm_cmd_read(struct kiocb *iocb, struct iov_iter *to) { char buf[QM_DBG_READ_LEN]; int len; @@ -146,7 +145,7 @@ static ssize_t qm_cmd_read(struct file *filp, char __us= er *buffer, len =3D scnprintf(buf, QM_DBG_READ_LEN, "%s\n", "Please echo help to cmd to get help information"); =20 - return simple_read_from_buffer(buffer, count, pos, buf, len); + return simple_copy_to_iter(buf, &iocb->ki_pos, len, to); } =20 static void dump_show(struct hisi_qm *qm, void *info, @@ -502,14 +501,14 @@ static int qm_cmd_write_dump(struct hisi_qm *qm, cons= t char *cmd_buf) return ret; } =20 -static ssize_t qm_cmd_write(struct file *filp, const char __user *buffer, - size_t count, loff_t *pos) +static ssize_t qm_cmd_write(struct kiocb *iocb, struct iov_iter *from) { - struct hisi_qm *qm =3D filp->private_data; + struct hisi_qm *qm =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char *cmd_buf, *cmd_buf_tmp; int ret; =20 - if (*pos) + if (iocb->ki_pos) return 0; =20 ret =3D hisi_qm_get_dfx_access(qm); @@ -527,7 +526,7 @@ static ssize_t qm_cmd_write(struct file *filp, const ch= ar __user *buffer, goto put_dfx_access; } =20 - cmd_buf =3D memdup_user_nul(buffer, count); + cmd_buf =3D iterdup_nul(from, count); if (IS_ERR(cmd_buf)) { ret =3D PTR_ERR(cmd_buf); goto put_dfx_access; @@ -557,8 +556,8 @@ static ssize_t qm_cmd_write(struct file *filp, const ch= ar __user *buffer, static const struct file_operations qm_cmd_fops =3D { .owner =3D THIS_MODULE, .open =3D simple_open, - .read =3D qm_cmd_read, - .write =3D qm_cmd_write, + .read_iter =3D qm_cmd_read, + .write_iter =3D qm_cmd_write, }; =20 /** @@ -704,10 +703,9 @@ static int current_qm_write(struct hisi_qm *qm, u32 va= l) return 0; } =20 -static ssize_t qm_debug_read(struct file *filp, char __user *buf, - size_t count, loff_t *pos) +static ssize_t qm_debug_read(struct kiocb *iocb, struct iov_iter *to) { - struct debugfs_file *file =3D filp->private_data; + struct debugfs_file *file =3D iocb->ki_filp->private_data; enum qm_debug_file index =3D file->index; struct hisi_qm *qm =3D file_to_qm(file); char tbuf[QM_DBG_TMP_BUF_LEN]; @@ -736,7 +734,7 @@ static ssize_t qm_debug_read(struct file *filp, char __= user *buf, =20 hisi_qm_put_dfx_access(qm); ret =3D scnprintf(tbuf, QM_DBG_TMP_BUF_LEN, "%u\n", val); - return simple_read_from_buffer(buf, count, pos, tbuf, ret); + return simple_copy_to_iter(tbuf, &iocb->ki_pos, ret, to); =20 err_input: mutex_unlock(&file->lock); @@ -744,24 +742,24 @@ static ssize_t qm_debug_read(struct file *filp, char = __user *buf, return -EINVAL; } =20 -static ssize_t qm_debug_write(struct file *filp, const char __user *buf, - size_t count, loff_t *pos) +static ssize_t qm_debug_write(struct kiocb *iocb, struct iov_iter *from) { - struct debugfs_file *file =3D filp->private_data; + struct debugfs_file *file =3D iocb->ki_filp->private_data; enum qm_debug_file index =3D file->index; struct hisi_qm *qm =3D file_to_qm(file); + size_t count =3D iov_iter_count(from); unsigned long val; char tbuf[QM_DBG_TMP_BUF_LEN]; int len, ret; =20 - if (*pos !=3D 0) + if (iocb->ki_pos !=3D 0) return 0; =20 if (count >=3D QM_DBG_TMP_BUF_LEN) return -ENOSPC; =20 - len =3D simple_write_to_buffer(tbuf, QM_DBG_TMP_BUF_LEN - 1, pos, buf, - count); + len =3D simple_copy_from_iter(tbuf, &iocb->ki_pos, QM_DBG_TMP_BUF_LEN - 1, + from); if (len < 0) return len; =20 @@ -800,8 +798,8 @@ static ssize_t qm_debug_write(struct file *filp, const = char __user *buf, static const struct file_operations qm_debug_fops =3D { .owner =3D THIS_MODULE, .open =3D simple_open, - .read =3D qm_debug_read, - .write =3D qm_debug_write, + .read_iter =3D qm_debug_read, + .write_iter =3D qm_debug_write, }; =20 static void dfx_regs_uninit(struct hisi_qm *qm, @@ -1051,23 +1049,22 @@ static int qm_state_show(struct seq_file *s, void *= unused) =20 DEFINE_SHOW_ATTRIBUTE(qm_state); =20 -static ssize_t qm_status_read(struct file *filp, char __user *buffer, - size_t count, loff_t *pos) +static ssize_t qm_status_read(struct kiocb *iocb, struct iov_iter *to) { - struct hisi_qm *qm =3D filp->private_data; + struct hisi_qm *qm =3D iocb->ki_filp->private_data; char buf[QM_DBG_READ_LEN]; int val, len; =20 val =3D atomic_read(&qm->status.flags); len =3D scnprintf(buf, QM_DBG_READ_LEN, "%s\n", qm_s[val]); =20 - return simple_read_from_buffer(buffer, count, pos, buf, len); + return simple_copy_to_iter(buf, &iocb->ki_pos, len, to); } =20 static const struct file_operations qm_status_fops =3D { .owner =3D THIS_MODULE, .open =3D simple_open, - .read =3D qm_status_read, + .read_iter =3D qm_status_read, }; =20 static void qm_create_debugfs_file(struct hisi_qm *qm, struct dentry *dir, diff --git a/drivers/crypto/hisilicon/hpre/hpre_main.c b/drivers/crypto/his= ilicon/hpre/hpre_main.c index d93aa6630a57..b9257a368aa9 100644 --- a/drivers/crypto/hisilicon/hpre/hpre_main.c +++ b/drivers/crypto/hisilicon/hpre/hpre_main.c @@ -829,10 +829,9 @@ static void hpre_cluster_inqry_write(struct hpre_debug= fs_file *file, u32 val) writel(val, qm->io_base + offset + HPRE_CLUSTER_INQURY); } =20 -static ssize_t hpre_ctrl_debug_read(struct file *filp, char __user *buf, - size_t count, loff_t *pos) +static ssize_t hpre_ctrl_debug_read(struct kiocb *iocb, struct iov_iter *t= o) { - struct hpre_debugfs_file *file =3D filp->private_data; + struct hpre_debugfs_file *file =3D iocb->ki_filp->private_data; struct hisi_qm *qm =3D hpre_file_to_qm(file); char tbuf[HPRE_DBGFS_VAL_MAX_LEN]; u32 val; @@ -857,7 +856,7 @@ static ssize_t hpre_ctrl_debug_read(struct file *filp, = char __user *buf, =20 hisi_qm_put_dfx_access(qm); ret =3D snprintf(tbuf, HPRE_DBGFS_VAL_MAX_LEN, "%u\n", val); - return simple_read_from_buffer(buf, count, pos, tbuf, ret); + return simple_copy_to_iter(tbuf, &iocb->ki_pos, ret, to); =20 err_input: spin_unlock_irq(&file->lock); @@ -865,23 +864,23 @@ static ssize_t hpre_ctrl_debug_read(struct file *filp= , char __user *buf, return -EINVAL; } =20 -static ssize_t hpre_ctrl_debug_write(struct file *filp, const char __user = *buf, - size_t count, loff_t *pos) +static ssize_t hpre_ctrl_debug_write(struct kiocb *iocb, struct iov_iter *= from) { - struct hpre_debugfs_file *file =3D filp->private_data; + struct hpre_debugfs_file *file =3D iocb->ki_filp->private_data; struct hisi_qm *qm =3D hpre_file_to_qm(file); + size_t count =3D iov_iter_count(from); char tbuf[HPRE_DBGFS_VAL_MAX_LEN]; unsigned long val; int len, ret; =20 - if (*pos !=3D 0) + if (iocb->ki_pos !=3D 0) return 0; =20 if (count >=3D HPRE_DBGFS_VAL_MAX_LEN) return -ENOSPC; =20 - len =3D simple_write_to_buffer(tbuf, HPRE_DBGFS_VAL_MAX_LEN - 1, - pos, buf, count); + len =3D simple_copy_from_iter(tbuf, &iocb->ki_pos, + HPRE_DBGFS_VAL_MAX_LEN - 1, from); if (len < 0) return len; =20 @@ -919,8 +918,8 @@ static ssize_t hpre_ctrl_debug_write(struct file *filp,= const char __user *buf, static const struct file_operations hpre_ctrl_debug_fops =3D { .owner =3D THIS_MODULE, .open =3D simple_open, - .read =3D hpre_ctrl_debug_read, - .write =3D hpre_ctrl_debug_write, + .read_iter =3D hpre_ctrl_debug_read, + .write_iter =3D hpre_ctrl_debug_write, }; =20 static int hpre_debugfs_atomic64_get(void *data, u64 *val) diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c index 92f0a1d9b4a6..604cff89f0c8 100644 --- a/drivers/crypto/hisilicon/qm.c +++ b/drivers/crypto/hisilicon/qm.c @@ -3591,10 +3591,9 @@ static int qm_vf_read_qos(struct hisi_qm *qm) return ret; } =20 -static ssize_t qm_algqos_read(struct file *filp, char __user *buf, - size_t count, loff_t *pos) +static ssize_t qm_algqos_read(struct kiocb *iocb, struct iov_iter *to) { - struct hisi_qm *qm =3D filp->private_data; + struct hisi_qm *qm =3D iocb->ki_filp->private_data; char tbuf[QM_DBG_READ_LEN]; u32 qos_val, ir; int ret; @@ -3622,7 +3621,7 @@ static ssize_t qm_algqos_read(struct file *filp, char= __user *buf, qos_val =3D ir / QM_QOS_RATE; ret =3D scnprintf(tbuf, QM_DBG_READ_LEN, "%u\n", qos_val); =20 - ret =3D simple_read_from_buffer(buf, count, pos, tbuf, ret); + ret =3D simple_copy_to_iter(tbuf, &iocb->ki_pos, ret, to); =20 err_get_status: clear_bit(QM_RESETTING, &qm->misc_ctl); @@ -3665,22 +3664,23 @@ static ssize_t qm_get_qos_value(struct hisi_qm *qm,= const char *buf, return 0; } =20 -static ssize_t qm_algqos_write(struct file *filp, const char __user *buf, - size_t count, loff_t *pos) +static ssize_t qm_algqos_write(struct kiocb *iocb, struct iov_iter *from) { - struct hisi_qm *qm =3D filp->private_data; + struct hisi_qm *qm =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char tbuf[QM_DBG_READ_LEN]; unsigned int fun_index; unsigned long val; int len, ret; =20 - if (*pos !=3D 0) + if (iocb->ki_pos !=3D 0) return 0; =20 if (count >=3D QM_DBG_READ_LEN) return -ENOSPC; =20 - len =3D simple_write_to_buffer(tbuf, QM_DBG_READ_LEN - 1, pos, buf, count= ); + len =3D simple_copy_from_iter(tbuf, &iocb->ki_pos, QM_DBG_READ_LEN - 1, + from); if (len < 0) return len; =20 @@ -3722,8 +3722,8 @@ static ssize_t qm_algqos_write(struct file *filp, con= st char __user *buf, static const struct file_operations qm_algqos_fops =3D { .owner =3D THIS_MODULE, .open =3D simple_open, - .read =3D qm_algqos_read, - .write =3D qm_algqos_write, + .read_iter =3D qm_algqos_read, + .write_iter =3D qm_algqos_write, }; =20 /** diff --git a/drivers/crypto/hisilicon/sec2/sec_main.c b/drivers/crypto/hisi= licon/sec2/sec_main.c index c290d8937b19..bb168d97de30 100644 --- a/drivers/crypto/hisilicon/sec2/sec_main.c +++ b/drivers/crypto/hisilicon/sec2/sec_main.c @@ -718,10 +718,9 @@ static int sec_clear_enable_write(struct hisi_qm *qm, = u32 val) return 0; } =20 -static ssize_t sec_debug_read(struct file *filp, char __user *buf, - size_t count, loff_t *pos) +static ssize_t sec_debug_read(struct kiocb *iocb, struct iov_iter *to) { - struct sec_debug_file *file =3D filp->private_data; + struct sec_debug_file *file =3D iocb->ki_filp->private_data; char tbuf[SEC_DBGFS_VAL_MAX_LEN]; struct hisi_qm *qm =3D file->qm; u32 val; @@ -745,7 +744,7 @@ static ssize_t sec_debug_read(struct file *filp, char _= _user *buf, =20 hisi_qm_put_dfx_access(qm); ret =3D snprintf(tbuf, SEC_DBGFS_VAL_MAX_LEN, "%u\n", val); - return simple_read_from_buffer(buf, count, pos, tbuf, ret); + return simple_copy_to_iter(tbuf, &iocb->ki_pos, ret, to); =20 err_input: spin_unlock_irq(&file->lock); @@ -753,23 +752,23 @@ static ssize_t sec_debug_read(struct file *filp, char= __user *buf, return -EINVAL; } =20 -static ssize_t sec_debug_write(struct file *filp, const char __user *buf, - size_t count, loff_t *pos) +static ssize_t sec_debug_write(struct kiocb *iocb, struct iov_iter *from) { - struct sec_debug_file *file =3D filp->private_data; + struct sec_debug_file *file =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char tbuf[SEC_DBGFS_VAL_MAX_LEN]; struct hisi_qm *qm =3D file->qm; unsigned long val; int len, ret; =20 - if (*pos !=3D 0) + if (iocb->ki_pos !=3D 0) return 0; =20 if (count >=3D SEC_DBGFS_VAL_MAX_LEN) return -ENOSPC; =20 - len =3D simple_write_to_buffer(tbuf, SEC_DBGFS_VAL_MAX_LEN - 1, - pos, buf, count); + len =3D simple_copy_from_iter(tbuf, &iocb->ki_pos, + SEC_DBGFS_VAL_MAX_LEN - 1, from); if (len < 0) return len; =20 @@ -805,8 +804,8 @@ static ssize_t sec_debug_write(struct file *filp, const= char __user *buf, static const struct file_operations sec_dbg_fops =3D { .owner =3D THIS_MODULE, .open =3D simple_open, - .read =3D sec_debug_read, - .write =3D sec_debug_write, + .read_iter =3D sec_debug_read, + .write_iter =3D sec_debug_write, }; =20 static int sec_debugfs_atomic64_get(void *data, u64 *val) diff --git a/drivers/crypto/hisilicon/zip/zip_main.c b/drivers/crypto/hisil= icon/zip/zip_main.c index c065fd867161..47319ba13873 100644 --- a/drivers/crypto/hisilicon/zip/zip_main.c +++ b/drivers/crypto/hisilicon/zip/zip_main.c @@ -689,10 +689,9 @@ static int clear_enable_write(struct hisi_qm *qm, u32 = val) return 0; } =20 -static ssize_t hisi_zip_ctrl_debug_read(struct file *filp, char __user *bu= f, - size_t count, loff_t *pos) +static ssize_t hisi_zip_ctrl_debug_read(struct kiocb *iocb, struct iov_ite= r *to) { - struct ctrl_debug_file *file =3D filp->private_data; + struct ctrl_debug_file *file =3D iocb->ki_filp->private_data; struct hisi_qm *qm =3D file_to_qm(file); char tbuf[HZIP_BUF_SIZE]; u32 val; @@ -714,7 +713,7 @@ static ssize_t hisi_zip_ctrl_debug_read(struct file *fi= lp, char __user *buf, =20 hisi_qm_put_dfx_access(qm); ret =3D scnprintf(tbuf, sizeof(tbuf), "%u\n", val); - return simple_read_from_buffer(buf, count, pos, tbuf, ret); + return simple_copy_to_iter(tbuf, &iocb->ki_pos, ret, to); =20 err_input: spin_unlock_irq(&file->lock); @@ -722,23 +721,23 @@ static ssize_t hisi_zip_ctrl_debug_read(struct file *= filp, char __user *buf, return -EINVAL; } =20 -static ssize_t hisi_zip_ctrl_debug_write(struct file *filp, - const char __user *buf, - size_t count, loff_t *pos) +static ssize_t hisi_zip_ctrl_debug_write(struct kiocb *iocb, + struct iov_iter *from) { - struct ctrl_debug_file *file =3D filp->private_data; + struct ctrl_debug_file *file =3D iocb->ki_filp->private_data; struct hisi_qm *qm =3D file_to_qm(file); + size_t count =3D iov_iter_count(from); char tbuf[HZIP_BUF_SIZE]; unsigned long val; int len, ret; =20 - if (*pos !=3D 0) + if (iocb->ki_pos !=3D 0) return 0; =20 if (count >=3D HZIP_BUF_SIZE) return -ENOSPC; =20 - len =3D simple_write_to_buffer(tbuf, HZIP_BUF_SIZE - 1, pos, buf, count); + len =3D simple_copy_from_iter(tbuf, &iocb->ki_pos, HZIP_BUF_SIZE - 1, fro= m); if (len < 0) return len; =20 @@ -774,8 +773,8 @@ static ssize_t hisi_zip_ctrl_debug_write(struct file *f= ilp, static const struct file_operations ctrl_debug_fops =3D { .owner =3D THIS_MODULE, .open =3D simple_open, - .read =3D hisi_zip_ctrl_debug_read, - .write =3D hisi_zip_ctrl_debug_write, + .read_iter =3D hisi_zip_ctrl_debug_read, + .write_iter =3D hisi_zip_ctrl_debug_write, }; =20 static int zip_debugfs_atomic64_set(void *data, u64 val) --=20 2.43.0