public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: linux-kernel@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>
Subject: [PATCH 296/437] drivers/net/wireless/intel: convert to read/write iterators
Date: Thu, 11 Apr 2024 09:17:16 -0600	[thread overview]
Message-ID: <20240411153126.16201-297-axboe@kernel.dk> (raw)
In-Reply-To: <20240411153126.16201-1-axboe@kernel.dk>

Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
 drivers/net/wireless/intel/iwlegacy/3945-rs.c |   9 +-
 drivers/net/wireless/intel/iwlegacy/4965-rs.c |  39 +-
 drivers/net/wireless/intel/iwlegacy/debug.c   | 280 +++++------
 .../net/wireless/intel/iwlwifi/dvm/debugfs.c  | 455 ++++++++----------
 drivers/net/wireless/intel/iwlwifi/dvm/rs.c   |  42 +-
 .../net/wireless/intel/iwlwifi/fw/debugfs.c   |  23 +-
 drivers/net/wireless/intel/iwlwifi/mei/main.c |  18 +-
 drivers/net/wireless/intel/iwlwifi/mvm/d3.c   |   7 +-
 .../wireless/intel/iwlwifi/mvm/debugfs-vif.c  |  81 ++--
 .../net/wireless/intel/iwlwifi/mvm/debugfs.c  | 227 ++++-----
 .../net/wireless/intel/iwlwifi/mvm/debugfs.h  |   9 +-
 drivers/net/wireless/intel/iwlwifi/mvm/rs.c   |  62 ++-
 .../net/wireless/intel/iwlwifi/pcie/trans.c   |  85 ++--
 13 files changed, 609 insertions(+), 728 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlegacy/3945-rs.c b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
index 0eaad980c85c..1a14dce71bff 100644
--- a/drivers/net/wireless/intel/iwlegacy/3945-rs.c
+++ b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
@@ -801,14 +801,13 @@ il3945_rs_get_rate(void *il_r, struct ieee80211_sta *sta, void *il_sta,
 #ifdef CONFIG_MAC80211_DEBUGFS
 
 static ssize_t
-il3945_sta_dbgfs_stats_table_read(struct file *file, char __user *user_buf,
-				  size_t count, loff_t *ppos)
+il3945_sta_dbgfs_stats_table_read(struct kiocb *iocb, struct iov_iter *to)
 {
 	char *buff;
 	int desc = 0;
 	int j;
 	ssize_t ret;
-	struct il3945_rs_sta *lq_sta = file->private_data;
+	struct il3945_rs_sta *lq_sta = iocb->ki_filp->private_data;
 
 	buff = kmalloc(1024, GFP_KERNEL);
 	if (!buff)
@@ -827,13 +826,13 @@ il3945_sta_dbgfs_stats_table_read(struct file *file, char __user *user_buf,
 			    lq_sta->win[j].success_counter,
 			    lq_sta->win[j].success_ratio);
 	}
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 	kfree(buff);
 	return ret;
 }
 
 static const struct file_operations rs_sta_dbgfs_stats_table_ops = {
-	.read = il3945_sta_dbgfs_stats_table_read,
+	.read_iter = il3945_sta_dbgfs_stats_table_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
diff --git a/drivers/net/wireless/intel/iwlegacy/4965-rs.c b/drivers/net/wireless/intel/iwlegacy/4965-rs.c
index 718efb1aa1b0..958d7e8e26d6 100644
--- a/drivers/net/wireless/intel/iwlegacy/4965-rs.c
+++ b/drivers/net/wireless/intel/iwlegacy/4965-rs.c
@@ -2527,11 +2527,10 @@ il4965_rs_dbgfs_set_mcs(struct il_lq_sta *lq_sta, u32 * rate_n_flags, int idx)
 }
 
 static ssize_t
-il4965_rs_sta_dbgfs_scale_table_write(struct file *file,
-				      const char __user *user_buf,
-				      size_t count, loff_t *ppos)
+il4965_rs_sta_dbgfs_scale_table_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct il_lq_sta *lq_sta = file->private_data;
+	struct il_lq_sta *lq_sta = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	struct il_priv *il;
 	char buf[64];
 	size_t buf_size;
@@ -2540,7 +2539,7 @@ il4965_rs_sta_dbgfs_scale_table_write(struct file *file,
 	il = lq_sta->drv;
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 
 	if (sscanf(buf, "%x", &parsed_rate) == 1)
@@ -2564,8 +2563,7 @@ il4965_rs_sta_dbgfs_scale_table_write(struct file *file,
 }
 
 static ssize_t
-il4965_rs_sta_dbgfs_scale_table_read(struct file *file, char __user *user_buf,
-				     size_t count, loff_t *ppos)
+il4965_rs_sta_dbgfs_scale_table_read(struct kiocb *iocb, struct iov_iter *to)
 {
 	char *buff;
 	int desc = 0;
@@ -2573,7 +2571,7 @@ il4965_rs_sta_dbgfs_scale_table_read(struct file *file, char __user *user_buf,
 	int idx = 0;
 	ssize_t ret;
 
-	struct il_lq_sta *lq_sta = file->private_data;
+	struct il_lq_sta *lq_sta = iocb->ki_filp->private_data;
 	struct il_priv *il;
 	struct il_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]);
 
@@ -2659,28 +2657,27 @@ il4965_rs_sta_dbgfs_scale_table_read(struct file *file, char __user *user_buf,
 		}
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 	kfree(buff);
 	return ret;
 }
 
 static const struct file_operations rs_sta_dbgfs_scale_table_ops = {
-	.write = il4965_rs_sta_dbgfs_scale_table_write,
-	.read = il4965_rs_sta_dbgfs_scale_table_read,
+	.write_iter = il4965_rs_sta_dbgfs_scale_table_write,
+	.read_iter = il4965_rs_sta_dbgfs_scale_table_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
 
 static ssize_t
-il4965_rs_sta_dbgfs_stats_table_read(struct file *file, char __user *user_buf,
-				     size_t count, loff_t *ppos)
+il4965_rs_sta_dbgfs_stats_table_read(struct kiocb *iocb, struct iov_iter *to)
 {
 	char *buff;
 	int desc = 0;
 	int i, j;
 	ssize_t ret;
 
-	struct il_lq_sta *lq_sta = file->private_data;
+	struct il_lq_sta *lq_sta = iocb->ki_filp->private_data;
 
 	buff = kmalloc(1024, GFP_KERNEL);
 	if (!buff)
@@ -2705,25 +2702,23 @@ il4965_rs_sta_dbgfs_stats_table_read(struct file *file, char __user *user_buf,
 				    lq_sta->lq_info[i].win[j].success_ratio);
 		}
 	}
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 	kfree(buff);
 	return ret;
 }
 
 static const struct file_operations rs_sta_dbgfs_stats_table_ops = {
-	.read = il4965_rs_sta_dbgfs_stats_table_read,
+	.read_iter = il4965_rs_sta_dbgfs_stats_table_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
 
 static ssize_t
-il4965_rs_sta_dbgfs_rate_scale_data_read(struct file *file,
-					 char __user *user_buf, size_t count,
-					 loff_t *ppos)
+il4965_rs_sta_dbgfs_rate_scale_data_read(struct kiocb *iocb, struct iov_iter *to)
 {
 	char buff[120];
 	int desc = 0;
-	struct il_lq_sta *lq_sta = file->private_data;
+	struct il_lq_sta *lq_sta = iocb->ki_filp->private_data;
 	struct il_scale_tbl_info *tbl = &lq_sta->lq_info[lq_sta->active_tbl];
 
 	if (is_Ht(tbl->lq_type))
@@ -2735,11 +2730,11 @@ il4965_rs_sta_dbgfs_rate_scale_data_read(struct file *file,
 		    sprintf(buff + desc, "Bit Rate= %d Mb/s\n",
 			    il_rates[lq_sta->last_txrate_idx].ieee >> 1);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	return simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 }
 
 static const struct file_operations rs_sta_dbgfs_rate_scale_data_ops = {
-	.read = il4965_rs_sta_dbgfs_rate_scale_data_read,
+	.read_iter = il4965_rs_sta_dbgfs_rate_scale_data_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
diff --git a/drivers/net/wireless/intel/iwlegacy/debug.c b/drivers/net/wireless/intel/iwlegacy/debug.c
index d998a3f1b056..c824c1db8186 100644
--- a/drivers/net/wireless/intel/iwlegacy/debug.c
+++ b/drivers/net/wireless/intel/iwlegacy/debug.c
@@ -120,20 +120,18 @@ EXPORT_SYMBOL(il_update_stats);
 
 /* file operation */
 #define DEBUGFS_READ_FUNC(name)                                         \
-static ssize_t il_dbgfs_##name##_read(struct file *file,               \
-					char __user *user_buf,          \
-					size_t count, loff_t *ppos);
+static ssize_t il_dbgfs_##name##_read(struct kiocb *iocb,               \
+					struct iov_iter *to);           \
 
 #define DEBUGFS_WRITE_FUNC(name)                                        \
-static ssize_t il_dbgfs_##name##_write(struct file *file,              \
-					const char __user *user_buf,    \
-					size_t count, loff_t *ppos);
+static ssize_t il_dbgfs_##name##_write(struct kiocb *iocb,              \
+					struct iov_iter *from);         \
 
 
 #define DEBUGFS_READ_FILE_OPS(name)				\
 	DEBUGFS_READ_FUNC(name);				\
 static const struct file_operations il_dbgfs_##name##_ops = {	\
-	.read = il_dbgfs_##name##_read,				\
+	.read_iter = il_dbgfs_##name##_read,			\
 	.open = simple_open,					\
 	.llseek = generic_file_llseek,				\
 };
@@ -141,7 +139,7 @@ static const struct file_operations il_dbgfs_##name##_ops = {	\
 #define DEBUGFS_WRITE_FILE_OPS(name)				\
 	DEBUGFS_WRITE_FUNC(name);				\
 static const struct file_operations il_dbgfs_##name##_ops = {	\
-	.write = il_dbgfs_##name##_write,			\
+	.write_iter = il_dbgfs_##name##_write,			\
 	.open = simple_open,					\
 	.llseek = generic_file_llseek,				\
 };
@@ -150,8 +148,8 @@ static const struct file_operations il_dbgfs_##name##_ops = {	\
 	DEBUGFS_READ_FUNC(name);				\
 	DEBUGFS_WRITE_FUNC(name);				\
 static const struct file_operations il_dbgfs_##name##_ops = {	\
-	.write = il_dbgfs_##name##_write,			\
-	.read = il_dbgfs_##name##_read,				\
+	.write_iter = il_dbgfs_##name##_write,			\
+	.read_iter = il_dbgfs_##name##_read,			\
 	.open = simple_open,					\
 	.llseek = generic_file_llseek,				\
 };
@@ -196,12 +194,10 @@ il_get_ctrl_string(int cmd)
 	}
 }
 
-static ssize_t
-il_dbgfs_tx_stats_read(struct file *file, char __user *user_buf, size_t count,
-		       loff_t *ppos)
+static ssize_t il_dbgfs_tx_stats_read(struct kiocb *iocb, struct iov_iter *to)
 {
 
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	char *buf;
 	int pos = 0;
 
@@ -231,24 +227,23 @@ il_dbgfs_tx_stats_read(struct file *file, char __user *user_buf, size_t count,
 	pos +=
 	    scnprintf(buf + pos, bufsz - pos, "\tbytes: %llu\n",
 		      il->tx_stats.data_bytes);
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
 static ssize_t
-il_dbgfs_clear_traffic_stats_write(struct file *file,
-				   const char __user *user_buf, size_t count,
-				   loff_t *ppos)
+il_dbgfs_clear_traffic_stats_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	u32 clear_flag;
 	char buf[8];
 	int buf_size;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%x", &clear_flag) != 1)
 		return -EFAULT;
@@ -257,12 +252,10 @@ il_dbgfs_clear_traffic_stats_write(struct file *file,
 	return count;
 }
 
-static ssize_t
-il_dbgfs_rx_stats_read(struct file *file, char __user *user_buf, size_t count,
-		       loff_t *ppos)
+static ssize_t il_dbgfs_rx_stats_read(struct kiocb *iocb, struct iov_iter *to)
 {
 
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	char *buf;
 	int pos = 0;
 	int cnt;
@@ -293,7 +286,7 @@ il_dbgfs_rx_stats_read(struct file *file, char __user *user_buf, size_t count,
 	    scnprintf(buf + pos, bufsz - pos, "\tbytes: %llu\n",
 		      il->rx_stats.data_bytes);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
@@ -301,16 +294,14 @@ il_dbgfs_rx_stats_read(struct file *file, char __user *user_buf, size_t count,
 #define BYTE1_MASK 0x000000ff;
 #define BYTE2_MASK 0x0000ffff;
 #define BYTE3_MASK 0x00ffffff;
-static ssize_t
-il_dbgfs_sram_read(struct file *file, char __user *user_buf, size_t count,
-		   loff_t *ppos)
+static ssize_t il_dbgfs_sram_read(struct kiocb *iocb, struct iov_iter *to)
 {
 	u32 val;
 	char *buf;
 	ssize_t ret;
 	int i;
 	int pos = 0;
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	size_t bufsz;
 
 	/* default is to dump the entire data segment */
@@ -355,23 +346,22 @@ il_dbgfs_sram_read(struct file *file, char __user *user_buf, size_t count,
 	}
 	pos += scnprintf(buf + pos, bufsz - pos, "\n");
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t
-il_dbgfs_sram_write(struct file *file, const char __user *user_buf,
-		    size_t count, loff_t *ppos)
+static ssize_t il_dbgfs_sram_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[64];
 	int buf_size;
 	u32 offset, len;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 
 	if (sscanf(buf, "%x,%x", &offset, &len) == 2) {
@@ -385,11 +375,9 @@ il_dbgfs_sram_write(struct file *file, const char __user *user_buf,
 	return count;
 }
 
-static ssize_t
-il_dbgfs_stations_read(struct file *file, char __user *user_buf, size_t count,
-		       loff_t *ppos)
+static ssize_t il_dbgfs_stations_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	struct il_station_entry *station;
 	int max_sta = il->hw_params.max_stations;
 	char *buf;
@@ -444,17 +432,15 @@ il_dbgfs_stations_read(struct file *file, char __user *user_buf, size_t count,
 		pos += scnprintf(buf + pos, bufsz - pos, "\n");
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t
-il_dbgfs_nvm_read(struct file *file, char __user *user_buf, size_t count,
-		  loff_t *ppos)
+static ssize_t il_dbgfs_nvm_read(struct kiocb *iocb, struct iov_iter *to)
 {
 	ssize_t ret;
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int pos = 0, ofs = 0, buf_size = 0;
 	const u8 *ptr;
 	char *buf;
@@ -488,16 +474,14 @@ il_dbgfs_nvm_read(struct file *file, char __user *user_buf, size_t count,
 				 ofs, ptr + ofs);
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t
-il_dbgfs_channels_read(struct file *file, char __user *user_buf, size_t count,
-		       loff_t *ppos)
+static ssize_t il_dbgfs_channels_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	struct ieee80211_channel *channels = NULL;
 	const struct ieee80211_supported_band *supp_band = NULL;
 	int pos = 0, i, bufsz = PAGE_SIZE;
@@ -567,17 +551,15 @@ il_dbgfs_channels_read(struct file *file, char __user *user_buf, size_t count,
 				      flags & IEEE80211_CHAN_NO_IR ?
 				      "passive only" : "active/passive");
 	}
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t
-il_dbgfs_status_read(struct file *file, char __user *user_buf, size_t count,
-		     loff_t *ppos)
+static ssize_t il_dbgfs_status_read(struct kiocb *iocb, struct iov_iter *to)
 {
 
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	char buf[512];
 	int pos = 0;
 	const size_t bufsz = sizeof(buf);
@@ -630,15 +612,13 @@ il_dbgfs_status_read(struct file *file, char __user *user_buf, size_t count,
 	pos +=
 	    scnprintf(buf + pos, bufsz - pos, "S_FW_ERROR:\t %d\n",
 		      test_bit(S_FW_ERROR, &il->status));
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t
-il_dbgfs_interrupt_read(struct file *file, char __user *user_buf, size_t count,
-			loff_t *ppos)
+static ssize_t il_dbgfs_interrupt_read(struct kiocb *iocb, struct iov_iter *to)
 {
 
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int pos = 0;
 	int cnt = 0;
 	char *buf;
@@ -707,23 +687,23 @@ il_dbgfs_interrupt_read(struct file *file, char __user *user_buf, size_t count,
 	    scnprintf(buf + pos, bufsz - pos, "Unexpected INTA:\t\t %u\n",
 		      il->isr_stats.unhandled);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
 static ssize_t
-il_dbgfs_interrupt_write(struct file *file, const char __user *user_buf,
-			 size_t count, loff_t *ppos)
+il_dbgfs_interrupt_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	u32 reset_flag;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%x", &reset_flag) != 1)
 		return -EFAULT;
@@ -733,11 +713,9 @@ il_dbgfs_interrupt_write(struct file *file, const char __user *user_buf,
 	return count;
 }
 
-static ssize_t
-il_dbgfs_qos_read(struct file *file, char __user *user_buf, size_t count,
-		  loff_t *ppos)
+static ssize_t il_dbgfs_qos_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int pos = 0, i;
 	char buf[256];
 	const size_t bufsz = sizeof(buf);
@@ -755,21 +733,21 @@ il_dbgfs_qos_read(struct file *file, char __user *user_buf, size_t count,
 			      il->qos_data.def_qos_parm.ac[i].edca_txop);
 	}
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
-il_dbgfs_disable_ht40_write(struct file *file, const char __user *user_buf,
-			    size_t count, loff_t *ppos)
+il_dbgfs_disable_ht40_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int ht40;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &ht40) != 1)
 		return -EFAULT;
@@ -784,11 +762,9 @@ il_dbgfs_disable_ht40_write(struct file *file, const char __user *user_buf,
 	return count;
 }
 
-static ssize_t
-il_dbgfs_disable_ht40_read(struct file *file, char __user *user_buf,
-			   size_t count, loff_t *ppos)
+static ssize_t il_dbgfs_disable_ht40_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	char buf[100];
 	int pos = 0;
 	const size_t bufsz = sizeof(buf);
@@ -796,7 +772,7 @@ il_dbgfs_disable_ht40_read(struct file *file, char __user *user_buf,
 	pos +=
 	    scnprintf(buf + pos, bufsz - pos, "11n 40MHz Mode: %s\n",
 		      il->disable_ht40 ? "Disabled" : "Enabled");
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 DEBUGFS_READ_WRITE_FILE_OPS(sram);
@@ -808,12 +784,10 @@ DEBUGFS_READ_WRITE_FILE_OPS(interrupt);
 DEBUGFS_READ_FILE_OPS(qos);
 DEBUGFS_READ_WRITE_FILE_OPS(disable_ht40);
 
-static ssize_t
-il_dbgfs_tx_queue_read(struct file *file, char __user *user_buf, size_t count,
-		       loff_t *ppos)
+static ssize_t il_dbgfs_tx_queue_read(struct kiocb *iocb, struct iov_iter *to)
 {
 
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	struct il_tx_queue *txq;
 	struct il_queue *q;
 	char *buf;
@@ -850,17 +824,15 @@ il_dbgfs_tx_queue_read(struct file *file, char __user *user_buf, size_t count,
 			      "        stop-count: %d\n",
 			      atomic_read(&il->queue_stop_count[cnt]));
 	}
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t
-il_dbgfs_rx_queue_read(struct file *file, char __user *user_buf, size_t count,
-		       loff_t *ppos)
+static ssize_t il_dbgfs_rx_queue_read(struct kiocb *iocb, struct iov_iter *to)
 {
 
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	struct il_rx_queue *rxq = &il->rxq;
 	char buf[256];
 	int pos = 0;
@@ -881,11 +853,11 @@ il_dbgfs_rx_queue_read(struct file *file, char __user *user_buf, size_t count,
 		    scnprintf(buf + pos, bufsz - pos,
 			      "closed_rb_num: Not Allocated\n");
 	}
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
-il_dbgfs_ucode_rx_stats_read(struct file *file, char __user *user_buf,
+__il_dbgfs_ucode_rx_stats_read(struct file *file, char __user *user_buf,
 			     size_t count, loff_t *ppos)
 {
 	struct il_priv *il = file->private_data;
@@ -893,30 +865,47 @@ il_dbgfs_ucode_rx_stats_read(struct file *file, char __user *user_buf,
 	return il->debugfs_ops->rx_stats_read(file, user_buf, count, ppos);
 }
 
+static ssize_t il_dbgfs_ucode_rx_stats_read(struct kiocb *iocb,
+					    struct iov_iter *to)
+{
+	return vfs_read_iter(iocb, to, __il_dbgfs_ucode_rx_stats_read);
+}
+
 static ssize_t
-il_dbgfs_ucode_tx_stats_read(struct file *file, char __user *user_buf,
-			     size_t count, loff_t *ppos)
+__il_dbgfs_ucode_tx_stats_read(struct file *file, char __user *user_buf,
+			       size_t count, loff_t *ppos)
 {
 	struct il_priv *il = file->private_data;
 
 	return il->debugfs_ops->tx_stats_read(file, user_buf, count, ppos);
 }
 
+static ssize_t il_dbgfs_ucode_tx_stats_read(struct kiocb *iocb,
+					    struct iov_iter *to)
+{
+	return vfs_read_iter(iocb, to, __il_dbgfs_ucode_tx_stats_read);
+}
+
 static ssize_t
-il_dbgfs_ucode_general_stats_read(struct file *file, char __user *user_buf,
-				  size_t count, loff_t *ppos)
+__il_dbgfs_ucode_general_stats_read(struct file *file, char __user *user_buf,
+				    size_t count, loff_t *ppos)
 {
 	struct il_priv *il = file->private_data;
 
 	return il->debugfs_ops->general_stats_read(file, user_buf, count, ppos);
 }
 
-static ssize_t
-il_dbgfs_sensitivity_read(struct file *file, char __user *user_buf,
-			  size_t count, loff_t *ppos)
+static ssize_t il_dbgfs_ucode_general_stats_read(struct kiocb *iocb,
+						 struct iov_iter *to)
 {
+	return vfs_read_iter(iocb, to, __il_dbgfs_ucode_general_stats_read);
+}
 
-	struct il_priv *il = file->private_data;
+
+static ssize_t il_dbgfs_sensitivity_read(struct kiocb *iocb, struct iov_iter *to)
+{
+
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int pos = 0;
 	int cnt = 0;
 	char *buf;
@@ -1005,17 +994,14 @@ il_dbgfs_sensitivity_read(struct file *file, char __user *user_buf,
 	    scnprintf(buf + pos, bufsz - pos, "nrg_th_ofdm:\t\t\t %u\n",
 		      data->nrg_th_ofdm);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t
-il_dbgfs_chain_noise_read(struct file *file, char __user *user_buf,
-			  size_t count, loff_t *ppos)
+static ssize_t il_dbgfs_chain_noise_read(struct kiocb *iocb, struct iov_iter *to)
 {
-
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int pos = 0;
 	int cnt = 0;
 	char *buf;
@@ -1076,16 +1062,15 @@ il_dbgfs_chain_noise_read(struct file *file, char __user *user_buf,
 	    scnprintf(buf + pos, bufsz - pos, "state:\t\t\t\t %u\n",
 		      data->state);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t
-il_dbgfs_power_save_status_read(struct file *file, char __user *user_buf,
-				size_t count, loff_t *ppos)
+static ssize_t il_dbgfs_power_save_status_read(struct kiocb *iocb,
+					       struct iov_iter *to)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	char buf[60];
 	int pos = 0;
 	const size_t bufsz = sizeof(buf);
@@ -1102,22 +1087,21 @@ il_dbgfs_power_save_status_read(struct file *file, char __user *user_buf,
 		      (pwrsave_status == CSR_GP_REG_PHY_POWER_SAVE) ? "PHY" :
 		      "error");
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
-il_dbgfs_clear_ucode_stats_write(struct file *file,
-				 const char __user *user_buf, size_t count,
-				 loff_t *ppos)
+il_dbgfs_clear_ucode_stats_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int clear;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &clear) != 1)
 		return -EFAULT;
@@ -1130,38 +1114,31 @@ il_dbgfs_clear_ucode_stats_write(struct file *file,
 	return count;
 }
 
-static ssize_t
-il_dbgfs_rxon_flags_read(struct file *file, char __user *user_buf,
-			 size_t count, loff_t *ppos)
+static ssize_t il_dbgfs_rxon_flags_read(struct kiocb *iocb, struct iov_iter *to)
 {
-
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int len = 0;
 	char buf[20];
 
 	len = sprintf(buf, "0x%04X\n", le32_to_cpu(il->active.flags));
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
 static ssize_t
-il_dbgfs_rxon_filter_flags_read(struct file *file, char __user *user_buf,
-				size_t count, loff_t *ppos)
+il_dbgfs_rxon_filter_flags_read(struct kiocb *iocb, struct iov_iter *to)
 {
-
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int len = 0;
 	char buf[20];
 
 	len =
 	    sprintf(buf, "0x%04X\n", le32_to_cpu(il->active.filter_flags));
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
-static ssize_t
-il_dbgfs_fh_reg_read(struct file *file, char __user *user_buf, size_t count,
-		     loff_t *ppos)
+static ssize_t il_dbgfs_fh_reg_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	char *buf;
 	int pos = 0;
 	ssize_t ret = -EFAULT;
@@ -1170,8 +1147,7 @@ il_dbgfs_fh_reg_read(struct file *file, char __user *user_buf, size_t count,
 		ret = pos = il->ops->dump_fh(il, &buf, true);
 		if (buf) {
 			ret =
-			    simple_read_from_buffer(user_buf, count, ppos, buf,
-						    pos);
+			    simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 			kfree(buf);
 		}
 	}
@@ -1180,11 +1156,9 @@ il_dbgfs_fh_reg_read(struct file *file, char __user *user_buf, size_t count,
 }
 
 static ssize_t
-il_dbgfs_missed_beacon_read(struct file *file, char __user *user_buf,
-			    size_t count, loff_t *ppos)
+il_dbgfs_missed_beacon_read(struct kiocb *iocb, struct iov_iter *to)
 {
-
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[12];
 	const size_t bufsz = sizeof(buf);
@@ -1193,21 +1167,21 @@ il_dbgfs_missed_beacon_read(struct file *file, char __user *user_buf,
 	    scnprintf(buf + pos, bufsz - pos, "%d\n",
 		      il->missed_beacon_threshold);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
-il_dbgfs_missed_beacon_write(struct file *file, const char __user *user_buf,
-			     size_t count, loff_t *ppos)
+il_dbgfs_missed_beacon_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int missed;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &missed) != 1)
 		return -EINVAL;
@@ -1221,12 +1195,9 @@ il_dbgfs_missed_beacon_write(struct file *file, const char __user *user_buf,
 	return count;
 }
 
-static ssize_t
-il_dbgfs_force_reset_read(struct file *file, char __user *user_buf,
-			  size_t count, loff_t *ppos)
+static ssize_t il_dbgfs_force_reset_read(struct kiocb *iocb, struct iov_iter *to)
 {
-
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[300];
 	const size_t bufsz = sizeof(buf);
@@ -1249,35 +1220,32 @@ il_dbgfs_force_reset_read(struct file *file, char __user *user_buf,
 	    scnprintf(buf + pos, bufsz - pos, "\treset duration: %lu\n",
 		      force_reset->reset_duration);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
-il_dbgfs_force_reset_write(struct file *file, const char __user *user_buf,
-			   size_t count, loff_t *ppos)
+il_dbgfs_force_reset_write(struct kiocb *iocb, struct iov_iter *from)
 {
-
 	int ret;
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
 
 	ret = il_force_reset(il, true);
 
-	return ret ? ret : count;
+	return ret ? ret : iov_iter_count(from);
 }
 
 static ssize_t
-il_dbgfs_wd_timeout_write(struct file *file, const char __user *user_buf,
-			  size_t count, loff_t *ppos)
+il_dbgfs_wd_timeout_write(struct kiocb *iocb, struct iov_iter *from)
 {
-
-	struct il_priv *il = file->private_data;
+	struct il_priv *il = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int timeout;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &timeout) != 1)
 		return -EINVAL;
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/intel/iwlwifi/dvm/debugfs.c
index b246dbd371b3..b2ff6164fbcb 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/debugfs.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/debugfs.c
@@ -27,14 +27,14 @@
 /* file operation */
 #define DEBUGFS_READ_FILE_OPS(name)                                     \
 static const struct file_operations iwl_dbgfs_##name##_ops = {          \
-	.read = iwl_dbgfs_##name##_read,				\
+	.read_iter = iwl_dbgfs_##name##_read,				\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 };
 
 #define DEBUGFS_WRITE_FILE_OPS(name)                                    \
 static const struct file_operations iwl_dbgfs_##name##_ops = {          \
-	.write = iwl_dbgfs_##name##_write,                              \
+	.write_iter = iwl_dbgfs_##name##_write,                         \
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 };
@@ -42,15 +42,13 @@ static const struct file_operations iwl_dbgfs_##name##_ops = {          \
 
 #define DEBUGFS_READ_WRITE_FILE_OPS(name)                               \
 static const struct file_operations iwl_dbgfs_##name##_ops = {          \
-	.write = iwl_dbgfs_##name##_write,                              \
-	.read = iwl_dbgfs_##name##_read,                                \
+	.write_iter = iwl_dbgfs_##name##_write,                         \
+	.read_iter = iwl_dbgfs_##name##_read,                           \
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 };
 
-static ssize_t iwl_dbgfs_sram_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_sram_read(struct kiocb *iocb, struct iov_iter *to)
 {
 	u32 val = 0;
 	char *buf;
@@ -61,7 +59,7 @@ static ssize_t iwl_dbgfs_sram_read(struct file *file,
 	int len = 0;
 	int pos = 0;
 	int sram;
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	const struct fw_img *img;
 	size_t bufsz;
 
@@ -133,23 +131,22 @@ static ssize_t iwl_dbgfs_sram_read(struct file *file,
 	if (i)
 		pos += scnprintf(buf + pos, bufsz - pos, "\n");
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_sram_write(struct file *file,
-					const char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_sram_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[64];
 	int buf_size;
 	u32 offset, len;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 
 	if (sscanf(buf, "%x,%x", &offset, &len) == 2) {
@@ -166,24 +163,21 @@ static ssize_t iwl_dbgfs_sram_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_wowlan_sram_read(struct file *file,
-					  char __user *user_buf,
-					  size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_wowlan_sram_read(struct kiocb *iocb,
+					  struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	const struct fw_img *img = &priv->fw->img[IWL_UCODE_WOWLAN];
 
 	if (!priv->wowlan_sram)
 		return -ENODATA;
 
-	return simple_read_from_buffer(user_buf, count, ppos,
-				       priv->wowlan_sram,
-				       img->sec[IWL_UCODE_SECTION_DATA].len);
+	return simple_copy_to_iter(priv->wowlan_sram, &iocb->ki_pos,
+				   img->sec[IWL_UCODE_SECTION_DATA].len, to);
 }
-static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_stations_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	struct iwl_station_entry *station;
 	struct iwl_tid_data *tid_data;
 	char *buf;
@@ -231,18 +225,15 @@ static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
 		pos += scnprintf(buf + pos, bufsz - pos, "\n");
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_nvm_read(struct file *file,
-				       char __user *user_buf,
-				       size_t count,
-				       loff_t *ppos)
+static ssize_t iwl_dbgfs_nvm_read(struct kiocb *iocb, struct iov_iter *to)
 {
 	ssize_t ret;
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0, ofs = 0, buf_size = 0;
 	const u8 *ptr;
 	char *buf;
@@ -270,15 +261,14 @@ static ssize_t iwl_dbgfs_nvm_read(struct file *file,
 				 ofs, ptr + ofs);
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_channels_read(struct file *file, char __user *user_buf,
-				       size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_channels_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	struct ieee80211_channel *channels = NULL;
 	const struct ieee80211_supported_band *supp_band = NULL;
 	int pos = 0, i, bufsz = PAGE_SIZE;
@@ -335,16 +325,14 @@ static ssize_t iwl_dbgfs_channels_read(struct file *file, char __user *user_buf,
 					IEEE80211_CHAN_NO_IR ?
 					"passive only" : "active/passive");
 	}
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_status_read(struct file *file,
-						char __user *user_buf,
-						size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_status_read(struct kiocb *iocb, struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	char buf[512];
 	int pos = 0;
 	const size_t bufsz = sizeof(buf);
@@ -371,14 +359,13 @@ static ssize_t iwl_dbgfs_status_read(struct file *file,
 		test_bit(STATUS_POWER_PMI, &priv->status));
 	pos += scnprintf(buf + pos, bufsz - pos, "STATUS_FW_ERROR:\t %d\n",
 		test_bit(STATUS_FW_ERROR, &priv->status));
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_rx_handlers_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_rx_handlers_read(struct kiocb *iocb,
+					  struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 
 	int pos = 0;
 	int cnt = 0;
@@ -398,24 +385,23 @@ static ssize_t iwl_dbgfs_rx_handlers_read(struct file *file,
 				priv->rx_handlers_stats[cnt]);
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_rx_handlers_write(struct file *file,
-					 const char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_rx_handlers_write(struct kiocb *iocb,
+					   struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
-
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	u32 reset_flag;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%x", &reset_flag) != 1)
 		return -EFAULT;
@@ -426,10 +412,9 @@ static ssize_t iwl_dbgfs_rx_handlers_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_qos_read(struct file *file, char __user *user_buf,
-				       size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_qos_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	struct iwl_rxon_context *ctx;
 	int pos = 0, i;
 	char buf[256 * NUM_IWL_RXON_CTX];
@@ -450,14 +435,13 @@ static ssize_t iwl_dbgfs_qos_read(struct file *file, char __user *user_buf,
 		}
 		pos += scnprintf(buf + pos, bufsz - pos, "\n");
 	}
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_thermal_throttling_read(struct file *file,
-				char __user *user_buf,
-				size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_thermal_throttling_read(struct kiocb *iocb,
+				struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	struct iwl_tt_mgmt *tt = &priv->thermal_throttle;
 	struct iwl_tt_restriction *restriction;
 	char buf[100];
@@ -482,21 +466,21 @@ static ssize_t iwl_dbgfs_thermal_throttling_read(struct file *file,
 				"HT mode: %d\n",
 				restriction->is_ht);
 	}
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_disable_ht40_write(struct file *file,
-					 const char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_disable_ht40_write(struct kiocb *iocb,
+					    struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int ht40;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &ht40) != 1)
 		return -EFAULT;
@@ -508,11 +492,10 @@ static ssize_t iwl_dbgfs_disable_ht40_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_disable_ht40_read(struct file *file,
-					 char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_disable_ht40_read(struct kiocb *iocb,
+					   struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	char buf[100];
 	int pos = 0;
 	const size_t bufsz = sizeof(buf);
@@ -520,35 +503,34 @@ static ssize_t iwl_dbgfs_disable_ht40_read(struct file *file,
 	pos += scnprintf(buf + pos, bufsz - pos,
 			"11n 40MHz Mode: %s\n",
 			priv->disable_ht40 ? "Disabled" : "Enabled");
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_temperature_read(struct file *file,
-					 char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_temperature_read(struct kiocb *iocb,
+					  struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	char buf[8];
 	int pos = 0;
 	const size_t bufsz = sizeof(buf);
 
 	pos += scnprintf(buf + pos, bufsz - pos, "%d\n", priv->temperature);
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 
-static ssize_t iwl_dbgfs_sleep_level_override_write(struct file *file,
-						    const char __user *user_buf,
-						    size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_sleep_level_override_write(struct kiocb *iocb,
+						    struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int value;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 
 	if (sscanf(buf, "%d", &value) != 1)
@@ -579,11 +561,10 @@ static ssize_t iwl_dbgfs_sleep_level_override_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_sleep_level_override_read(struct file *file,
-						   char __user *user_buf,
-						   size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_sleep_level_override_read(struct kiocb *iocb,
+						   struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	char buf[10];
 	int pos, value;
 	const size_t bufsz = sizeof(buf);
@@ -594,14 +575,13 @@ static ssize_t iwl_dbgfs_sleep_level_override_read(struct file *file,
 		value += 1;
 
 	pos = scnprintf(buf, bufsz, "%d\n", value);
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_current_sleep_command_read(struct file *file,
-						    char __user *user_buf,
-						    size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_current_sleep_command_read(struct kiocb *iocb,
+						    struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	char buf[200];
 	int pos = 0, i;
 	const size_t bufsz = sizeof(buf);
@@ -618,7 +598,7 @@ static ssize_t iwl_dbgfs_current_sleep_command_read(struct file *file,
 				 "sleep_interval[%d]: %d\n", i,
 				 le32_to_cpu(cmd->sleep_interval[i]));
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 DEBUGFS_READ_WRITE_FILE_OPS(sram);
@@ -663,11 +643,10 @@ static int iwl_statistics_flag(struct iwl_priv *priv, char *buf, int bufsz)
 	return p;
 }
 
-static ssize_t iwl_dbgfs_ucode_rx_stats_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_ucode_rx_stats_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char *buf;
 	int bufsz = sizeof(struct statistics_rx_phy) * 40 +
@@ -1091,16 +1070,15 @@ static ssize_t iwl_dbgfs_ucode_rx_stats_read(struct file *file,
 
 	spin_unlock_bh(&priv->statistics.lock);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_ucode_tx_stats_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_ucode_tx_stats_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char *buf;
 	int bufsz = (sizeof(struct statistics_tx) * 48) + 250;
@@ -1288,16 +1266,15 @@ static ssize_t iwl_dbgfs_ucode_tx_stats_read(struct file *file,
 
 	spin_unlock_bh(&priv->statistics.lock);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_ucode_general_stats_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_ucode_general_stats_read(struct kiocb *iocb,
+						  struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char *buf;
 	int bufsz = sizeof(struct statistics_general) * 10 + 300;
@@ -1408,16 +1385,15 @@ static ssize_t iwl_dbgfs_ucode_general_stats_read(struct file *file,
 
 	spin_unlock_bh(&priv->statistics.lock);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_ucode_bt_stats_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_ucode_bt_stats_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
-	struct iwl_priv *priv = (struct iwl_priv *)file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char *buf;
 	int bufsz = (sizeof(struct statistics_bt_activity) * 24) + 200;
@@ -1496,16 +1472,15 @@ static ssize_t iwl_dbgfs_ucode_bt_stats_read(struct file *file,
 
 	spin_unlock_bh(&priv->statistics.lock);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_reply_tx_error_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_reply_tx_error_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
-	struct iwl_priv *priv = (struct iwl_priv *)file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char *buf;
 	int bufsz = (sizeof(struct reply_tx_error_statistics) * 24) +
@@ -1638,16 +1613,15 @@ static ssize_t iwl_dbgfs_reply_tx_error_read(struct file *file,
 	pos += scnprintf(buf + pos, bufsz - pos, "UNKNOWN:\t\t\t%u\n",
 			 priv->reply_agg_tx_stats.unknown);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_sensitivity_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_sensitivity_read(struct kiocb *iocb,
+					  struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	int cnt = 0;
 	char *buf;
@@ -1716,17 +1690,16 @@ static ssize_t iwl_dbgfs_sensitivity_read(struct file *file,
 	pos += scnprintf(buf + pos, bufsz - pos, "nrg_th_ofdm:\t\t\t %u\n",
 			data->nrg_th_ofdm);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
 
-static ssize_t iwl_dbgfs_chain_noise_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_chain_noise_read(struct kiocb *iocb,
+					  struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	int cnt = 0;
 	char *buf;
@@ -1773,16 +1746,15 @@ static ssize_t iwl_dbgfs_chain_noise_read(struct file *file,
 	pos += scnprintf(buf + pos, bufsz - pos, "state:\t\t\t\t %u\n",
 			data->state);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_power_save_status_read(struct file *file,
-						    char __user *user_buf,
-						    size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_power_save_status_read(struct kiocb *iocb,
+						struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	char buf[60];
 	int pos = 0;
 	const size_t bufsz = sizeof(buf);
@@ -1798,21 +1770,21 @@ static ssize_t iwl_dbgfs_power_save_status_read(struct file *file,
 		(pwrsave_status == CSR_GP_REG_PHY_POWER_SAVE) ? "PHY" :
 		"error");
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_clear_ucode_statistics_write(struct file *file,
-					 const char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_clear_ucode_statistics_write(struct kiocb *iocb,
+						      struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int clear;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &clear) != 1)
 		return -EFAULT;
@@ -1825,11 +1797,10 @@ static ssize_t iwl_dbgfs_clear_ucode_statistics_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_ucode_tracing_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_ucode_tracing_read(struct kiocb *iocb,
+					    struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[128];
 	const size_t bufsz = sizeof(buf);
@@ -1843,21 +1814,21 @@ static ssize_t iwl_dbgfs_ucode_tracing_read(struct file *file,
 	pos += scnprintf(buf + pos, bufsz - pos, "wraps_more_count:\t\t %u\n",
 			priv->event_log.wraps_more_count);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_ucode_tracing_write(struct file *file,
-					 const char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_ucode_tracing_write(struct kiocb *iocb,
+					     struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int trace;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &trace) != 1)
 		return -EFAULT;
@@ -1876,37 +1847,34 @@ static ssize_t iwl_dbgfs_ucode_tracing_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_rxon_flags_read(struct file *file,
-					 char __user *user_buf,
-					 size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_rxon_flags_read(struct kiocb *iocb,
+					 struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int len = 0;
 	char buf[20];
 
 	len = sprintf(buf, "0x%04X\n",
 		le32_to_cpu(priv->contexts[IWL_RXON_CTX_BSS].active.flags));
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
-static ssize_t iwl_dbgfs_rxon_filter_flags_read(struct file *file,
-						char __user *user_buf,
-						size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_rxon_filter_flags_read(struct kiocb *iocb,
+						struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int len = 0;
 	char buf[20];
 
 	len = sprintf(buf, "0x%04X\n",
 		le32_to_cpu(priv->contexts[IWL_RXON_CTX_BSS].active.filter_flags));
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
-static ssize_t iwl_dbgfs_missed_beacon_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_missed_beacon_read(struct kiocb *iocb,
+					    struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[12];
 	const size_t bufsz = sizeof(buf);
@@ -1914,21 +1882,21 @@ static ssize_t iwl_dbgfs_missed_beacon_read(struct file *file,
 	pos += scnprintf(buf + pos, bufsz - pos, "%d\n",
 			priv->missed_beacon_threshold);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_missed_beacon_write(struct file *file,
-					 const char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_missed_beacon_write(struct kiocb *iocb,
+					     struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int missed;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &missed) != 1)
 		return -EINVAL;
@@ -1943,11 +1911,10 @@ static ssize_t iwl_dbgfs_missed_beacon_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_plcp_delta_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_plcp_delta_read(struct kiocb *iocb,
+					 struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[12];
 	const size_t bufsz = sizeof(buf);
@@ -1955,21 +1922,21 @@ static ssize_t iwl_dbgfs_plcp_delta_read(struct file *file,
 	pos += scnprintf(buf + pos, bufsz - pos, "%u\n",
 			priv->plcp_delta_threshold);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_plcp_delta_write(struct file *file,
-					const char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_plcp_delta_write(struct kiocb *iocb,
+					  struct iov_iter *from)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int plcp;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &plcp) != 1)
 		return -EINVAL;
@@ -1982,11 +1949,9 @@ static ssize_t iwl_dbgfs_plcp_delta_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_rf_reset_read(struct file *file,
-				       char __user *user_buf,
-				       size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_rf_reset_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[300];
 	const size_t bufsz = sizeof(buf);
@@ -2004,32 +1969,32 @@ static ssize_t iwl_dbgfs_rf_reset_read(struct file *file,
 			"\tnumber of reset request reject: %d\n",
 			rf_reset->reset_reject_count);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_rf_reset_write(struct file *file,
-					const char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_rf_reset_write(struct kiocb *iocb,
+					struct iov_iter *from)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	int ret;
 
 	ret = iwl_force_rf_reset(priv, true);
 	return ret ? ret : count;
 }
 
-static ssize_t iwl_dbgfs_txfifo_flush_write(struct file *file,
-					const char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_txfifo_flush_write(struct kiocb *iocb,
+					    struct iov_iter *from)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int flush;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &flush) != 1)
 		return -EINVAL;
@@ -2042,18 +2007,16 @@ static ssize_t iwl_dbgfs_txfifo_flush_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_bt_traffic_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = (struct iwl_priv *)file->private_data;
+static ssize_t iwl_dbgfs_bt_traffic_read(struct kiocb *iocb, struct iov_iter *to)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[200];
 	const size_t bufsz = sizeof(buf);
 
 	if (!priv->bt_enable_flag) {
 		pos += scnprintf(buf + pos, bufsz - pos, "BT coex disabled\n");
-		return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+		return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	}
 	pos += scnprintf(buf + pos, bufsz - pos, "BT enable flag: 0x%x\n",
 		priv->bt_enable_flag);
@@ -2084,14 +2047,13 @@ static ssize_t iwl_dbgfs_bt_traffic_read(struct file *file,
 		break;
 	}
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_protection_mode_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_protection_mode_read(struct kiocb *iocb,
+					      struct iov_iter *to)
 {
-	struct iwl_priv *priv = (struct iwl_priv *)file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 
 	int pos = 0;
 	char buf[40];
@@ -2105,14 +2067,14 @@ static ssize_t iwl_dbgfs_protection_mode_read(struct file *file,
 	else
 		pos += scnprintf(buf + pos, bufsz - pos, "N/A");
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_protection_mode_write(struct file *file,
-					const char __user *user_buf,
-					size_t count, loff_t *ppos) {
-
-	struct iwl_priv *priv = file->private_data;
+static ssize_t iwl_dbgfs_protection_mode_write(struct kiocb *iocb,
+					       struct iov_iter *from)
+{
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 	int rts;
@@ -2122,7 +2084,7 @@ static ssize_t iwl_dbgfs_protection_mode_write(struct file *file,
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%d", &rts) != 1)
 		return -EINVAL;
@@ -2149,17 +2111,17 @@ static int iwl_cmd_echo_test(struct iwl_priv *priv)
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_echo_test_write(struct file *file,
-					const char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_echo_test_write(struct kiocb *iocb,
+					 struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	int buf_size;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 
 	iwl_cmd_echo_test(priv);
@@ -2167,26 +2129,24 @@ static ssize_t iwl_dbgfs_echo_test_write(struct file *file,
 }
 
 #ifdef CONFIG_IWLWIFI_DEBUG
-static ssize_t iwl_dbgfs_log_event_read(struct file *file,
-					 char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_log_event_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	char *buf = NULL;
 	ssize_t ret;
 
 	ret = iwl_dump_nic_event_log(priv, true, &buf);
 	if (ret > 0)
-		ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
+		ret = simple_copy_to_iter(buf, &iocb->ki_pos, ret, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_log_event_write(struct file *file,
-					const char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_log_event_write(struct kiocb *iocb,
+					 struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	u32 event_log_flag;
 	char buf[8];
 	int buf_size;
@@ -2197,7 +2157,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%u", &event_log_flag) != 1)
 		return -EFAULT;
@@ -2208,11 +2168,10 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
 }
 #endif
 
-static ssize_t iwl_dbgfs_calib_disabled_read(struct file *file,
-					 char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_calib_disabled_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
 	char buf[120];
 	int pos = 0;
 	const size_t bufsz = sizeof(buf);
@@ -2233,21 +2192,21 @@ static ssize_t iwl_dbgfs_calib_disabled_read(struct file *file,
 					IWL_TX_POWER_CALIB_DISABLED) ?
 			 "DISABLED" : "ENABLED");
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file,
-					      const char __user *user_buf,
-					      size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_calib_disabled_write(struct kiocb *iocb,
+					      struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	char buf[8];
 	u32 calib_disabled;
 	int buf_size;
 
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 	if (sscanf(buf, "%x", &calib_disabled) != 1)
 		return -EFAULT;
@@ -2257,11 +2216,11 @@ static ssize_t iwl_dbgfs_calib_disabled_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_fw_restart_write(struct file *file,
-					  const char __user *user_buf,
-					  size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_fw_restart_write(struct kiocb *iocb,
+					  struct iov_iter *from)
 {
-	struct iwl_priv *priv = file->private_data;
+	struct iwl_priv *priv = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	bool fw_restart = iwlwifi_mod_params.fw_restart;
 	int __maybe_unused ret;
 
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/rs.c b/drivers/net/wireless/intel/iwlwifi/dvm/rs.c
index f4a6f76cf193..64ef58cc2bc0 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/rs.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/rs.c
@@ -3037,20 +3037,20 @@ static void rs_dbgfs_set_mcs(struct iwl_lq_sta *lq_sta,
 	}
 }
 
-static ssize_t rs_sta_dbgfs_scale_table_write(struct file *file,
-			const char __user *user_buf, size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_scale_table_write(struct kiocb *iocb,
+					      struct iov_iter *from)
 {
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	struct iwl_priv *priv;
 	char buf[64];
 	size_t buf_size;
 	u32 parsed_rate;
 
-
 	priv = lq_sta->drv;
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 
 	if (sscanf(buf, "%x", &parsed_rate) == 1)
@@ -3063,8 +3063,8 @@ static ssize_t rs_sta_dbgfs_scale_table_write(struct file *file,
 	return count;
 }
 
-static ssize_t rs_sta_dbgfs_scale_table_read(struct file *file,
-			char __user *user_buf, size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_scale_table_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
 	char *buff;
 	int desc = 0;
@@ -3089,7 +3089,7 @@ static ssize_t rs_sta_dbgfs_scale_table_read(struct file *file,
 		{ "60", "64QAM 5/6"},
 	};
 
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
 	struct iwl_priv *priv;
 	struct iwl_scale_tbl_info *tbl = &(lq_sta->lq_info[lq_sta->active_tbl]);
 
@@ -3160,26 +3160,26 @@ static ssize_t rs_sta_dbgfs_scale_table_read(struct file *file,
 		}
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 	kfree(buff);
 	return ret;
 }
 
 static const struct file_operations rs_sta_dbgfs_scale_table_ops = {
-	.write = rs_sta_dbgfs_scale_table_write,
-	.read = rs_sta_dbgfs_scale_table_read,
+	.write_iter = rs_sta_dbgfs_scale_table_write,
+	.read_iter = rs_sta_dbgfs_scale_table_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
-static ssize_t rs_sta_dbgfs_stats_table_read(struct file *file,
-			char __user *user_buf, size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_stats_table_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
 	char *buff;
 	int desc = 0;
 	int i, j;
 	ssize_t ret;
 
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
 
 	buff = kmalloc(1024, GFP_KERNEL);
 	if (!buff)
@@ -3204,21 +3204,21 @@ static ssize_t rs_sta_dbgfs_stats_table_read(struct file *file,
 				lq_sta->lq_info[i].win[j].success_ratio);
 		}
 	}
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 	kfree(buff);
 	return ret;
 }
 
 static const struct file_operations rs_sta_dbgfs_stats_table_ops = {
-	.read = rs_sta_dbgfs_stats_table_read,
+	.read_iter = rs_sta_dbgfs_stats_table_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
 
-static ssize_t rs_sta_dbgfs_rate_scale_data_read(struct file *file,
-			char __user *user_buf, size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_rate_scale_data_read(struct kiocb *iocb,
+						 struct iov_iter *to)
 {
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
 	struct iwl_scale_tbl_info *tbl = &lq_sta->lq_info[lq_sta->active_tbl];
 	char buff[120];
 	int desc = 0;
@@ -3232,11 +3232,11 @@ static ssize_t rs_sta_dbgfs_rate_scale_data_read(struct file *file,
 				"Bit Rate= %d Mb/s\n",
 				iwl_rates[lq_sta->last_txrate_idx].ieee >> 1);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	return simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 }
 
 static const struct file_operations rs_sta_dbgfs_rate_scale_data_ops = {
-	.read = rs_sta_dbgfs_rate_scale_data_read,
+	.read_iter = rs_sta_dbgfs_rate_scale_data_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c b/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c
index 751a125a1566..7378c6fed447 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/debugfs.c
@@ -33,10 +33,10 @@ static int _iwl_dbgfs_##name##_open(struct inode *inode,		\
 }
 
 #define FWRT_DEBUGFS_READ_WRAPPER(name)					\
-static ssize_t _iwl_dbgfs_##name##_read(struct file *file,		\
-					char __user *user_buf,		\
-					size_t count, loff_t *ppos)	\
+static ssize_t _iwl_dbgfs_##name##_read(struct kiocb *iocb,		\
+					struct iov_iter *to)		\
 {									\
+	struct file *file = iocb->ki_filp;				\
 	struct dbgfs_##name##_data *data = file->private_data;		\
 									\
 	if (!data->read_done) {						\
@@ -48,8 +48,8 @@ static ssize_t _iwl_dbgfs_##name##_read(struct file *file,		\
 									\
 	if (data->rlen < 0)						\
 		return data->rlen;					\
-	return simple_read_from_buffer(user_buf, count, ppos,		\
-				       data->rbuf, data->rlen);		\
+	return simple_copy_to_iter(data->rbuf, &iocb->ki_pos,		\
+					data->rlen, to);		\
 }
 
 static int _iwl_dbgfs_release(struct inode *inode, struct file *file)
@@ -63,7 +63,7 @@ static int _iwl_dbgfs_release(struct inode *inode, struct file *file)
 FWRT_DEBUGFS_OPEN_WRAPPER(name, buflen, argtype)			\
 FWRT_DEBUGFS_READ_WRAPPER(name)						\
 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
-	.read = _iwl_dbgfs_##name##_read,				\
+	.read_iter = _iwl_dbgfs_##name##_read,				\
 	.open = _iwl_dbgfs_##name##_open,				\
 	.llseek = generic_file_llseek,					\
 	.release = _iwl_dbgfs_release,					\
@@ -83,15 +83,16 @@ static ssize_t _iwl_dbgfs_##name##_write(struct file *file,		\
 		return -EFAULT;						\
 									\
 	return iwl_dbgfs_##name##_write(arg, buf, buf_size);		\
-}
+}									\
+FOPS_WRITE_ITER_HELPER(_iwl_dbgfs_##name##_write);			\
 
 #define _FWRT_DEBUGFS_READ_WRITE_FILE_OPS(name, buflen, argtype)	\
 FWRT_DEBUGFS_OPEN_WRAPPER(name, buflen, argtype)			\
 FWRT_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype)			\
 FWRT_DEBUGFS_READ_WRAPPER(name)						\
 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
-	.write = _iwl_dbgfs_##name##_write,				\
-	.read = _iwl_dbgfs_##name##_read,				\
+	.write_iter = _iwl_dbgfs_##name##_write_iter,			\
+	.read_iter = _iwl_dbgfs_##name##_read,				\
 	.open = _iwl_dbgfs_##name##_open,				\
 	.llseek = generic_file_llseek,					\
 	.release = _iwl_dbgfs_release,					\
@@ -101,7 +102,7 @@ static const struct file_operations iwl_dbgfs_##name##_ops = {		\
 FWRT_DEBUGFS_OPEN_WRAPPER(name, buflen, argtype)			\
 FWRT_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype)			\
 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
-	.write = _iwl_dbgfs_##name##_write,				\
+	.write_iter = _iwl_dbgfs_##name##_write_iter,			\
 	.open = _iwl_dbgfs_##name##_open,				\
 	.llseek = generic_file_llseek,					\
 	.release = _iwl_dbgfs_release,					\
@@ -391,7 +392,7 @@ static int iwl_dbgfs_fw_info_open(struct inode *inode, struct file *filp)
 static const struct file_operations iwl_dbgfs_fw_info_ops = {
 	.owner = THIS_MODULE,
 	.open = iwl_dbgfs_fw_info_open,
-	.read = seq_read,
+	.read_iter = seq_read_iter,
 	.llseek = seq_lseek,
 	.release = seq_release_private,
 };
diff --git a/drivers/net/wireless/intel/iwlwifi/mei/main.c b/drivers/net/wireless/intel/iwlwifi/mei/main.c
index 1dd9106c6513..5ad9530659be 100644
--- a/drivers/net/wireless/intel/iwlwifi/mei/main.c
+++ b/drivers/net/wireless/intel/iwlwifi/mei/main.c
@@ -1849,9 +1849,8 @@ EXPORT_SYMBOL_GPL(iwl_mei_unregister_complete);
 #if IS_ENABLED(CONFIG_DEBUG_FS)
 
 static ssize_t
-iwl_mei_dbgfs_send_start_message_write(struct file *file,
-				       const char __user *user_buf,
-				       size_t count, loff_t *ppos)
+iwl_mei_dbgfs_send_start_message_write(struct kiocb *iocb,
+				       struct iov_iter *from)
 {
 	int ret;
 
@@ -1866,26 +1865,25 @@ iwl_mei_dbgfs_send_start_message_write(struct file *file,
 
 out:
 	mutex_unlock(&iwl_mei_mutex);
-	return ret ?: count;
+	return ret ?: iov_iter_count(from);
 }
 
 static const struct file_operations iwl_mei_dbgfs_send_start_message_ops = {
-	.write = iwl_mei_dbgfs_send_start_message_write,
+	.write_iter = iwl_mei_dbgfs_send_start_message_write,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
 
-static ssize_t iwl_mei_dbgfs_req_ownership_write(struct file *file,
-						 const char __user *user_buf,
-						 size_t count, loff_t *ppos)
+static ssize_t iwl_mei_dbgfs_req_ownership_write(struct kiocb *iocb,
+						 struct iov_iter *from)
 {
 	iwl_mei_get_ownership();
 
-	return count;
+	return iov_iter_count(from);
 }
 
 static const struct file_operations iwl_mei_dbgfs_req_ownership_ops = {
-	.write = iwl_mei_dbgfs_req_ownership_write,
+	.write_iter = iwl_mei_dbgfs_req_ownership_write,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
index 52518a47554e..1d911bbef018 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
@@ -3405,10 +3405,9 @@ static int iwl_mvm_d3_test_open(struct inode *inode, struct file *file)
 	return 0;
 }
 
-static ssize_t iwl_mvm_d3_test_read(struct file *file, char __user *user_buf,
-				    size_t count, loff_t *ppos)
+static ssize_t iwl_mvm_d3_test_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	unsigned long end = jiffies + 60 * HZ;
 	u32 pme_asserted;
 
@@ -3492,7 +3491,7 @@ static int iwl_mvm_d3_test_release(struct inode *inode, struct file *file)
 const struct file_operations iwl_dbgfs_d3_test_ops = {
 	.llseek = no_llseek,
 	.open = iwl_mvm_d3_test_open,
-	.read = iwl_mvm_d3_test_read,
+	.read_iter = iwl_mvm_d3_test_read,
 	.release = iwl_mvm_d3_test_release,
 };
 #endif
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c
index 7fe57ecd0682..ea93054caf5a 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c
@@ -132,11 +132,10 @@ static ssize_t iwl_dbgfs_pm_params_write(struct ieee80211_vif *vif, char *buf,
 	return ret ?: count;
 }
 
-static ssize_t iwl_dbgfs_tx_pwr_lmt_read(struct file *file,
-					 char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_tx_pwr_lmt_read_iter(struct kiocb *iocb,
+					      struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	char buf[64];
 	int bufsz = sizeof(buf);
 	int pos;
@@ -144,14 +143,13 @@ static ssize_t iwl_dbgfs_tx_pwr_lmt_read(struct file *file,
 	pos = scnprintf(buf, bufsz, "bss limit = %d\n",
 			vif->bss_conf.txpower);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_pm_params_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_pm_params_read_iter(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 	struct iwl_mvm *mvm = mvmvif->mvm;
 	char buf[512];
@@ -160,14 +158,13 @@ static ssize_t iwl_dbgfs_pm_params_read(struct file *file,
 
 	pos = iwl_mvm_power_mac_dbgfs_read(mvm, vif, buf, bufsz);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_mac_params_read(struct file *file,
-					 char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_mac_params_read_iter(struct kiocb *iocb,
+					      struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 	struct iwl_mvm *mvm = mvmvif->mvm;
 	u8 ap_sta_id;
@@ -244,7 +241,7 @@ static ssize_t iwl_dbgfs_mac_params_read(struct file *file,
 
 	mutex_unlock(&mvm->mutex);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static void iwl_dbgfs_update_bf(struct ieee80211_vif *vif,
@@ -389,11 +386,10 @@ static ssize_t iwl_dbgfs_bf_params_write(struct ieee80211_vif *vif, char *buf,
 	return ret ?: count;
 }
 
-static ssize_t iwl_dbgfs_bf_params_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_bf_params_read_iter(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 	char buf[256];
 	int pos = 0;
@@ -435,14 +431,13 @@ static ssize_t iwl_dbgfs_bf_params_read(struct file *file,
 	pos += scnprintf(buf+pos, bufsz-pos, "ba_enable_beacon_abort = %d\n",
 			 le32_to_cpu(cmd.ba_enable_beacon_abort));
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_os_device_timediff_read(struct file *file,
-						 char __user *user_buf,
-						 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_os_device_timediff_read_iter(struct kiocb *iocb,
+						      struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 	struct iwl_mvm *mvm = mvmvif->mvm;
 	u32 curr_gp2;
@@ -460,7 +455,7 @@ static ssize_t iwl_dbgfs_os_device_timediff_read(struct file *file,
 	diff = curr_os - curr_gp2;
 	pos += scnprintf(buf + pos, bufsz - pos, "diff=%lld\n", diff);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t iwl_dbgfs_low_latency_write(struct ieee80211_vif *vif, char *buf,
@@ -517,11 +512,10 @@ iwl_dbgfs_low_latency_force_write(struct ieee80211_vif *vif, char *buf,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_low_latency_read(struct file *file,
-					  char __user *user_buf,
-					  size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_low_latency_read_iter(struct kiocb *iocb,
+					       struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 	char format[] = "traffic=%d\ndbgfs=%d\nvcmd=%d\nvif_type=%d\n"
 			"dbgfs_force_enable=%d\ndbgfs_force=%d\nactual=%d\n";
@@ -542,20 +536,19 @@ static ssize_t iwl_dbgfs_low_latency_read(struct file *file,
 			   LOW_LATENCY_DEBUGFS_FORCE_ENABLE),
 			!!(mvmvif->low_latency & LOW_LATENCY_DEBUGFS_FORCE),
 			!!(mvmvif->low_latency_actual));
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
-static ssize_t iwl_dbgfs_uapsd_misbehaving_read(struct file *file,
-						char __user *user_buf,
-						size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_uapsd_misbehaving_read_iter(struct kiocb *iocb,
+						     struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 	char buf[20];
 	int len;
 
 	len = sprintf(buf, "%pM\n", mvmvif->uapsd_misbehaving_ap_addr);
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
 static ssize_t iwl_dbgfs_uapsd_misbehaving_write(struct ieee80211_vif *vif,
@@ -624,11 +617,10 @@ static ssize_t iwl_dbgfs_rx_phyinfo_write(struct ieee80211_vif *vif, char *buf,
 	return ret ?: count;
 }
 
-static ssize_t iwl_dbgfs_rx_phyinfo_read(struct file *file,
-					 char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_rx_phyinfo_read_iter(struct kiocb *iocb,
+					      struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 	char buf[8];
 	int len;
@@ -636,7 +628,7 @@ static ssize_t iwl_dbgfs_rx_phyinfo_read(struct file *file,
 	len = scnprintf(buf, sizeof(buf), "0x%04x\n",
 			mvmvif->mvm->dbgfs_rx_phyinfo);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
 static void iwl_dbgfs_quota_check(void *data, u8 *mac,
@@ -678,18 +670,17 @@ static ssize_t iwl_dbgfs_quota_min_write(struct ieee80211_vif *vif, char *buf,
 	return ret ?: count;
 }
 
-static ssize_t iwl_dbgfs_quota_min_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_quota_min_read_iter(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
-	struct ieee80211_vif *vif = file->private_data;
+	struct ieee80211_vif *vif = iocb->ki_filp->private_data;
 	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 	char buf[10];
 	int len;
 
 	len = scnprintf(buf, sizeof(buf), "%d\n", mvmvif->dbgfs_quota_min);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
 #define MVM_DEBUGFS_WRITE_FILE_OPS(name, bufsz) \
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c
index 79f4ac8cbc72..af0cc36aac13 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c
@@ -19,11 +19,10 @@
 #include "fw/error-dump.h"
 #include "fw/api/phy-ctxt.h"
 
-static ssize_t iwl_dbgfs_ctdp_budget_read(struct file *file,
-					  char __user *user_buf,
-					  size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_ctdp_budget_read_iter(struct kiocb *iocb,
+					       struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	char buf[16];
 	int pos, budget;
 
@@ -43,7 +42,7 @@ static ssize_t iwl_dbgfs_ctdp_budget_read(struct file *file,
 
 	pos = scnprintf(buf, sizeof(buf), "%d\n", budget);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t iwl_dbgfs_stop_ctdp_write(struct iwl_mvm *mvm, char *buf,
@@ -182,10 +181,9 @@ static ssize_t iwl_dbgfs_sta_drain_write(struct iwl_mvm *mvm, char *buf,
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_sram_read(struct file *file, char __user *user_buf,
-				   size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_sram_read_iter(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	const struct fw_img *img;
 	unsigned int ofs, len;
 	size_t ret;
@@ -210,7 +208,7 @@ static ssize_t iwl_dbgfs_sram_read(struct file *file, char __user *user_buf,
 
 	iwl_trans_read_mem_bytes(mvm->trans, ofs, ptr, len);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, ptr, len);
+	ret = simple_copy_to_iter(ptr, &iocb->ki_pos, len, to);
 
 	kfree(ptr);
 
@@ -248,11 +246,10 @@ static ssize_t iwl_dbgfs_sram_write(struct iwl_mvm *mvm, char *buf,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_set_nic_temperature_read(struct file *file,
-						  char __user *user_buf,
-						  size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_set_nic_temperature_read_iter(struct kiocb *iocb,
+						       struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	char buf[16];
 	int pos;
 
@@ -261,7 +258,7 @@ static ssize_t iwl_dbgfs_set_nic_temperature_read(struct file *file,
 	else
 		pos = scnprintf(buf, sizeof(buf), "%d\n", mvm->temperature);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 /*
@@ -315,11 +312,10 @@ static ssize_t iwl_dbgfs_set_nic_temperature_write(struct iwl_mvm *mvm,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_nic_temp_read(struct file *file,
-				       char __user *user_buf,
-				       size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_nic_temp_read_iter(struct kiocb *iocb,
+					    struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	char buf[16];
 	int pos, ret;
 	s32 temp;
@@ -336,15 +332,14 @@ static ssize_t iwl_dbgfs_nic_temp_read(struct file *file,
 
 	pos = scnprintf(buf, sizeof(buf), "%d\n", temp);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 #ifdef CONFIG_ACPI
-static ssize_t iwl_dbgfs_sar_geo_profile_read(struct file *file,
-					      char __user *user_buf,
-					      size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_sar_geo_profile_read_iter(struct kiocb *iocb,
+						   struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	char buf[256];
 	int pos = 0;
 	int bufsz = sizeof(buf);
@@ -379,14 +374,13 @@ static ssize_t iwl_dbgfs_sar_geo_profile_read(struct file *file,
 	}
 	mutex_unlock(&mvm->mutex);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_wifi_6e_enable_read(struct file *file,
-					     char __user *user_buf,
-					     size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_wifi_6e_enable_read_iter(struct kiocb *iocb,
+						  struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	int err, pos;
 	char buf[12];
 	u32 value;
@@ -397,14 +391,14 @@ static ssize_t iwl_dbgfs_wifi_6e_enable_read(struct file *file,
 
 	pos = sprintf(buf, "0x%08x\n", value);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 #endif
 
-static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
-				       size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_stations_read_iter(struct kiocb *iocb,
+					    struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	struct ieee80211_sta *sta;
 	char buf[400];
 	int i, pos = 0, bufsz = sizeof(buf);
@@ -427,7 +421,7 @@ static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
 
 	mutex_unlock(&mvm->mutex);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t iwl_dbgfs_rs_data_read(struct ieee80211_link_sta *link_sta,
@@ -524,11 +518,10 @@ static ssize_t iwl_dbgfs_amsdu_len_read(struct ieee80211_link_sta *link_sta,
 	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
 }
 
-static ssize_t iwl_dbgfs_disable_power_off_read(struct file *file,
-						char __user *user_buf,
-						size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_disable_power_off_read_iter(struct kiocb *iocb,
+						     struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	char buf[64];
 	int bufsz = sizeof(buf);
 	int pos = 0;
@@ -538,7 +531,7 @@ static ssize_t iwl_dbgfs_disable_power_off_read(struct file *file,
 	pos += scnprintf(buf+pos, bufsz-pos, "disable_power_off_d3=%d\n",
 			 mvm->disable_power_off_d3);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t iwl_dbgfs_disable_power_off_write(struct iwl_mvm *mvm, char *buf,
@@ -628,10 +621,10 @@ int iwl_mvm_coex_dump_mbox(struct iwl_bt_coex_profile_notif *notif, char *buf,
 	return pos;
 }
 
-static ssize_t iwl_dbgfs_bt_notif_read(struct file *file, char __user *user_buf,
-				       size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_bt_notif_read_iter(struct kiocb *iocb,
+					    struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	struct iwl_bt_coex_profile_notif *notif = &mvm->last_bt_notif;
 	char *buf;
 	int ret, pos = 0, bufsz = sizeof(char) * 1024;
@@ -665,17 +658,17 @@ static ssize_t iwl_dbgfs_bt_notif_read(struct file *file, char __user *user_buf,
 
 	mutex_unlock(&mvm->mutex);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 
 	return ret;
 }
 #undef BT_MBOX_PRINT
 
-static ssize_t iwl_dbgfs_bt_cmd_read(struct file *file, char __user *user_buf,
-				     size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_bt_cmd_read_iter(struct kiocb *iocb,
+					  struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	struct iwl_bt_coex_ci_cmd *cmd = &mvm->last_bt_ci_cmd;
 	char buf[256];
 	int bufsz = sizeof(buf);
@@ -693,7 +686,7 @@ static ssize_t iwl_dbgfs_bt_cmd_read(struct file *file, char __user *user_buf,
 
 	mutex_unlock(&mvm->mutex);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
@@ -748,10 +741,10 @@ iwl_dbgfs_bt_force_ant_write(struct iwl_mvm *mvm, char *buf,
 	return ret ?: count;
 }
 
-static ssize_t iwl_dbgfs_fw_ver_read(struct file *file, char __user *user_buf,
-				     size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_fw_ver_read_iter(struct kiocb *iocb,
+					  struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	char *buff, *pos, *endpos;
 	static const size_t bufsz = 1024;
 	char _fw_name_pre[FW_NAME_PRE_BUFSIZE];
@@ -773,17 +766,16 @@ static ssize_t iwl_dbgfs_fw_ver_read(struct file *file, char __user *user_buf,
 	pos += scnprintf(pos, endpos - pos, "Bus: %s\n",
 			 mvm->fwrt.dev->bus->name);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, pos - buff);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, pos - buff, to);
 	kfree(buff);
 
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_tas_get_status_read(struct file *file,
-					     char __user *user_buf,
-					     size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_tas_get_status_read_iter(struct kiocb *iocb,
+						  struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	struct iwl_mvm_tas_status_resp tas_rsp;
 	struct iwl_mvm_tas_status_resp *rsp = &tas_rsp;
 	static const size_t bufsz = 1024;
@@ -957,17 +949,16 @@ static ssize_t iwl_dbgfs_tas_get_status_read(struct file *file,
 	}
 
 out:
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, pos - buff);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, pos - buff, to);
 	kfree(buff);
 	iwl_free_resp(&hcmd);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_phy_integration_ver_read(struct file *file,
-						  char __user *user_buf,
-						  size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_phy_integration_ver_read_iter(struct kiocb *iocb,
+						       struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	char *buf;
 	size_t bufsz;
 	int pos;
@@ -981,7 +972,7 @@ static ssize_t iwl_dbgfs_phy_integration_ver_read(struct file *file,
 	pos = scnprintf(buf, bufsz, "%.*s\n", mvm->fw->phy_integration_ver_len,
 			mvm->fw->phy_integration_ver);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 
 	kfree(buf);
 	return ret;
@@ -992,11 +983,10 @@ static ssize_t iwl_dbgfs_phy_integration_ver_read(struct file *file,
 					  fmt_table, #_memb,		\
 					  le32_to_cpu(_struct->_memb))
 
-static ssize_t iwl_dbgfs_fw_rx_stats_read(struct file *file,
-					  char __user *user_buf, size_t count,
-					  loff_t *ppos)
+static ssize_t iwl_dbgfs_fw_rx_stats_read_iter(struct kiocb *iocb,
+					       struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	static const char *fmt_table = "\t%-30s %10u\n";
 	static const char *fmt_header = "%-32s\n";
 	int pos = 0;
@@ -1182,16 +1172,15 @@ static ssize_t iwl_dbgfs_fw_rx_stats_read(struct file *file,
 
 	mutex_unlock(&mvm->mutex);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 
 	return ret;
 }
 #undef PRINT_STAT_LE32
 
-static ssize_t iwl_dbgfs_fw_system_stats_read(struct file *file,
-					      char __user *user_buf,
-					      size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_fw_system_stats_read_iter(struct kiocb *iocb,
+						   struct iov_iter *to)
 {
 	char *buff, *pos, *endpos;
 	int ret;
@@ -1199,7 +1188,7 @@ static ssize_t iwl_dbgfs_fw_system_stats_read(struct file *file,
 	int i;
 	struct iwl_mvm_vif *mvmvif;
 	struct ieee80211_vif *vif;
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	u8 cmd_ver = iwl_fw_lookup_cmd_ver(mvm->fw,
 					   WIDE_ID(SYSTEM_GROUP,
 						   SYSTEM_STATISTICS_CMD),
@@ -1278,7 +1267,7 @@ static ssize_t iwl_dbgfs_fw_system_stats_read(struct file *file,
 	mutex_unlock(&mvm->mutex);
 
 send_out:
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, pos - buff);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, pos - buff, to);
 	kfree(buff);
 
 	return ret;
@@ -1360,6 +1349,7 @@ static ssize_t iwl_dbgfs_drv_rx_stats_read(struct file *file,
 	return iwl_dbgfs_frame_stats_read(mvm, user_buf, count, ppos,
 					  &mvm->drv_rx_stats);
 }
+FOPS_READ_ITER_HELPER(iwl_dbgfs_drv_rx_stats_read);
 
 static ssize_t iwl_dbgfs_fw_restart_write(struct iwl_mvm *mvm, char *buf,
 					  size_t count, loff_t *ppos)
@@ -1405,11 +1395,9 @@ static ssize_t iwl_dbgfs_fw_nmi_write(struct iwl_mvm *mvm, char *buf,
 }
 
 static ssize_t
-iwl_dbgfs_scan_ant_rxchain_read(struct file *file,
-				char __user *user_buf,
-				size_t count, loff_t *ppos)
+iwl_dbgfs_scan_ant_rxchain_read_iter(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[32];
 	const size_t bufsz = sizeof(buf);
@@ -1422,7 +1410,7 @@ iwl_dbgfs_scan_ant_rxchain_read(struct file *file,
 		pos += scnprintf(buf + pos, bufsz - pos, "B");
 	pos += scnprintf(buf + pos, bufsz - pos, " (%x)\n", mvm->scan_rx_ant);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
@@ -1653,11 +1641,10 @@ static ssize_t iwl_dbgfs_inject_beacon_ie_restore_write(struct iwl_mvm *mvm,
 	return ret ?: count;
 }
 
-static ssize_t iwl_dbgfs_fw_dbg_conf_read(struct file *file,
-					  char __user *user_buf,
-					  size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_fw_dbg_conf_read_iter(struct kiocb *iocb,
+					       struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	int conf;
 	char buf[8];
 	const size_t bufsz = sizeof(buf);
@@ -1669,7 +1656,7 @@ static ssize_t iwl_dbgfs_fw_dbg_conf_read(struct file *file,
 
 	pos += scnprintf(buf + pos, bufsz - pos, "%d\n", conf);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t iwl_dbgfs_fw_dbg_conf_write(struct iwl_mvm *mvm,
@@ -1834,6 +1821,7 @@ static ssize_t _iwl_dbgfs_link_sta_##name##_write(struct file *file,	\
 					      file,			\
 					      buf, buf_size, ppos);	\
 }									\
+FOPS_WRITE_ITER_HELPER(_iwl_dbgfs_link_sta_##name##_write);		\
 
 #define MVM_DEBUGFS_LINK_STA_READ_WRAPPER(name)		\
 static ssize_t _iwl_dbgfs_link_sta_##name##_read(struct file *file,	\
@@ -1844,11 +1832,12 @@ static ssize_t _iwl_dbgfs_link_sta_##name##_read(struct file *file,	\
 					     file,			\
 					     user_buf, count, ppos);	\
 }									\
+FOPS_READ_ITER_HELPER(_iwl_dbgfs_link_sta_##name##_read);		\
 
 #define MVM_DEBUGFS_WRITE_LINK_STA_FILE_OPS(name, bufsz)		\
 MVM_DEBUGFS_LINK_STA_WRITE_WRAPPER(name, bufsz)				\
 static const struct file_operations iwl_dbgfs_link_sta_##name##_ops = {	\
-	.write = _iwl_dbgfs_link_sta_##name##_write,			\
+	.write_iter = _iwl_dbgfs_link_sta_##name##_write_iter,		\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 }
@@ -1856,7 +1845,7 @@ static const struct file_operations iwl_dbgfs_link_sta_##name##_ops = {	\
 #define MVM_DEBUGFS_READ_LINK_STA_FILE_OPS(name)			\
 MVM_DEBUGFS_LINK_STA_READ_WRAPPER(name)					\
 static const struct file_operations iwl_dbgfs_link_sta_##name##_ops = {	\
-	.read = _iwl_dbgfs_link_sta_##name##_read,			\
+	.read_iter = _iwl_dbgfs_link_sta_##name##_read_iter,		\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 }
@@ -1865,8 +1854,8 @@ static const struct file_operations iwl_dbgfs_link_sta_##name##_ops = {	\
 MVM_DEBUGFS_LINK_STA_READ_WRAPPER(name)					\
 MVM_DEBUGFS_LINK_STA_WRITE_WRAPPER(name, bufsz)				\
 static const struct file_operations iwl_dbgfs_link_sta_##name##_ops = {	\
-	.read = _iwl_dbgfs_link_sta_##name##_read,			\
-	.write = _iwl_dbgfs_link_sta_##name##_write,			\
+	.read_iter = _iwl_dbgfs_link_sta_##name##_read_iter,		\
+	.write_iter = _iwl_dbgfs_link_sta_##name##_write_iter,		\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 }
@@ -1878,11 +1867,9 @@ static const struct file_operations iwl_dbgfs_link_sta_##name##_ops = {	\
 	MVM_DEBUGFS_ADD_LINK_STA_FILE_ALIAS(#name, name, parent, mode)
 
 static ssize_t
-iwl_dbgfs_prph_reg_read(struct file *file,
-			char __user *user_buf,
-			size_t count, loff_t *ppos)
+iwl_dbgfs_prph_reg_read_iter(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	int pos = 0;
 	char buf[32];
 	const size_t bufsz = sizeof(buf);
@@ -1894,7 +1881,7 @@ iwl_dbgfs_prph_reg_read(struct file *file,
 		mvm->dbgfs_prph_reg_addr,
 		iwl_read_prph(mvm->trans, mvm->dbgfs_prph_reg_addr));
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
@@ -2012,10 +1999,9 @@ iwl_dbgfs_he_sniffer_params_write(struct iwl_mvm *mvm, char *buf,
 }
 
 static ssize_t
-iwl_dbgfs_he_sniffer_params_read(struct file *file, char __user *user_buf,
-				 size_t count, loff_t *ppos)
+iwl_dbgfs_he_sniffer_params_read_iter(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	u8 buf[32];
 	int len;
 
@@ -2025,14 +2011,13 @@ iwl_dbgfs_he_sniffer_params_read(struct file *file, char __user *user_buf,
 			mvm->cur_bssid[1], mvm->cur_bssid[2], mvm->cur_bssid[3],
 			mvm->cur_bssid[4], mvm->cur_bssid[5]);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, len, to);
 }
 
 static ssize_t
-iwl_dbgfs_uapsd_noagg_bssids_read(struct file *file, char __user *user_buf,
-				  size_t count, loff_t *ppos)
+iwl_dbgfs_uapsd_noagg_bssids_read_iter(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	u8 buf[IWL_MVM_UAPSD_NOAGG_BSSIDS_NUM * ETH_ALEN * 3 + 1];
 	unsigned int pos = 0;
 	size_t bufsz = sizeof(buf);
@@ -2046,7 +2031,7 @@ iwl_dbgfs_uapsd_noagg_bssids_read(struct file *file, char __user *user_buf,
 
 	mutex_unlock(&mvm->mutex);
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t
@@ -2110,11 +2095,10 @@ static ssize_t iwl_dbgfs_rfi_freq_table_write(struct iwl_mvm *mvm, char *buf,
 #define IWL_RFI_BUF_SIZE (IWL_RFI_LUT_INSTALLED_SIZE *\
 				(5 + IWL_RFI_LUT_ENTRY_CHANNELS_NUM * (6 + 5)))
 
-static ssize_t iwl_dbgfs_rfi_freq_table_read(struct file *file,
-					     char __user *user_buf,
-					     size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_rfi_freq_table_read_iter(struct kiocb *iocb,
+						  struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	struct iwl_rfi_freq_table_resp_cmd *resp;
 	u32 status;
 	char buf[IWL_RFI_BUF_SIZE];
@@ -2144,7 +2128,7 @@ static ssize_t iwl_dbgfs_rfi_freq_table_read(struct file *file,
 
 out:
 	kfree(resp);
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 MVM_DEBUGFS_READ_WRITE_FILE_OPS(prph_reg, 64);
@@ -2200,12 +2184,12 @@ MVM_DEBUGFS_READ_WRITE_FILE_OPS(he_sniffer_params, 32);
 MVM_DEBUGFS_WRITE_FILE_OPS(ltr_config, 512);
 MVM_DEBUGFS_READ_WRITE_FILE_OPS(rfi_freq_table, 16);
 
-static ssize_t iwl_dbgfs_mem_read(struct file *file, char __user *user_buf,
-				  size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_mem_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
 	struct iwl_dbg_mem_access_cmd cmd = {};
 	struct iwl_dbg_mem_access_rsp *rsp;
+	size_t count = iov_iter_count(to);
 	struct iwl_host_cmd hcmd = {
 		.flags = CMD_WANT_SKB | CMD_SEND_IN_RFKILL,
 		.data = { &cmd, },
@@ -2217,12 +2201,12 @@ static ssize_t iwl_dbgfs_mem_read(struct file *file, char __user *user_buf,
 	if (!iwl_mvm_firmware_running(mvm))
 		return -EIO;
 
-	hcmd.id = WIDE_ID(DEBUG_GROUP, *ppos >> 24 ? UMAC_RD_WR : LMAC_RD_WR);
+	hcmd.id = WIDE_ID(DEBUG_GROUP, iocb->ki_pos >> 24 ? UMAC_RD_WR : LMAC_RD_WR);
 	cmd.op = cpu_to_le32(DEBUG_MEM_OP_READ);
 
 	/* Take care of alignment of both the position and the length */
-	delta = *ppos & 0x3;
-	cmd.addr = cpu_to_le32(*ppos - delta);
+	delta = iocb->ki_pos & 0x3;
+	cmd.addr = cpu_to_le32(iocb->ki_pos - delta);
 	cmd.len = cpu_to_le32(min(ALIGN(count + delta, 4) / 4,
 				  (size_t)DEBUG_MEM_MAX_SIZE_DWORDS));
 
@@ -2252,19 +2236,18 @@ static ssize_t iwl_dbgfs_mem_read(struct file *file, char __user *user_buf,
 		goto out;
 	}
 
-	ret = len - copy_to_user(user_buf, (u8 *)rsp->data + delta, len);
-	*ppos += ret;
+	ret = copy_to_iter((u8 *)rsp->data + delta, len, to);
+	iocb->ki_pos += ret;
 
 out:
 	iwl_free_resp(&hcmd);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_mem_write(struct file *file,
-				   const char __user *user_buf, size_t count,
-				   loff_t *ppos)
+static ssize_t iwl_dbgfs_mem_write(struct kiocb *iocb, struct iov_iter *from)
 {
-	struct iwl_mvm *mvm = file->private_data;
+	struct iwl_mvm *mvm = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	struct iwl_dbg_mem_access_cmd *cmd;
 	struct iwl_dbg_mem_access_rsp *rsp;
 	struct iwl_host_cmd hcmd = {};
@@ -2276,11 +2259,11 @@ static ssize_t iwl_dbgfs_mem_write(struct file *file,
 	if (!iwl_mvm_firmware_running(mvm))
 		return -EIO;
 
-	hcmd.id = WIDE_ID(DEBUG_GROUP, *ppos >> 24 ? UMAC_RD_WR : LMAC_RD_WR);
+	hcmd.id = WIDE_ID(DEBUG_GROUP, iocb->ki_pos >> 24 ? UMAC_RD_WR : LMAC_RD_WR);
 
-	if (*ppos & 0x3 || count < 4) {
+	if (iocb->ki_pos & 0x3 || count < 4) {
 		op = DEBUG_MEM_OP_WRITE_BYTES;
-		len = min(count, (size_t)(4 - (*ppos & 0x3)));
+		len = min(count, (size_t)(4 - (iocb->ki_pos & 0x3)));
 		data_size = len;
 	} else {
 		op = DEBUG_MEM_OP_WRITE;
@@ -2295,8 +2278,8 @@ static ssize_t iwl_dbgfs_mem_write(struct file *file,
 
 	cmd->op = cpu_to_le32(op);
 	cmd->len = cpu_to_le32(len);
-	cmd->addr = cpu_to_le32(*ppos);
-	if (copy_from_user((void *)cmd->data, user_buf, data_size)) {
+	cmd->addr = cpu_to_le32(iocb->ki_pos);
+	if (!copy_from_iter_full((void *)cmd->data, data_size, from)) {
 		kfree(cmd);
 		return -EFAULT;
 	}
@@ -2326,7 +2309,7 @@ static ssize_t iwl_dbgfs_mem_write(struct file *file,
 	}
 
 	ret = data_size;
-	*ppos += ret;
+	iocb->ki_pos += ret;
 
 out:
 	iwl_free_resp(&hcmd);
@@ -2334,8 +2317,8 @@ static ssize_t iwl_dbgfs_mem_write(struct file *file,
 }
 
 static const struct file_operations iwl_dbgfs_mem_ops = {
-	.read = iwl_dbgfs_mem_read,
-	.write = iwl_dbgfs_mem_write,
+	.read_iter = iwl_dbgfs_mem_read,
+	.write_iter = iwl_dbgfs_mem_write,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.h b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.h
index cc2c45b45ddc..911c4f97709d 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.h
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.h
@@ -6,7 +6,7 @@
  */
 #define MVM_DEBUGFS_READ_FILE_OPS(name)					\
 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
-	.read = iwl_dbgfs_##name##_read,				\
+	.read_iter = iwl_dbgfs_##name##_read_iter,			\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 }
@@ -25,12 +25,13 @@ static ssize_t _iwl_dbgfs_##name##_write(struct file *file,		\
 									\
 	return iwl_dbgfs_##name##_write(arg, buf, buf_size, ppos);	\
 }									\
+FOPS_WRITE_ITER_HELPER(_iwl_dbgfs_##name##_write);			\
 
 #define _MVM_DEBUGFS_READ_WRITE_FILE_OPS(name, buflen, argtype)		\
 MVM_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype)			\
 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
-	.write = _iwl_dbgfs_##name##_write,				\
-	.read = iwl_dbgfs_##name##_read,				\
+	.write_iter = _iwl_dbgfs_##name##_write_iter,			\
+	.read_iter = iwl_dbgfs_##name##_read_iter,			\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 };
@@ -38,7 +39,7 @@ static const struct file_operations iwl_dbgfs_##name##_ops = {		\
 #define _MVM_DEBUGFS_WRITE_FILE_OPS(name, buflen, argtype)		\
 MVM_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype)			\
 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
-	.write = _iwl_dbgfs_##name##_write,				\
+	.write_iter = _iwl_dbgfs_##name##_write_iter,			\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 };
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
index a8c4e354e2ce..d034eff48c37 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
@@ -3720,10 +3720,11 @@ static void rs_program_fix_rate(struct iwl_mvm *mvm,
 	}
 }
 
-static ssize_t rs_sta_dbgfs_scale_table_write(struct file *file,
-			const char __user *user_buf, size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_scale_table_write(struct kiocb *iocb,
+					      struct iov_iter *from)
 {
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
+	size_t count = iov_iter_count(from);
 	struct iwl_mvm *mvm;
 	char buf[64];
 	size_t buf_size;
@@ -3732,7 +3733,7 @@ static ssize_t rs_sta_dbgfs_scale_table_write(struct file *file,
 	mvm = lq_sta->pers.drv;
 	memset(buf, 0, sizeof(buf));
 	buf_size = min(count, sizeof(buf) -  1);
-	if (copy_from_user(buf, user_buf, buf_size))
+	if (!copy_from_iter_full(buf, buf_size, from))
 		return -EFAULT;
 
 	if (sscanf(buf, "%x", &parsed_rate) == 1)
@@ -3745,8 +3746,8 @@ static ssize_t rs_sta_dbgfs_scale_table_write(struct file *file,
 	return count;
 }
 
-static ssize_t rs_sta_dbgfs_scale_table_read(struct file *file,
-			char __user *user_buf, size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_scale_table_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
 	char *buff;
 	int desc = 0;
@@ -3754,7 +3755,7 @@ static ssize_t rs_sta_dbgfs_scale_table_read(struct file *file,
 	ssize_t ret;
 	static const size_t bufsz = 2048;
 
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
 	struct iwl_mvm_sta *mvmsta =
 		container_of(lq_sta, struct iwl_mvm_sta, deflink.lq_sta.rs_drv);
 	struct iwl_mvm *mvm;
@@ -3840,19 +3841,19 @@ static ssize_t rs_sta_dbgfs_scale_table_read(struct file *file,
 			buff[desc++] = '\n';
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 	kfree(buff);
 	return ret;
 }
 
 static const struct file_operations rs_sta_dbgfs_scale_table_ops = {
-	.write = rs_sta_dbgfs_scale_table_write,
-	.read = rs_sta_dbgfs_scale_table_read,
+	.write_iter = rs_sta_dbgfs_scale_table_write,
+	.read_iter = rs_sta_dbgfs_scale_table_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
-static ssize_t rs_sta_dbgfs_stats_table_read(struct file *file,
-			char __user *user_buf, size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_stats_table_read(struct kiocb *iocb,
+					     struct iov_iter *to)
 {
 	char *buff;
 	int desc = 0;
@@ -3860,7 +3861,7 @@ static ssize_t rs_sta_dbgfs_stats_table_read(struct file *file,
 	ssize_t ret;
 	struct iwl_scale_tbl_info *tbl;
 	struct rs_rate *rate;
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
 
 	buff = kmalloc(1024, GFP_KERNEL);
 	if (!buff)
@@ -3888,20 +3889,19 @@ static ssize_t rs_sta_dbgfs_stats_table_read(struct file *file,
 				tbl->win[j].success_ratio);
 		}
 	}
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, desc);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, desc, to);
 	kfree(buff);
 	return ret;
 }
 
 static const struct file_operations rs_sta_dbgfs_stats_table_ops = {
-	.read = rs_sta_dbgfs_stats_table_read,
+	.read_iter = rs_sta_dbgfs_stats_table_read,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
 
-static ssize_t rs_sta_dbgfs_drv_tx_stats_read(struct file *file,
-					      char __user *user_buf,
-					      size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_drv_tx_stats_read(struct kiocb *iocb,
+					      struct iov_iter *to)
 {
 	static const char * const column_name[] = {
 		[RS_COLUMN_LEGACY_ANT_A] = "LEGACY_ANT_A",
@@ -3937,7 +3937,7 @@ static ssize_t rs_sta_dbgfs_drv_tx_stats_read(struct file *file,
 	char *buff, *pos, *endpos;
 	int col, rate;
 	ssize_t ret;
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
 	struct rs_rate_stats *stats;
 	static const size_t bufsz = 1024;
 
@@ -3967,33 +3967,31 @@ static ssize_t rs_sta_dbgfs_drv_tx_stats_read(struct file *file,
 		pos += scnprintf(pos, endpos - pos, "\n");
 	}
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buff, pos - buff);
+	ret = simple_copy_to_iter(buff, &iocb->ki_pos, pos - buff, to);
 	kfree(buff);
 	return ret;
 }
 
-static ssize_t rs_sta_dbgfs_drv_tx_stats_write(struct file *file,
-					       const char __user *user_buf,
-					       size_t count, loff_t *ppos)
+static ssize_t rs_sta_dbgfs_drv_tx_stats_write(struct kiocb *iocb,
+					       struct iov_iter *from)
 {
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
 	memset(lq_sta->pers.tx_stats, 0, sizeof(lq_sta->pers.tx_stats));
 
-	return count;
+	return iov_iter_count(from);
 }
 
 static const struct file_operations rs_sta_dbgfs_drv_tx_stats_ops = {
-	.read = rs_sta_dbgfs_drv_tx_stats_read,
-	.write = rs_sta_dbgfs_drv_tx_stats_write,
+	.read_iter = rs_sta_dbgfs_drv_tx_stats_read,
+	.write_iter = rs_sta_dbgfs_drv_tx_stats_write,
 	.open = simple_open,
 	.llseek = default_llseek,
 };
 
-static ssize_t iwl_dbgfs_ss_force_read(struct file *file,
-				       char __user *user_buf,
-				       size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_ss_force_read_iter(struct kiocb *iocb,
+					    struct iov_iter *to)
 {
-	struct iwl_lq_sta *lq_sta = file->private_data;
+	struct iwl_lq_sta *lq_sta = iocb->ki_filp->private_data;
 	char buf[12];
 	int bufsz = sizeof(buf);
 	int pos = 0;
@@ -4006,7 +4004,7 @@ static ssize_t iwl_dbgfs_ss_force_read(struct file *file,
 
 	pos += scnprintf(buf+pos, bufsz-pos, "%s\n",
 			 ss_force_name[lq_sta->pers.ss_force]);
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
 static ssize_t iwl_dbgfs_ss_force_write(struct iwl_lq_sta *lq_sta, char *buf,
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
index 6c76b2dd6878..b4e057adcdfe 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
@@ -2574,22 +2574,22 @@ void iwl_pcie_dump_csr(struct iwl_trans *trans)
 /* file operation */
 #define DEBUGFS_READ_FILE_OPS(name)					\
 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
-	.read = iwl_dbgfs_##name##_read,				\
+	.read_iter = iwl_dbgfs_##name##_read,				\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 };
 
 #define DEBUGFS_WRITE_FILE_OPS(name)                                    \
 static const struct file_operations iwl_dbgfs_##name##_ops = {          \
-	.write = iwl_dbgfs_##name##_write,                              \
+	.write_iter = iwl_dbgfs_##name##_write_iter,                    \
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 };
 
 #define DEBUGFS_READ_WRITE_FILE_OPS(name)				\
 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
-	.write = iwl_dbgfs_##name##_write,				\
-	.read = iwl_dbgfs_##name##_read,				\
+	.write_iter = iwl_dbgfs_##name##_write_iter,			\
+	.read_iter = iwl_dbgfs_##name##_read,				\
 	.open = simple_open,						\
 	.llseek = generic_file_llseek,					\
 };
@@ -2684,11 +2684,9 @@ static int iwl_dbgfs_tx_queue_open(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static ssize_t iwl_dbgfs_rx_queue_read(struct file *file,
-				       char __user *user_buf,
-				       size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_rx_queue_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_trans *trans = file->private_data;
+	struct iwl_trans *trans = iocb->ki_filp->private_data;
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 	char *buf;
 	int pos = 0, i, ret;
@@ -2727,17 +2725,15 @@ static ssize_t iwl_dbgfs_rx_queue_read(struct file *file,
 					 "\tclosed_rb_num: Not Allocated\n");
 		}
 	}
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_interrupt_read(struct file *file,
-					char __user *user_buf,
-					size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_interrupt_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_trans *trans = file->private_data;
+	struct iwl_trans *trans = iocb->ki_filp->private_data;
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 	struct isr_statistics *isr_stats = &trans_pcie->isr_stats;
 
@@ -2786,22 +2782,22 @@ static ssize_t iwl_dbgfs_interrupt_read(struct file *file,
 	pos += scnprintf(buf + pos, bufsz - pos, "Unexpected INTA:\t\t %u\n",
 		isr_stats->unhandled);
 
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_interrupt_write(struct file *file,
-					 const char __user *user_buf,
-					 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_interrupt_write_iter(struct kiocb *iocb,
+					      struct iov_iter *from)
 {
-	struct iwl_trans *trans = file->private_data;
+	struct iwl_trans *trans = iocb->ki_filp->private_data;
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 	struct isr_statistics *isr_stats = &trans_pcie->isr_stats;
+	size_t count = iov_iter_count(from);
 	u32 reset_flag;
 	int ret;
 
-	ret = kstrtou32_from_user(user_buf, count, 16, &reset_flag);
+	ret = kstrtou32_from_iter(from, count, 16, &reset_flag);
 	if (ret)
 		return ret;
 	if (reset_flag == 0)
@@ -2810,22 +2806,19 @@ static ssize_t iwl_dbgfs_interrupt_write(struct file *file,
 	return count;
 }
 
-static ssize_t iwl_dbgfs_csr_write(struct file *file,
-				   const char __user *user_buf,
-				   size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_csr_write_iter(struct kiocb *iocb,
+					struct iov_iter *from)
 {
-	struct iwl_trans *trans = file->private_data;
+	struct iwl_trans *trans = iocb->ki_filp->private_data;
 
 	iwl_pcie_dump_csr(trans);
 
-	return count;
+	return iov_iter_count(from);
 }
 
-static ssize_t iwl_dbgfs_fh_reg_read(struct file *file,
-				     char __user *user_buf,
-				     size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_fh_reg_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_trans *trans = file->private_data;
+	struct iwl_trans *trans = iocb->ki_filp->private_data;
 	char *buf = NULL;
 	ssize_t ret;
 
@@ -2834,16 +2827,14 @@ static ssize_t iwl_dbgfs_fh_reg_read(struct file *file,
 		return ret;
 	if (!buf)
 		return -EINVAL;
-	ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret);
+	ret = simple_copy_to_iter(buf, &iocb->ki_pos, ret, to);
 	kfree(buf);
 	return ret;
 }
 
-static ssize_t iwl_dbgfs_rfkill_read(struct file *file,
-				     char __user *user_buf,
-				     size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_rfkill_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_trans *trans = file->private_data;
+	struct iwl_trans *trans = iocb->ki_filp->private_data;
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 	char buf[100];
 	int pos;
@@ -2853,19 +2844,19 @@ static ssize_t iwl_dbgfs_rfkill_read(struct file *file,
 			!(iwl_read32(trans, CSR_GP_CNTRL) &
 				CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW));
 
-	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
+	return simple_copy_to_iter(buf, &iocb->ki_pos, pos, to);
 }
 
-static ssize_t iwl_dbgfs_rfkill_write(struct file *file,
-				      const char __user *user_buf,
-				      size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_rfkill_write_iter(struct kiocb *iocb,
+					   struct iov_iter *from)
 {
-	struct iwl_trans *trans = file->private_data;
+	struct iwl_trans *trans = iocb->ki_filp->private_data;
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
+	size_t count = iov_iter_count(from);
 	bool new_value;
 	int ret;
 
-	ret = kstrtobool_from_user(user_buf, count, &new_value);
+	ret = kstrtobool_from_iter(from, count, &new_value);
 	if (ret)
 		return ret;
 	if (new_value == trans_pcie->debug_rfkill)
@@ -3008,20 +2999,18 @@ static ssize_t iwl_dbgfs_monitor_data_read(struct file *file,
 
 	return bytes_copied;
 }
+FOPS_READ_ITER_HELPER(iwl_dbgfs_monitor_data_read);
 
-static ssize_t iwl_dbgfs_rf_read(struct file *file,
-				 char __user *user_buf,
-				 size_t count, loff_t *ppos)
+static ssize_t iwl_dbgfs_rf_read(struct kiocb *iocb, struct iov_iter *to)
 {
-	struct iwl_trans *trans = file->private_data;
+	struct iwl_trans *trans = iocb->ki_filp->private_data;
 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
 
 	if (!trans_pcie->rf_name[0])
 		return -ENODEV;
 
-	return simple_read_from_buffer(user_buf, count, ppos,
-				       trans_pcie->rf_name,
-				       strlen(trans_pcie->rf_name));
+	return simple_copy_to_iter(trans_pcie->rf_name, &iocb->ki_pos,
+				       strlen(trans_pcie->rf_name), to);
 }
 
 DEBUGFS_READ_WRITE_FILE_OPS(interrupt);
@@ -3034,13 +3023,13 @@ DEBUGFS_READ_FILE_OPS(rf);
 static const struct file_operations iwl_dbgfs_tx_queue_ops = {
 	.owner = THIS_MODULE,
 	.open = iwl_dbgfs_tx_queue_open,
-	.read = seq_read,
+	.read_iter = seq_read_iter,
 	.llseek = seq_lseek,
 	.release = seq_release_private,
 };
 
 static const struct file_operations iwl_dbgfs_monitor_data_ops = {
-	.read = iwl_dbgfs_monitor_data_read,
+	.read_iter = iwl_dbgfs_monitor_data_read_iter,
 	.open = iwl_dbgfs_monitor_data_open,
 	.release = iwl_dbgfs_monitor_data_release,
 };
-- 
2.43.0


  parent reply	other threads:[~2024-04-11 15:39 UTC|newest]

Thread overview: 451+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-11 15:12 [PATCHSET RFC 0/437] Kill off old fops ->read() and ->write() Jens Axboe
2024-04-11 15:12 ` [PATCH 001/437] fs: split do_loop_readv_writev() into separate read/write side helpers Jens Axboe
2024-04-11 15:12 ` [PATCH 002/437] fs: add generic read/write iterator helpers Jens Axboe
2024-04-15 19:55   ` Al Viro
2024-04-15 20:11     ` Jens Axboe
2024-04-15 21:08       ` Al Viro
2024-04-15 21:16         ` Jens Axboe
2024-04-15 23:42           ` Al Viro
2024-04-16 20:14     ` David Laight
2024-04-11 15:12 ` [PATCH 003/437] fs: add helpers for defining " Jens Axboe
2024-04-11 15:12 ` [PATCH 004/437] fs: add simple_copy_{to,from}_iter() helpers Jens Axboe
2024-04-11 15:12 ` [PATCH 005/437] uio: add get/put_iter helpers Jens Axboe
2024-04-11 15:12 ` [PATCH 006/437] fs: add uio.h to fs.h Jens Axboe
2024-04-11 15:12 ` [PATCH 007/437] mm/util: add iterdup_nul() and iterdup() helpers Jens Axboe
2024-04-11 15:12 ` [PATCH 008/437] kstrtox: add iov_iter versions of the string conversion helpers Jens Axboe
2024-04-11 15:12 ` [PATCH 009/437] lib/string_helpers: split __parse_int_array() into a helper Jens Axboe
2024-04-11 15:12 ` [PATCH 010/437] lib/string_helpers: add parse_int_array_iter() Jens Axboe
2024-04-11 15:12 ` [PATCH 011/437] virtio_console: convert to read/write iterator helpers Jens Axboe
2024-04-11 15:12 ` [PATCH 012/437] char/adi: convert to read/write iterators Jens Axboe
2024-04-11 15:12 ` [PATCH 013/437] char/apm-emulation: " Jens Axboe
2024-04-11 15:12 ` [PATCH 014/437] char/applicom: " Jens Axboe
2024-04-11 15:12 ` [PATCH 015/437] char/nsc_gpio: " Jens Axboe
2024-04-11 15:12 ` [PATCH 016/437] char/dsp1620: " Jens Axboe
2024-04-11 15:12 ` [PATCH 017/437] char/dsp56k: " Jens Axboe
2024-04-11 15:12 ` [PATCH 018/437] char/dtlk: " Jens Axboe
2024-04-11 15:12 ` [PATCH 019/437] char/hpet: " Jens Axboe
2024-04-11 15:12 ` [PATCH 020/437] char/hw_random: " Jens Axboe
2024-04-11 15:12 ` [PATCH 021/437] char/ipmi: " Jens Axboe
2024-04-11 15:12 ` [PATCH 022/437] char/tpm: " Jens Axboe
2024-04-11 15:12 ` [PATCH 023/437] char/lp: " Jens Axboe
2024-04-11 15:12 ` [PATCH 024/437] char/mem: " Jens Axboe
2024-04-11 15:12 ` [PATCH 025/437] char/mwave: " Jens Axboe
2024-04-11 15:12 ` [PATCH 026/437] char/nvram: " Jens Axboe
2024-04-11 15:12 ` [PATCH 027/437] char/nwbutton: " Jens Axboe
2024-04-11 15:12 ` [PATCH 028/437] char/nwflash: " Jens Axboe
2024-04-11 15:12 ` [PATCH 029/437] char/pc8736x_gpio: " Jens Axboe
2024-04-11 15:12 ` [PATCH 030/437] char/powernv-op-panel: " Jens Axboe
2024-04-11 15:12 ` [PATCH 031/437] char/ppdev: " Jens Axboe
2024-04-11 15:12 ` [PATCH 032/437] char/ps3flash: " Jens Axboe
2024-04-11 15:12 ` [PATCH 033/437] char/scx200_gpio: " Jens Axboe
2024-04-11 15:12 ` [PATCH 034/437] char/sonypi: " Jens Axboe
2024-04-11 15:12 ` [PATCH 035/437] char/tlclk: " Jens Axboe
2024-04-11 15:12 ` [PATCH 036/437] char/xilinx_hwicap: " Jens Axboe
2024-04-11 15:12 ` [PATCH 037/437] char/xillybus: " Jens Axboe
2024-04-11 15:12 ` [PATCH 038/437] debugfs: convert to ->read_iter() Jens Axboe
2024-04-11 15:12 ` [PATCH 039/437] libfs: switch to read iter and add copy helpers Jens Axboe
2024-04-11 15:13 ` [PATCH 040/437] fs: convert generic_read_dir() to ->read_iter() Jens Axboe
2024-04-11 15:13 ` [PATCH 041/437] fs: convert any user of fops->read() for seq_read to read_iter Jens Axboe
2024-04-11 15:13 ` [PATCH 042/437] ceph: convert read_dir handler to read_iter() Jens Axboe
2024-04-11 15:13 ` [PATCH 043/437] ecryptfs: miscdev: convert to read/write iterators Jens Axboe
2024-04-11 15:13 ` [PATCH 044/437] ocfs2: " Jens Axboe
2024-04-11 15:13 ` [PATCH 045/437] orangefs: " Jens Axboe
2024-04-11 15:13 ` [PATCH 046/437] dlm: " Jens Axboe
2024-04-11 15:13 ` [PATCH 047/437] tracefs: " Jens Axboe
2024-04-11 15:13 ` [PATCH 048/437] ubifs: " Jens Axboe
2024-04-11 15:13 ` [PATCH 049/437] fuse: " Jens Axboe
2024-04-11 15:13 ` [PATCH 050/437] staging: convert drivers " Jens Axboe
2024-04-11 15:13 ` [PATCH 051/437] Bluetooth: convert " Jens Axboe
2024-04-11 15:13 ` [PATCH 052/437] net: mac80211: " Jens Axboe
2024-04-11 15:13 ` [PATCH 053/437] net: 6lowpan: convert debugfs " Jens Axboe
2024-04-11 15:13 ` [PATCH 054/437] net: sunrpc: convert " Jens Axboe
2024-04-11 15:13 ` [PATCH 055/437] net: wireless: " Jens Axboe
2024-04-11 15:13 ` [PATCH 056/437] net: rfkill: " Jens Axboe
2024-04-11 15:13 ` [PATCH 057/437] net: l2tp: " Jens Axboe
2024-04-11 15:13 ` [PATCH 058/437] fs: add IOCB_VECTORED flags Jens Axboe
2024-04-11 15:13 ` [PATCH 059/437] ALSA: core: convert to read/write iterators Jens Axboe
2024-04-11 15:13 ` [PATCH 060/437] ASoC: Intel: " Jens Axboe
2024-04-11 15:13 ` [PATCH 061/437] ASoC: fsl: " Jens Axboe
2024-04-11 15:13 ` [PATCH 062/437] ALSA: pcmtest: " Jens Axboe
2024-04-11 15:13 ` [PATCH 063/437] sound/oss/dmasound: " Jens Axboe
2024-04-11 15:13 ` [PATCH 064/437] ASoC: SOF: icp3-dtrace: " Jens Axboe
2024-04-11 15:13 ` [PATCH 065/437] SoC: SOF: icp4: " Jens Axboe
2024-04-11 15:13 ` [PATCH 066/437] ASoC: SOF: Core: " Jens Axboe
2024-04-11 15:13 ` [PATCH 067/437] ASoC: SOF: " Jens Axboe
2024-04-11 15:13 ` [PATCH 068/437] block: " Jens Axboe
2024-04-11 15:13 ` [PATCH 069/437] bpf: " Jens Axboe
2024-04-11 15:13 ` [PATCH 070/437] perf: convert events " Jens Axboe
2024-04-11 15:13 ` [PATCH 071/437] dma-debug: convert " Jens Axboe
2024-04-11 15:13 ` [PATCH 072/437] kernel/fail_function: " Jens Axboe
2024-04-11 15:13 ` [PATCH 073/437] kcsan: " Jens Axboe
2024-04-11 15:13 ` [PATCH 074/437] module: " Jens Axboe
2024-04-11 15:13 ` [PATCH 075/437] kernel/power: " Jens Axboe
2024-04-11 15:13 ` [PATCH 076/437] printk: " Jens Axboe
2024-04-11 15:13 ` [PATCH 077/437] relay: " Jens Axboe
2024-04-11 15:13 ` [PATCH 078/437] kernel/time: " Jens Axboe
2024-04-11 15:13 ` [PATCH 079/437] rv: " Jens Axboe
2024-04-11 15:13 ` [PATCH 080/437] tracing: " Jens Axboe
2024-04-11 15:13 ` [PATCH 081/437] gcov: " Jens Axboe
2024-04-11 15:13 ` [PATCH 082/437] sched/debug: " Jens Axboe
2024-04-11 15:13 ` [PATCH 083/437] kernel/irq: convert debugfs helpers " Jens Axboe
2024-04-11 15:13 ` [PATCH 084/437] locking/lock_events: convert " Jens Axboe
2024-04-11 15:13 ` [PATCH 085/437] kprobes: " Jens Axboe
2024-04-11 15:13 ` [PATCH 086/437] fs: add iterator based version of simple_transaction_read() Jens Axboe
2024-04-11 15:13 ` [PATCH 087/437] tomoyo: convert to read/write iterators Jens Axboe
2024-04-11 15:13 ` [PATCH 088/437] smack: " Jens Axboe
2024-04-11 15:13 ` [PATCH 089/437] apparmor: " Jens Axboe
2024-04-11 15:13 ` [PATCH 090/437] landlock: " Jens Axboe
2024-04-11 15:13 ` [PATCH 091/437] lsm: " Jens Axboe
2024-04-11 15:13 ` [PATCH 092/437] selinux: " Jens Axboe
2024-04-11 15:13 ` [PATCH 093/437] integrity: " Jens Axboe
2024-04-11 15:13 ` [PATCH 094/437] lockdown: " Jens Axboe
2024-04-11 15:13 ` [PATCH 095/437] security: " Jens Axboe
2024-04-11 15:13 ` [PATCH 096/437] mm: " Jens Axboe
2024-04-11 15:13 ` [PATCH 097/437] aoe: " Jens Axboe
2024-04-11 15:13 ` [PATCH 098/437] drbd: " Jens Axboe
2024-04-11 15:13 ` [PATCH 099/437] mtip32xx: " Jens Axboe
2024-04-11 15:14 ` [PATCH 100/437] zram: " Jens Axboe
2024-04-11 15:14 ` [PATCH 101/437] s390/dasd: " Jens Axboe
2024-04-11 15:14 ` [PATCH 102/437] lib: " Jens Axboe
2024-04-11 15:14 ` [PATCH 103/437] ipc: " Jens Axboe
2024-04-11 15:14 ` [PATCH 104/437] drivers/accel: " Jens Axboe
2024-04-11 15:14 ` [PATCH 105/437] drivers/acpi: " Jens Axboe
2024-04-11 15:14 ` [PATCH 106/437] crypto: hisilicon: " Jens Axboe
2024-04-11 15:14 ` [PATCH 107/437] crypto: iaa: " Jens Axboe
2024-04-11 15:14 ` [PATCH 108/437] crypto: qat: " Jens Axboe
2024-04-11 15:14 ` [PATCH 109/437] crypto: cpp: " Jens Axboe
2024-04-11 15:14 ` [PATCH 110/437] fs/pstore: " Jens Axboe
2024-04-11 15:14 ` [PATCH 111/437] drivers/gpio: convert to ->read_iter and ->write_iter Jens Axboe
2024-04-11 15:14 ` [PATCH 112/437] drivers/bluetooth: convert to read/write iterators Jens Axboe
2024-04-11 15:14 ` [PATCH 113/437] drivers/ras: " Jens Axboe
2024-04-11 15:14 ` [PATCH 114/437] fs/efivars: " Jens Axboe
2024-04-11 15:14 ` [PATCH 115/437] drivers/comedi: " Jens Axboe
2024-04-11 15:14 ` [PATCH 116/437] drivers/counter: " Jens Axboe
2024-04-11 15:14 ` [PATCH 117/437] drivers/hid: " Jens Axboe
2024-04-11 15:14 ` [PATCH 118/437] drivers/tty: convert to ->read_iter and ->write_iter Jens Axboe
2024-04-11 15:14 ` [PATCH 119/437] drivers/auxdisplay: convert to read/write iterators Jens Axboe
2024-04-11 15:14 ` [PATCH 120/437] fs/eventfd: " Jens Axboe
2024-04-11 15:14 ` [PATCH 121/437] drivers/input: " Jens Axboe
2024-04-11 15:14 ` [PATCH 122/437] drivers/pci: " Jens Axboe
2024-04-11 15:14 ` [PATCH 123/437] fs/fuse: " Jens Axboe
2024-04-11 15:14 ` [PATCH 124/437] firmware: arm_scmi: " Jens Axboe
2024-04-11 15:14 ` [PATCH 125/437] firmware: cirrus: " Jens Axboe
2024-04-11 15:14 ` [PATCH 126/437] firmware: efi: " Jens Axboe
2024-04-11 15:14 ` [PATCH 127/437] firmware: psci: " Jens Axboe
2024-04-11 15:14 ` [PATCH 128/437] firmware: turris-mox-rwtm: " Jens Axboe
2024-04-11 15:14 ` [PATCH 129/437] firmware: tegra: " Jens Axboe
2024-04-11 15:14 ` [PATCH 130/437] drivers/i2c: " Jens Axboe
2024-04-11 15:14 ` [PATCH 131/437] drivers/opp: " Jens Axboe
2024-04-11 15:14 ` [PATCH 132/437] drivers/base: " Jens Axboe
2024-04-11 15:14 ` [PATCH 133/437] drivers/bus: " Jens Axboe
2024-04-11 15:14 ` [PATCH 134/437] drivers/regulator: " Jens Axboe
2024-04-11 15:14 ` [PATCH 135/437] fs/notify: " Jens Axboe
2024-04-11 15:14 ` [PATCH 136/437] drm: switch drm_read() to be iterator based Jens Axboe
2024-04-11 15:14 ` [PATCH 137/437] drm: convert debugfs helpers to be read/write " Jens Axboe
2024-04-11 15:14 ` [PATCH 138/437] drm/i915: convert to read/write iterators Jens Axboe
2024-04-11 15:14 ` [PATCH 139/437] drm: amd: " Jens Axboe
2024-04-11 15:14 ` [PATCH 140/437] drm: msm: " Jens Axboe
2024-04-11 15:14 ` [PATCH 141/437] drm: nouveau: " Jens Axboe
2024-04-11 15:14 ` [PATCH 142/437] drm: mipi: " Jens Axboe
2024-04-11 15:14 ` [PATCH 143/437] drm: mali: " Jens Axboe
2024-04-11 15:14 ` [PATCH 144/437] drm/bridge: it6505: " Jens Axboe
2024-04-11 15:14 ` [PATCH 145/437] drm/imagination: " Jens Axboe
2024-04-11 15:14 ` [PATCH 146/437] drm/loongson: " Jens Axboe
2024-04-11 15:14 ` [PATCH 147/437] drm/radeon/radeon_ttm: " Jens Axboe
2024-04-11 15:14 ` [PATCH 148/437] drm: armada: " Jens Axboe
2024-04-11 15:14 ` [PATCH 149/437] drm: omap: " Jens Axboe
2024-04-11 15:14 ` [PATCH 150/437] vga_switcheroo: " Jens Axboe
2024-04-11 15:14 ` [PATCH 151/437] drivers/clk: " Jens Axboe
2024-04-11 15:14 ` [PATCH 152/437] drivers/rtc: " Jens Axboe
2024-04-11 15:14 ` [PATCH 153/437] drivers/dma: " Jens Axboe
2024-04-11 15:14 ` [PATCH 154/437] fs/debugfs: " Jens Axboe
2024-04-11 15:14 ` [PATCH 155/437] HID: usbhid: " Jens Axboe
2024-04-11 15:14 ` [PATCH 156/437] usb: chipidea: " Jens Axboe
2024-04-11 15:14 ` [PATCH 157/437] usb: class: " Jens Axboe
2024-04-11 15:14 ` [PATCH 158/437] usb: core: " Jens Axboe
2024-04-11 15:14 ` [PATCH 159/437] usb: dwc2: " Jens Axboe
2024-04-11 15:15 ` [PATCH 160/437] usb: dwc3: " Jens Axboe
2024-04-11 15:15 ` [PATCH 161/437] usb: fotg210-hcd: " Jens Axboe
2024-04-11 15:15 ` [PATCH 162/437] usb: gadget: " Jens Axboe
2024-04-11 15:15 ` [PATCH 163/437] usb: host: ehci: " Jens Axboe
2024-04-11 15:15 ` [PATCH 164/437] usb: host: ohci: " Jens Axboe
2024-04-11 15:15 ` [PATCH 165/437] usb: host: uhci: " Jens Axboe
2024-04-11 15:15 ` [PATCH 166/437] usb: host: xhci: " Jens Axboe
2024-04-11 15:15 ` [PATCH 167/437] usb: image: mdc800: " Jens Axboe
2024-04-11 15:15 ` [PATCH 168/437] usb: misc: " Jens Axboe
2024-04-11 15:15 ` [PATCH 169/437] usb: mon: " Jens Axboe
2024-04-11 15:15 ` [PATCH 170/437] usb: mtu3: " Jens Axboe
2024-04-11 15:15 ` [PATCH 171/437] usb: musb: " Jens Axboe
2024-04-11 15:15 ` [PATCH 172/437] usb: skeleton: " Jens Axboe
2024-04-11 15:15 ` [PATCH 173/437] usb: gadget: atmel_usba_udc: " Jens Axboe
2024-04-11 15:15 ` [PATCH 174/437] soc: qcom: " Jens Axboe
2024-04-11 15:15 ` [PATCH 175/437] soc: aspeed: " Jens Axboe
2024-04-11 15:15 ` [PATCH 176/437] soc: fsl: " Jens Axboe
2024-04-11 15:15 ` [PATCH 177/437] soc: mediatek: " Jens Axboe
2024-04-11 15:15 ` [PATCH 178/437] soc: sifive: ccache: " Jens Axboe
2024-04-11 15:15 ` [PATCH 179/437] drivers/pinctrl: convert to ->read_iter and ->write_iter Jens Axboe
2024-04-11 15:15 ` [PATCH 180/437] drivers/phy: " Jens Axboe
2024-04-11 15:15 ` [PATCH 181/437] drivers/ufs: " Jens Axboe
2024-04-11 15:15 ` [PATCH 182/437] drivers/uio: " Jens Axboe
2024-04-11 15:15 ` [PATCH 183/437] drivers/platform: " Jens Axboe
2024-04-11 15:15 ` [PATCH 184/437] drivers/mtd: " Jens Axboe
2024-04-11 15:15 ` [PATCH 185/437] scsi: bfa: convert to read/write iterators Jens Axboe
2024-04-11 15:15 ` [PATCH 186/437] scsi: csiostor: " Jens Axboe
2024-04-11 15:15 ` [PATCH 187/437] scsi: fnic: " Jens Axboe
2024-04-11 15:15 ` [PATCH 188/437] scsi: hisi_sas: " Jens Axboe
2024-04-11 15:15 ` [PATCH 189/437] scsi: lpfc: " Jens Axboe
2024-04-11 15:15 ` [PATCH 190/437] scsi: megaraid: " Jens Axboe
2024-04-11 15:15 ` [PATCH 191/437] scsi: mpt3sas: " Jens Axboe
2024-04-11 15:15 ` [PATCH 192/437] scsi: qedf: " Jens Axboe
2024-04-11 15:15 ` [PATCH 193/437] scsi: qedi: " Jens Axboe
2024-04-11 15:15 ` [PATCH 194/437] scsi: qla2xxx: " Jens Axboe
2024-04-11 15:15 ` [PATCH 195/437] scsi: snic: " Jens Axboe
2024-04-11 15:15 ` [PATCH 196/437] scsi: cxlflash: " Jens Axboe
2024-04-11 15:15 ` [PATCH 197/437] scsi: scsi_debug: " Jens Axboe
2024-04-11 15:15 ` [PATCH 198/437] scsi: sg: " Jens Axboe
2024-04-11 15:15 ` [PATCH 199/437] scsi: st: " Jens Axboe
2024-04-11 15:15 ` [PATCH 200/437] staging: axis: " Jens Axboe
2024-04-11 15:15 ` [PATCH 201/437] staging: fieldbus: " Jens Axboe
2024-04-11 15:15 ` [PATCH 202/437] staging: greybus: " Jens Axboe
2024-04-11 15:15 ` [PATCH 203/437] staging: av7110: " Jens Axboe
2024-04-11 15:15 ` [PATCH 204/437] staging: vc04_services: " Jens Axboe
2024-04-11 15:15 ` [PATCH 205/437] drivers/xen: convert to ->read_iter and ->write_iter Jens Axboe
2024-04-11 15:15 ` [PATCH 206/437] virt: " Jens Axboe
2024-04-11 15:15 ` [PATCH 207/437] virt: fsl_hypervisor: convert to read/write iterators Jens Axboe
2024-04-11 15:15 ` [PATCH 208/437] drivers/video: convert to ->read_iter and ->write_iter Jens Axboe
2024-04-11 15:15 ` [PATCH 209/437] video: fbdev: pxa3xx-gcu: convert to read/write iterators Jens Axboe
2024-04-11 15:15 ` [PATCH 210/437] drivers/iommu: convert intel iommu " Jens Axboe
2024-04-11 15:15 ` [PATCH 211/437] drivers/iommu: convert omap " Jens Axboe
2024-04-11 15:15 ` [PATCH 212/437] misc: bcm_vk: convert to iterators Jens Axboe
2024-04-11 15:15 ` [PATCH 213/437] misc: lis3lv02d: " Jens Axboe
2024-04-11 15:15 ` [PATCH 214/437] misc: eeprom/idt_89hpesx: convert to read/write iterators Jens Axboe
2024-04-11 15:15 ` [PATCH 215/437] misc: hpilo: " Jens Axboe
2024-04-11 15:15 ` [PATCH 216/437] misc: lkdtm: " Jens Axboe
2024-04-11 15:15 ` [PATCH 217/437] misc: open-dice: " Jens Axboe
2024-04-11 15:15 ` [PATCH 218/437] misc: tps6594-pfsm: " Jens Axboe
2024-04-11 15:15 ` [PATCH 219/437] misc: ibmvmc: " Jens Axboe
2024-04-11 15:16 ` [PATCH 220/437] misc: cxl: " Jens Axboe
2024-04-11 15:16 ` [PATCH 221/437] misc: ocxl: " Jens Axboe
2024-04-11 15:16 ` [PATCH 222/437] drivers/isdn: " Jens Axboe
2024-04-11 15:16 ` [PATCH 223/437] drivers/leds: " Jens Axboe
2024-04-11 15:16 ` [PATCH 224/437] drivers/mailbox: " Jens Axboe
2024-04-11 15:16 ` [PATCH 225/437] drivers/mfd: " Jens Axboe
2024-04-11 15:16 ` [PATCH 226/437] drivers/misc/mei: " Jens Axboe
2024-04-11 15:16 ` [PATCH 227/437] misc: ibmasm: " Jens Axboe
2024-04-11 15:16 ` [PATCH 228/437] drivers/spi: " Jens Axboe
2024-04-11 15:16 ` [PATCH 229/437] drivers/nfc: " Jens Axboe
2024-04-11 15:16 ` [PATCH 230/437] drivers/nvme: " Jens Axboe
2024-04-11 15:16 ` [PATCH 231/437] drivers/firewire: " Jens Axboe
2024-04-11 15:16 ` [PATCH 232/437] drivers/mfd: " Jens Axboe
2024-04-11 15:16 ` [PATCH 233/437] watchdog: acquirewdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 234/437] watchdog: advantechwdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 235/437] watchdog: alim1535_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 236/437] watchdog: alim7101_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 237/437] watchdog: at91rm9200_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 238/437] watchdog: cpu5wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 239/437] watchdog: eurotechwdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 240/437] watchdog: geodewdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 241/437] watchdog: ib700wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 242/437] watchdog: ibmasr: " Jens Axboe
2024-04-11 15:16 ` [PATCH 243/437] watchdog: it8712f_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 244/437] watchdog: machzwd: " Jens Axboe
2024-04-11 15:16 ` [PATCH 245/437] watchdog: mei_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 246/437] watchdog: nv_tco: " Jens Axboe
2024-04-11 15:16 ` [PATCH 247/437] watchdog: pc87413_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 248/437] watchdog: pcwd_pci: " Jens Axboe
2024-04-11 15:16 ` [PATCH 249/437] watchdog: pcwd_usb: " Jens Axboe
2024-04-11 15:16 ` [PATCH 250/437] watchdog: rdc321x_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 251/437] watchdog: sa1100_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 252/437] watchdog: sbc60xxwdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 253/437] watchdog: sbc_epx_c3: " Jens Axboe
2024-04-11 15:16 ` [PATCH 254/437] watchdog: sbc_fitpc2_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 255/437] watchdog: sc1200wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 256/437] watchdog: sc520_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 257/437] watchdog: sch311x_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 258/437] watchdog: smsc37b787_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 259/437] watchdog: w83877f_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 260/437] watchdog: w83977f_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 261/437] watchdog: wafer5823wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 262/437] watchdog: watchdog_dev: " Jens Axboe
2024-04-11 15:16 ` [PATCH 263/437] watchdog: wdt_pci: " Jens Axboe
2024-04-11 15:16 ` [PATCH 264/437] watchdog: ath79_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 265/437] watchdog: cpwd: " Jens Axboe
2024-04-11 15:16 ` [PATCH 266/437] watchdog: gef_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 267/437] watchdog: indydog: " Jens Axboe
2024-04-11 15:16 ` [PATCH 268/437] watchdog: m54xx_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 269/437] watchdog: mixcomwd: " Jens Axboe
2024-04-11 15:16 ` [PATCH 270/437] watchdog: mtx-1_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 271/437] watchdog: pcwd: " Jens Axboe
2024-04-11 15:16 ` [PATCH 272/437] watchdog: pika_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 273/437] watchdog: rc32434_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 274/437] watchdog: riowd: " Jens Axboe
2024-04-11 15:16 ` [PATCH 275/437] watchdog: sb_wdog: " Jens Axboe
2024-04-11 15:16 ` [PATCH 276/437] watchdog: sbc7240_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 277/437] watchdog: sbc8360: " Jens Axboe
2024-04-11 15:16 ` [PATCH 278/437] watchdog: scx200_wdt: " Jens Axboe
2024-04-11 15:16 ` [PATCH 279/437] watchdog: wdrtas: " Jens Axboe
2024-04-11 15:17 ` [PATCH 280/437] watchdog: wdt: " Jens Axboe
2024-04-11 15:17 ` [PATCH 281/437] watchdog: wdt285: " Jens Axboe
2024-04-11 15:17 ` [PATCH 282/437] watchdog: wdt977: " Jens Axboe
2024-04-11 15:17 ` [PATCH 283/437] fs/binfmt_misc: " Jens Axboe
2024-04-11 15:17 ` [PATCH 284/437] fs/coda: " Jens Axboe
2024-04-11 15:17 ` [PATCH 285/437] fs/nfsd: " Jens Axboe
2024-04-11 15:17 ` [PATCH 286/437] ubifs: " Jens Axboe
2024-04-11 15:17 ` [PATCH 287/437] cachefiles: " Jens Axboe
2024-04-11 15:17 ` [PATCH 288/437] fs/xfs: " Jens Axboe
2024-04-11 15:17 ` [PATCH 289/437] fs/bcachefs: " Jens Axboe
2024-04-11 15:17 ` [PATCH 290/437] fs/ocfs2: " Jens Axboe
2024-04-11 15:17 ` [PATCH 291/437] drivers/net/wireless/marvell: " Jens Axboe
2024-04-11 15:17 ` [PATCH 292/437] fs/proc: " Jens Axboe
2024-04-11 15:17 ` [PATCH 293/437] fs: convert fs_open " Jens Axboe
2024-04-11 15:17 ` [PATCH 294/437] openpromfs: convert " Jens Axboe
2024-04-11 15:17 ` [PATCH 295/437] drivers/net/wireless/ti: " Jens Axboe
2024-04-11 15:17 ` Jens Axboe [this message]
2024-04-11 15:17 ` [PATCH 297/437] drivers/net/wireless/mediatek: " Jens Axboe
2024-04-11 15:17 ` [PATCH 298/437] drivers/net/wireless/ath/ath5k: " Jens Axboe
2024-04-11 15:17 ` [PATCH 299/437] drivers/net/wireless/ath/ath6kl: " Jens Axboe
2024-04-11 15:17 ` [PATCH 300/437] drivers/net/wireless/ath/carl9170: " Jens Axboe
2024-04-11 15:17 ` [PATCH 301/437] drivers/net/wireless/ath/wcn36xx: " Jens Axboe
2024-04-11 15:17 ` [PATCH 302/437] drivers/net/wireless/ath/wil6210: " Jens Axboe
2024-04-11 15:17 ` [PATCH 303/437] drivers/net/wireless/ath/ath9k: " Jens Axboe
2024-04-11 15:17 ` [PATCH 304/437] drivers/net/wireless/ath/ath10k: " Jens Axboe
2024-04-11 15:17 ` [PATCH 305/437] drivers/net/wireless/ath/ath11k: " Jens Axboe
2024-04-11 15:17 ` [PATCH 306/437] drivers/net/wireless/broadcom: " Jens Axboe
2024-04-11 15:17 ` [PATCH 307/437] drivers/net/wireless/ralink: " Jens Axboe
2024-04-11 15:17 ` [PATCH 308/437] wifi: rtlwifi: convert debugfs helpers " Jens Axboe
2024-04-11 15:17 ` [PATCH 309/437] wifi: rtw88: " Jens Axboe
2024-04-11 15:17 ` [PATCH 310/437] wifi: rtw89: " Jens Axboe
2024-04-11 15:17 ` [PATCH 311/437] wifi: rsi: rsi_91x_debugfs: convert " Jens Axboe
2024-04-11 15:17 ` [PATCH 312/437] drivers/net/wireless/silabs: " Jens Axboe
2024-04-11 15:17 ` [PATCH 313/437] drivers/net/wireless/st: " Jens Axboe
2024-04-11 15:17 ` [PATCH 314/437] drivers/net/ieee802154: " Jens Axboe
2024-04-11 15:17 ` [PATCH 315/437] drivers/net/netdevsim: " Jens Axboe
2024-04-11 15:17 ` [PATCH 316/437] drivers/net/ppp: " Jens Axboe
2024-04-11 15:17 ` [PATCH 317/437] drivers/net/wwan: " Jens Axboe
2024-04-11 15:17 ` [PATCH 318/437] drivers/net/xen-netback: " Jens Axboe
2024-04-11 15:17 ` [PATCH 319/437] drivers/net/ethernet/broadcom-bnxt: " Jens Axboe
2024-04-11 15:17 ` [PATCH 320/437] drivers/net/brocade-bnad: ensure the copied buf is NULL terminated Jens Axboe
2024-04-11 15:17 ` [PATCH 321/437] drivers/net/brocade-bnad: convert to read/write iterators Jens Axboe
2024-04-11 15:17 ` [PATCH 322/437] drivers/net/ethernet/intel-ice: ensure the copied buf is NULL terminated Jens Axboe
2024-04-11 15:17 ` [PATCH 323/437] drivers/net/ethernet/intel: convert to read/write iterators Jens Axboe
2024-04-11 15:17 ` [PATCH 324/437] drivers/net/ethernet/chelsio: " Jens Axboe
2024-04-11 15:17 ` [PATCH 325/437] drivers/net/ethernet/hisilicon: " Jens Axboe
2024-04-11 15:17 ` [PATCH 326/437] drivers/net/ethernet/huawei: " Jens Axboe
2024-04-11 15:17 ` [PATCH 327/437] drivers/net/ethernet/amd-xgbe: " Jens Axboe
2024-04-11 15:17 ` [PATCH 328/437] drivers/net/ethernet/marvell/octeontx2: " Jens Axboe
2024-04-11 15:17 ` [PATCH 329/437] drivers/net/ethernet/mellanox/mlx5/core: " Jens Axboe
2024-04-11 15:17 ` [PATCH 330/437] x86/kernel: " Jens Axboe
2024-04-11 15:17 ` [PATCH 331/437] x86/kvm: " Jens Axboe
2024-04-11 15:17 ` [PATCH 332/437] x86/mm: " Jens Axboe
2024-04-11 15:17 ` [PATCH 333/437] arch/arm: " Jens Axboe
2024-04-11 15:17 ` [PATCH 334/437] arch/mips: " Jens Axboe
2024-04-11 15:17 ` [PATCH 335/437] parisc: eisa_eeprom: " Jens Axboe
2024-04-11 15:17 ` [PATCH 336/437] arch/parisc: " Jens Axboe
2024-04-11 15:17 ` [PATCH 337/437] powerpc/kernel: " Jens Axboe
2024-04-11 15:17 ` [PATCH 338/437] powerpc/kvm: " Jens Axboe
2024-04-11 15:17 ` [PATCH 339/437] powerpc/spufs: " Jens Axboe
2024-04-11 15:18 ` [PATCH 340/437] powerpc/platforms: " Jens Axboe
2024-04-11 15:18 ` [PATCH 341/437] s390: cio: " Jens Axboe
2024-04-11 15:18 ` [PATCH 342/437] s390: fs3270: " Jens Axboe
2024-04-11 15:18 ` [PATCH 343/437] s390: hmcdrv: " Jens Axboe
2024-04-11 15:18 ` [PATCH 344/437] s390: tape_char: " Jens Axboe
2024-04-11 15:18 ` [PATCH 345/437] s390: vmcp: " Jens Axboe
2024-04-11 15:18 ` [PATCH 346/437] s390: vmur: " Jens Axboe
2024-04-11 15:18 ` [PATCH 347/437] s390: zcore: " Jens Axboe
2024-04-11 15:18 ` [PATCH 348/437] s390: crypto: " Jens Axboe
2024-04-11 15:18 ` [PATCH 349/437] s390: monreader: " Jens Axboe
2024-04-11 15:18 ` [PATCH 350/437] s390: monwriter: " Jens Axboe
2024-04-11 15:18 ` [PATCH 351/437] s390: hw_random: " Jens Axboe
2024-04-11 15:18 ` [PATCH 352/437] s390: vmlogrdr: " Jens Axboe
2024-04-11 15:18 ` [PATCH 353/437] arch/s390: " Jens Axboe
2024-04-11 15:18 ` [PATCH 354/437] arch/sh: " Jens Axboe
2024-04-11 15:18 ` [PATCH 355/437] arch/um: " Jens Axboe
2024-04-11 15:18 ` [PATCH 356/437] arch/sparc: " Jens Axboe
2024-04-11 15:18 ` [PATCH 357/437] samples/vfio-mdev: " Jens Axboe
2024-04-11 15:18 ` [PATCH 358/437] hwmon: fschmd: " Jens Axboe
2024-04-11 15:18 ` [PATCH 359/437] hwmon: w83793: " Jens Axboe
2024-04-11 15:18 ` [PATCH 360/437] hwmon: asus_atk0110: " Jens Axboe
2024-04-11 15:18 ` [PATCH 361/437] hwmon: mr75203: " Jens Axboe
2024-04-11 15:18 ` [PATCH 362/437] hwmon: acbel-fsg032: " Jens Axboe
2024-04-11 15:18 ` [PATCH 363/437] hwmon: ibm-cffps: " Jens Axboe
2024-04-11 15:18 ` [PATCH 364/437] hwmon: max20730: " Jens Axboe
2024-04-11 15:18 ` [PATCH 365/437] hwmon: pmbus: core: " Jens Axboe
2024-04-11 15:18 ` [PATCH 366/437] hwmon: q54sj108a2: " Jens Axboe
2024-04-11 15:18 ` [PATCH 367/437] hwmon: ucd9000: " Jens Axboe
2024-04-11 15:18 ` [PATCH 368/437] hwmon: pt5161l: " Jens Axboe
2024-04-11 15:18 ` [PATCH 369/437] drivers/mmc: " Jens Axboe
2024-04-11 15:18 ` [PATCH 370/437] drivers/most: " Jens Axboe
2024-04-11 15:18 ` [PATCH 371/437] drivers/ntb: " Jens Axboe
2024-04-11 15:18 ` [PATCH 372/437] drivers/md: convert bcache " Jens Axboe
2024-04-11 15:18 ` [PATCH 373/437] drivers/remoteproc: convert " Jens Axboe
2024-04-11 15:18 ` [PATCH 374/437] drivers/thunderbolt: " Jens Axboe
2024-04-11 15:18 ` [PATCH 375/437] drivers/vfio: " Jens Axboe
2024-04-11 15:18 ` [PATCH 376/437] drivers/fsi: " Jens Axboe
2024-04-11 15:18 ` [PATCH 377/437] iio: " Jens Axboe
2024-04-11 15:18 ` [PATCH 378/437] iio: adis16400: " Jens Axboe
2024-04-11 15:18 ` [PATCH 379/437] iio: adis16475: " Jens Axboe
2024-04-11 15:18 ` [PATCH 380/437] iio: adis16480: " Jens Axboe
2024-04-11 15:18 ` [PATCH 381/437] iio: bno055: " Jens Axboe
2024-04-11 15:18 ` [PATCH 382/437] iio: gyro/adis16136: " Jens Axboe
2024-04-11 15:18 ` [PATCH 383/437] intel_th: " Jens Axboe
2024-04-11 15:18 ` [PATCH 384/437] stm class: " Jens Axboe
2024-04-11 15:18 ` [PATCH 385/437] speakup: " Jens Axboe
2024-04-11 15:18 ` [PATCH 386/437] EDAC/versal: " Jens Axboe
2024-04-11 15:18 ` [PATCH 387/437] EDAC/xgene: " Jens Axboe
2024-04-11 15:18 ` [PATCH 388/437] EDAC/zynqmp: " Jens Axboe
2024-04-11 15:18 ` [PATCH 389/437] EDAC/thunderx: " Jens Axboe
2024-04-11 15:18 ` [PATCH 390/437] EDAC/npcm: " Jens Axboe
2024-04-11 15:18 ` [PATCH 391/437] EDAC/i5100: " Jens Axboe
2024-04-11 15:18 ` [PATCH 392/437] EDAC/altera: " Jens Axboe
2024-04-11 15:18 ` [PATCH 393/437] EDAC/debugfs: " Jens Axboe
2024-04-11 15:18 ` [PATCH 394/437] drivers/hsi: " Jens Axboe
2024-04-11 15:18 ` [PATCH 395/437] hsi: clients: cmt_speech: " Jens Axboe
2024-04-11 15:18 ` [PATCH 396/437] macintosh: adb: " Jens Axboe
2024-04-11 15:18 ` [PATCH 397/437] macintosh: ans-lcd: " Jens Axboe
2024-04-11 15:18 ` [PATCH 398/437] macintosh: smu: " Jens Axboe
2024-04-11 15:18 ` [PATCH 399/437] macintosh: via-pmu: " Jens Axboe
2024-04-11 15:19 ` [PATCH 400/437] drivers/extcon: " Jens Axboe
2024-04-11 15:19 ` [PATCH 401/437] drivers/gnss: " Jens Axboe
2024-04-11 15:19 ` [PATCH 402/437] drivers/rapidio: " Jens Axboe
2024-04-11 15:19 ` [PATCH 403/437] drivers/media/platform/mediatek/vcodec: " Jens Axboe
2024-04-11 15:19 ` [PATCH 404/437] infiniband/core: " Jens Axboe
2024-04-11 15:19 ` [PATCH 405/437] infiniband/cxgb4: " Jens Axboe
2024-04-11 15:19 ` [PATCH 406/437] infiniband/hfi1: " Jens Axboe
2024-04-11 15:19 ` [PATCH 407/437] infiniband/mlx5: " Jens Axboe
2024-04-11 15:19 ` [PATCH 408/437] infiniband/ocrdma: " Jens Axboe
2024-04-11 15:19 ` [PATCH 409/437] infiniband/qib: " Jens Axboe
2024-04-11 15:19 ` [PATCH 410/437] infiniband/hns: " Jens Axboe
2024-04-11 15:19 ` [PATCH 411/437] infiniband/usnic: " Jens Axboe
2024-04-11 15:19 ` [PATCH 412/437] hv: " Jens Axboe
2024-04-11 15:19 ` [PATCH 413/437] media/rc: " Jens Axboe
2024-05-04 12:31   ` Mauro Carvalho Chehab
2024-05-05 13:16     ` Jens Axboe
2024-04-11 15:19 ` [PATCH 414/437] media/dvb-core: " Jens Axboe
2024-04-11 15:19 ` [PATCH 415/437] media/common: " Jens Axboe
2024-04-11 15:19 ` [PATCH 416/437] media/platform: amphion: " Jens Axboe
2024-04-11 15:19 ` [PATCH 417/437] media/platform: mediatek: " Jens Axboe
2024-04-11 15:19 ` [PATCH 418/437] media: cec: " Jens Axboe
2024-04-11 15:19 ` [PATCH 419/437] media: media-devnode: " Jens Axboe
2024-04-11 15:19 ` [PATCH 420/437] media: bt8xx: " Jens Axboe
2024-04-11 15:19 ` [PATCH 421/437] media: dbbridge: " Jens Axboe
2024-04-11 15:19 ` [PATCH 422/437] media: ngene: " Jens Axboe
2024-04-11 15:19 ` [PATCH 423/437] media: radio-si476x: " Jens Axboe
2024-04-11 15:19 ` [PATCH 424/437] media: usb: uvc: " Jens Axboe
2024-04-11 15:19 ` [PATCH 425/437] media: v4l2-dev: " Jens Axboe
2024-04-11 15:19 ` [PATCH 426/437] firmware: xilinx: " Jens Axboe
2024-04-11 15:19 ` [PATCH 427/437] hwtracing: coresight: " Jens Axboe
2024-04-11 15:19 ` [PATCH 428/437] sbus: oradax: " Jens Axboe
2024-04-11 15:19 ` [PATCH 429/437] sbus: envctrl: " Jens Axboe
2024-04-11 15:19 ` [PATCH 430/437] sbus: flash: " Jens Axboe
2024-04-11 15:19 ` [PATCH 431/437] pci: hotplug: cpqphp: " Jens Axboe
2024-04-11 15:19 ` [PATCH 432/437] seq_file: switch to using ->read_iter() Jens Axboe
2024-04-11 15:19 ` [PATCH 433/437] fs/debugfs: remove (now) dead non-iterator debugfs_attr functions Jens Axboe
2024-04-11 15:19 ` [PATCH 434/437] lib/string_helpers: kill parse_int_array_user() Jens Axboe
2024-04-11 15:19 ` [PATCH 435/437] fs: kill off non-iter variants of simple_attr_{read,write}* Jens Axboe
2024-04-11 15:19 ` [PATCH 436/437] kstrtox: remove (now) dead helpers Jens Axboe
2024-04-11 15:19 ` [PATCH 437/437] REMOVE ->read() and ->write() Jens Axboe
2024-04-12  4:29 ` [PATCHSET RFC 0/437] Kill off old fops " Al Viro
2024-04-12  4:37   ` Al Viro
2024-04-12 13:58   ` Jens Axboe
2024-04-13  4:15     ` Al Viro
2024-04-13 15:37       ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240411153126.16201-297-axboe@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox