From nobody Fri Dec 19 17:15:23 2025 Received: from mail-il1-f177.google.com (mail-il1-f177.google.com [209.85.166.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E971A1D370B for ; Thu, 11 Apr 2024 15:39:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849987; cv=none; b=PC8I2WqsM1p0DFQzyEKLDOskXOEv6UKx0mFJupxjTjdzeoun812whXSRp6Dfbg0G0mP3se/iEhr8bvpO3JCoik2il5RF9Q7134NW7hFHkU9IV+dI7wETPCEeP7vvtABlpEWPgUAQWiniEonKH3MyEDlOPAMShEOQB+03/HLshJo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849987; c=relaxed/simple; bh=JEwIyhrb4B8Cd4P3gfUy6BSaexYaYBtcvRp4BZDhVh8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Wp4UkqhIV3x5tGQdl4C14Da417Joh3TFJLNHPpHsXt2FYg9KQwGqOW5iTbKz9beh30ZJBSFA1N7f1KXe6FW9Yvda4yHJyyBUPoTrgRmwCEMeeTxEBHWhglyqODzSSYku4Og+BzWIFebr0QpMtJeK14ixa1nR9ATelx4VS1P+b0w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk; spf=pass smtp.mailfrom=kernel.dk; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b=YwVB9E41; arc=none smtp.client-ip=209.85.166.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kernel.dk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b="YwVB9E41" Received: by mail-il1-f177.google.com with SMTP id e9e14a558f8ab-36a34b68277so116875ab.0 for ; Thu, 11 Apr 2024 08:39:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1712849983; x=1713454783; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mwr1GPSeZp0pZoSE/EKWdcZh0vh8v5dKr9MrE/elW1Y=; b=YwVB9E412SdDCsaC6PZuz0RsQmG+pWlpJYJsjnm+mKhNY5lYcj2MEhIdbnQ08e8yqM moqi2IGcXs2xF0VBZyUgI+rSVVJwF6MAaojQU/NAC88EhCkrpYtA2D288waMtuHouQ47 gyrOYsQ9cqGsRZGeFEYB0fTcv0tTwkQrZG8wg7dr+yRKxSVq78W/Hosn3CvXvtEuBbR1 SKEw6c9hw1WP32EayKfolObIcgAglElIrq4jz4bMTVWGS8X0gcL8N/NJS0zrt+blTMbL ZaaB0fJNLudfMx9khX9WLFqTUh9QLk/SZR4qwBlmyc/fH7Cs0TymvAiW657rEbZE9fGB dgMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712849983; x=1713454783; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mwr1GPSeZp0pZoSE/EKWdcZh0vh8v5dKr9MrE/elW1Y=; b=DnW+PvFXxajxziZO0KgkCQ2UHHt2/kQEVEpqDHLo1geRzX6Xw5YNeWDfOf5yzq+m4q 4owowEgZboEt5nTOqt8h/KLc+qAu2ad7J+voij7+7SO+YOX9itPl2kQ4hqyZQFAKZPa0 7LWI9tEEARw/y6in77zn3+tNLcLg6HdddYtkpd1zllk55hjFxvdUrfShApOJx5pgHOtS XiSfRV6/0V2jeNB4tU3l9C71+39Njpf9l5bq9lGqKhOcRqr6p/N47/pAYL4cMjYiKDLU adUUP4yI2epR3lhj27/1RL7yFHAuZe+0ai4dDbQvy4KeVvDlmkGAaoE0um05npKua4u9 7GNw== X-Gm-Message-State: AOJu0Ywk1gj5z+Pzl+Zqe4sifk8YI4FHsuipigsXb0uCnbULQgEFqi7q MT0ATHi5BNKvEJtCz2XLvGkkvmkfJVVnwvcHc9ve8ahgrdxRS0g0pc7dd9xGk1tMDF3unF17nQU 1 X-Google-Smtp-Source: AGHT+IHDVyjlOOFDURMMfBAsRqBh3DkIfNQnR2+QmQbTCQBCqsR0uUxeefJ/nOi5jUgJQGsgxE/2CA== X-Received: by 2002:a6b:6605:0:b0:7d4:1dae:da1a with SMTP id a5-20020a6b6605000000b007d41daeda1amr157399ioc.2.1712849983189; Thu, 11 Apr 2024 08:39:43 -0700 (PDT) Received: from localhost.localdomain ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id jc25-20020a056638891900b0047f14b7f6c0sm457056jab.5.2024.04.11.08.39.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Apr 2024 08:39:40 -0700 (PDT) From: Jens Axboe To: linux-kernel@vger.kernel.org Cc: Jens Axboe Subject: [PATCH 291/437] drivers/net/wireless/marvell: convert to read/write iterators Date: Thu, 11 Apr 2024 09:17:11 -0600 Message-ID: <20240411153126.16201-292-axboe@kernel.dk> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240411153126.16201-1-axboe@kernel.dk> References: <20240411153126.16201-1-axboe@kernel.dk> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Jens Axboe --- .../net/wireless/marvell/libertas/debugfs.c | 242 +++++++----------- .../net/wireless/marvell/mwifiex/debugfs.c | 183 ++++++------- 2 files changed, 172 insertions(+), 253 deletions(-) diff --git a/drivers/net/wireless/marvell/libertas/debugfs.c b/drivers/net/= wireless/marvell/libertas/debugfs.c index c604613ab506..0a5a2084b0d6 100644 --- a/drivers/net/wireless/marvell/libertas/debugfs.c +++ b/drivers/net/wireless/marvell/libertas/debugfs.c @@ -22,18 +22,16 @@ static char *szStates[] =3D { static void lbs_debug_init(struct lbs_private *priv); #endif =20 -static ssize_t write_file_dummy(struct file *file, const char __user *buf, - size_t count, loff_t *ppos) +static ssize_t write_file_dummy(struct kiocb *iocb, struct iov_iter *from) { return -EINVAL; } =20 static const size_t len =3D PAGE_SIZE; =20 -static ssize_t lbs_dev_info(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_dev_info(struct kiocb *iocb, struct iov_iter *to) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; size_t pos =3D 0; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); char *buf =3D (char *)addr; @@ -46,23 +44,22 @@ static ssize_t lbs_dev_info(struct file *file, char __u= ser *userbuf, pos +=3D snprintf(buf+pos, len-pos, "region_code =3D %02x\n", (u32) priv->regioncode); =20 - res =3D simple_read_from_buffer(userbuf, count, ppos, buf, pos); + res =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 free_page(addr); return res; } =20 -static ssize_t lbs_sleepparams_write(struct file *file, - const char __user *user_buf, size_t count, - loff_t *ppos) +static ssize_t lbs_sleepparams_write(struct kiocb *iocb, struct iov_iter *= from) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); ssize_t ret; struct sleep_params sp; int p1, p2, p3, p4, p5, p6; char *buf; =20 - buf =3D memdup_user_nul(user_buf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -89,10 +86,9 @@ static ssize_t lbs_sleepparams_write(struct file *file, return ret; } =20 -static ssize_t lbs_sleepparams_read(struct file *file, char __user *userbu= f, - size_t count, loff_t *ppos) +static ssize_t lbs_sleepparams_read(struct kiocb *iocb, struct iov_iter *t= o) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; ssize_t ret; size_t pos =3D 0; struct sleep_params sp; @@ -110,23 +106,22 @@ static ssize_t lbs_sleepparams_read(struct file *file= , char __user *userbuf, sp.sp_calcontrol, sp.sp_extsleepclk, sp.sp_reserved); =20 - ret =3D simple_read_from_buffer(userbuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 out_unlock: free_page(addr); return ret; } =20 -static ssize_t lbs_host_sleep_write(struct file *file, - const char __user *user_buf, size_t count, - loff_t *ppos) +static ssize_t lbs_host_sleep_write(struct kiocb *iocb, struct iov_iter *f= rom) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); ssize_t ret; int host_sleep; char *buf; =20 - buf =3D memdup_user_nul(user_buf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -159,10 +154,9 @@ static ssize_t lbs_host_sleep_write(struct file *file, return ret; } =20 -static ssize_t lbs_host_sleep_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_host_sleep_read(struct kiocb *iocb, struct iov_iter *to) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; ssize_t ret; size_t pos =3D 0; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); @@ -172,7 +166,7 @@ static ssize_t lbs_host_sleep_read(struct file *file, c= har __user *userbuf, =20 pos +=3D snprintf(buf, len, "%d\n", priv->is_host_sleep_activated); =20 - ret =3D simple_read_from_buffer(userbuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 free_page(addr); return ret; @@ -215,12 +209,11 @@ static void *lbs_tlv_find(uint16_t tlv_type, const ui= nt8_t *tlv, uint16_t size) =20 =20 static ssize_t lbs_threshold_read(uint16_t tlv_type, uint16_t event_mask, - struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) + struct kiocb *iocb, struct iov_iter *to) { struct cmd_ds_802_11_subscribe_event *subscribed; struct mrvl_ie_thresholds *got; - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; ssize_t ret =3D 0; size_t pos =3D 0; char *buf; @@ -255,7 +248,7 @@ static ssize_t lbs_threshold_read(uint16_t tlv_type, ui= nt16_t event_mask, !!(events & event_mask)); } =20 - ret =3D simple_read_from_buffer(userbuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 out_cmd: kfree(subscribed); @@ -267,19 +260,18 @@ static ssize_t lbs_threshold_read(uint16_t tlv_type, = uint16_t event_mask, =20 =20 static ssize_t lbs_threshold_write(uint16_t tlv_type, uint16_t event_mask, - struct file *file, - const char __user *userbuf, size_t count, - loff_t *ppos) + struct kiocb *iocb, struct iov_iter *from) { struct cmd_ds_802_11_subscribe_event *events; struct mrvl_ie_thresholds *tlv; - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); int value, freq, new_mask; uint16_t curr_mask; char *buf; int ret; =20 - buf =3D memdup_user_nul(userbuf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -335,105 +327,81 @@ static ssize_t lbs_threshold_write(uint16_t tlv_type= , uint16_t event_mask, } =20 =20 -static ssize_t lbs_lowrssi_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_lowrssi_read(struct kiocb *iocb, struct iov_iter *to) { return lbs_threshold_read(TLV_TYPE_RSSI_LOW, CMD_SUBSCRIBE_RSSI_LOW, - file, userbuf, count, ppos); + iocb, to); } =20 - -static ssize_t lbs_lowrssi_write(struct file *file, const char __user *use= rbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_lowrssi_write(struct kiocb *iocb, struct iov_iter *from) { return lbs_threshold_write(TLV_TYPE_RSSI_LOW, CMD_SUBSCRIBE_RSSI_LOW, - file, userbuf, count, ppos); + iocb, from); } =20 - -static ssize_t lbs_lowsnr_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_lowsnr_read(struct kiocb *iocb, struct iov_iter *to) { return lbs_threshold_read(TLV_TYPE_SNR_LOW, CMD_SUBSCRIBE_SNR_LOW, - file, userbuf, count, ppos); + iocb, to); } =20 - -static ssize_t lbs_lowsnr_write(struct file *file, const char __user *user= buf, - size_t count, loff_t *ppos) +static ssize_t lbs_lowsnr_write(struct kiocb *iocb, struct iov_iter *from) { return lbs_threshold_write(TLV_TYPE_SNR_LOW, CMD_SUBSCRIBE_SNR_LOW, - file, userbuf, count, ppos); + iocb, from); } =20 - -static ssize_t lbs_failcount_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_failcount_read(struct kiocb *iocb, struct iov_iter *to) { return lbs_threshold_read(TLV_TYPE_FAILCOUNT, CMD_SUBSCRIBE_FAILCOUNT, - file, userbuf, count, ppos); + iocb, to); } =20 - -static ssize_t lbs_failcount_write(struct file *file, const char __user *u= serbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_failcount_write(struct kiocb *iocb, struct iov_iter *fr= om) { return lbs_threshold_write(TLV_TYPE_FAILCOUNT, CMD_SUBSCRIBE_FAILCOUNT, - file, userbuf, count, ppos); + iocb, from); } =20 - -static ssize_t lbs_highrssi_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_highrssi_read(struct kiocb *iocb, struct iov_iter *to) { return lbs_threshold_read(TLV_TYPE_RSSI_HIGH, CMD_SUBSCRIBE_RSSI_HIGH, - file, userbuf, count, ppos); + iocb, to); } =20 - -static ssize_t lbs_highrssi_write(struct file *file, const char __user *us= erbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_highrssi_write(struct kiocb *iocb, struct iov_iter *fro= m) { return lbs_threshold_write(TLV_TYPE_RSSI_HIGH, CMD_SUBSCRIBE_RSSI_HIGH, - file, userbuf, count, ppos); + iocb, from); } =20 - -static ssize_t lbs_highsnr_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_highsnr_read(struct kiocb *iocb, struct iov_iter *to) { return lbs_threshold_read(TLV_TYPE_SNR_HIGH, CMD_SUBSCRIBE_SNR_HIGH, - file, userbuf, count, ppos); + iocb, to); } =20 - -static ssize_t lbs_highsnr_write(struct file *file, const char __user *use= rbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_highsnr_write(struct kiocb *iocb, struct iov_iter *from) { return lbs_threshold_write(TLV_TYPE_SNR_HIGH, CMD_SUBSCRIBE_SNR_HIGH, - file, userbuf, count, ppos); + iocb, from); } =20 -static ssize_t lbs_bcnmiss_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_bcnmiss_read(struct kiocb *iocb, struct iov_iter *to) { return lbs_threshold_read(TLV_TYPE_BCNMISS, CMD_SUBSCRIBE_BCNMISS, - file, userbuf, count, ppos); + iocb, to); } =20 - -static ssize_t lbs_bcnmiss_write(struct file *file, const char __user *use= rbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_bcnmiss_write(struct kiocb *iocb, struct iov_iter *from) { return lbs_threshold_write(TLV_TYPE_BCNMISS, CMD_SUBSCRIBE_BCNMISS, - file, userbuf, count, ppos); + iocb, from); } =20 - -static ssize_t lbs_rdmac_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_rdmac_read(struct kiocb *iocb, struct iov_iter *to) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; ssize_t pos =3D 0; int ret; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); @@ -448,20 +416,19 @@ static ssize_t lbs_rdmac_read(struct file *file, char= __user *userbuf, if (!ret) { pos =3D snprintf(buf, len, "MAC[0x%x] =3D 0x%08x\n", priv->mac_offset, val); - ret =3D simple_read_from_buffer(userbuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); } free_page(addr); return ret; } =20 -static ssize_t lbs_rdmac_write(struct file *file, - const char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_rdmac_write(struct kiocb *iocb, struct iov_iter *from) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char *buf; =20 - buf =3D memdup_user_nul(userbuf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -470,17 +437,15 @@ static ssize_t lbs_rdmac_write(struct file *file, return count; } =20 -static ssize_t lbs_wrmac_write(struct file *file, - const char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_wrmac_write(struct kiocb *iocb, struct iov_iter *from) { - - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); ssize_t res; u32 offset, value; char *buf; =20 - buf =3D memdup_user_nul(userbuf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -500,10 +465,9 @@ static ssize_t lbs_wrmac_write(struct file *file, return res; } =20 -static ssize_t lbs_rdbbp_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_rdbbp_read(struct kiocb *iocb, struct iov_iter *to) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; ssize_t pos =3D 0; int ret; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); @@ -518,21 +482,20 @@ static ssize_t lbs_rdbbp_read(struct file *file, char= __user *userbuf, if (!ret) { pos =3D snprintf(buf, len, "BBP[0x%x] =3D 0x%08x\n", priv->bbp_offset, val); - ret =3D simple_read_from_buffer(userbuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); } free_page(addr); =20 return ret; } =20 -static ssize_t lbs_rdbbp_write(struct file *file, - const char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_rdbbp_write(struct kiocb *iocb, struct iov_iter *from) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char *buf; =20 - buf =3D memdup_user_nul(userbuf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -542,17 +505,15 @@ static ssize_t lbs_rdbbp_write(struct file *file, return count; } =20 -static ssize_t lbs_wrbbp_write(struct file *file, - const char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_wrbbp_write(struct kiocb *iocb, struct iov_iter *from) { - - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); ssize_t res; u32 offset, value; char *buf; =20 - buf =3D memdup_user_nul(userbuf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -572,10 +533,9 @@ static ssize_t lbs_wrbbp_write(struct file *file, return res; } =20 -static ssize_t lbs_rdrf_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_rdrf_read(struct kiocb *iocb, struct iov_iter *to) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; ssize_t pos =3D 0; int ret; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); @@ -590,21 +550,20 @@ static ssize_t lbs_rdrf_read(struct file *file, char = __user *userbuf, if (!ret) { pos =3D snprintf(buf, len, "RF[0x%x] =3D 0x%08x\n", priv->rf_offset, val); - ret =3D simple_read_from_buffer(userbuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); } free_page(addr); =20 return ret; } =20 -static ssize_t lbs_rdrf_write(struct file *file, - const char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_rdrf_write(struct kiocb *iocb, struct iov_iter *from) { - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char *buf; =20 - buf =3D memdup_user_nul(userbuf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -613,17 +572,15 @@ static ssize_t lbs_rdrf_write(struct file *file, return count; } =20 -static ssize_t lbs_wrrf_write(struct file *file, - const char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_wrrf_write(struct kiocb *iocb, struct iov_iter *from) { - - struct lbs_private *priv =3D file->private_data; + struct lbs_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); ssize_t res; u32 offset, value; char *buf; =20 - buf =3D memdup_user_nul(userbuf, min(count, len - 1)); + buf =3D iterdup_nul(from, min(count, len - 1)); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -646,8 +603,8 @@ static ssize_t lbs_wrrf_write(struct file *file, #define FOPS(fread, fwrite) { \ .owner =3D THIS_MODULE, \ .open =3D simple_open, \ - .read =3D (fread), \ - .write =3D (fwrite), \ + .read_iter =3D (fread), \ + .write_iter =3D (fwrite), \ .llseek =3D generic_file_llseek, \ } =20 @@ -796,15 +753,12 @@ static int num_of_items =3D ARRAY_SIZE(items); /** * lbs_debugfs_read - proc read function * - * @file: file to read - * @userbuf: pointer to buffer - * @count: number of bytes to read - * @ppos: read data starting position + * @iocb: metadata for IO + * @to: iov_iter to copy to * * returns: amount of data read or negative error code */ -static ssize_t lbs_debugfs_read(struct file *file, char __user *userbuf, - size_t count, loff_t *ppos) +static ssize_t lbs_debugfs_read(struct kiocb *iocb, struct iov_iter *to) { int val =3D 0; size_t pos =3D 0; @@ -819,7 +773,7 @@ static ssize_t lbs_debugfs_read(struct file *file, char= __user *userbuf, =20 p =3D buf; =20 - d =3D file->private_data; + d =3D iocb->ki_filp->private_data; =20 for (i =3D 0; i < num_of_items; i++) { if (d[i].size =3D=3D 1) @@ -834,7 +788,7 @@ static ssize_t lbs_debugfs_read(struct file *file, char= __user *userbuf, pos +=3D sprintf(p + pos, "%s=3D%d\n", d[i].name, val); } =20 - res =3D simple_read_from_buffer(userbuf, count, ppos, p, pos); + res =3D simple_copy_to_iter(p, &iocb->ki_pos, pos, to); =20 free_page(addr); return res; @@ -843,28 +797,26 @@ static ssize_t lbs_debugfs_read(struct file *file, ch= ar __user *userbuf, /** * lbs_debugfs_write - proc write function * - * @f: file pointer - * @buf: pointer to data buffer - * @cnt: data number to write - * @ppos: file position + * @iocb: metadata for IO + * @from: iov_iter to cooy from * * returns: amount of data written */ -static ssize_t lbs_debugfs_write(struct file *f, const char __user *buf, - size_t cnt, loff_t *ppos) +static ssize_t lbs_debugfs_write(struct kiocb *iocb, struct iov_iter *from) { + size_t cnt =3D iov_iter_count(from); int r, i; char *pdata; char *p; char *p0; char *p1; char *p2; - struct debug_data *d =3D f->private_data; + struct debug_data *d =3D iocb->ki_filp->private_data; =20 if (cnt =3D=3D 0) return 0; =20 - pdata =3D memdup_user_nul(buf, cnt); + pdata =3D iterdup_nul(from, cnt); if (IS_ERR(pdata)) return PTR_ERR(pdata); =20 @@ -902,8 +854,8 @@ static ssize_t lbs_debugfs_write(struct file *f, const = char __user *buf, static const struct file_operations lbs_debug_fops =3D { .owner =3D THIS_MODULE, .open =3D simple_open, - .write =3D lbs_debugfs_write, - .read =3D lbs_debugfs_read, + .write_iter =3D lbs_debugfs_write, + .read_iter =3D lbs_debugfs_read, .llseek =3D default_llseek, }; =20 diff --git a/drivers/net/wireless/marvell/mwifiex/debugfs.c b/drivers/net/w= ireless/marvell/mwifiex/debugfs.c index 9deaf59dcb62..ad94780582e2 100644 --- a/drivers/net/wireless/marvell/mwifiex/debugfs.c +++ b/drivers/net/wireless/marvell/mwifiex/debugfs.c @@ -58,12 +58,9 @@ static char *bss_modes[] =3D { * - Multicast count * - Multicast addresses */ -static ssize_t -mwifiex_info_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_info_read(struct kiocb *iocb, struct iov_iter *to) { - struct mwifiex_private *priv =3D - (struct mwifiex_private *) file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; struct net_device *netdev =3D priv->netdev; struct netdev_hw_addr *ha; struct netdev_queue *txq; @@ -133,8 +130,8 @@ mwifiex_info_read(struct file *file, char __user *ubuf, } p +=3D sprintf(p, "\n"); =20 - ret =3D simple_read_from_buffer(ubuf, count, ppos, (char *) page, - (unsigned long) p - page); + ret =3D simple_copy_to_iter((char *) page, &iocb->ki_pos, + (unsigned long) p - page, to); =20 free_and_exit: free_page(page); @@ -162,12 +159,9 @@ mwifiex_info_read(struct file *file, char __user *ubuf, * - Number of received beacons * - Number of missed beacons */ -static ssize_t -mwifiex_getlog_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_getlog_read(struct kiocb *iocb, struct iov_iter *to) { - struct mwifiex_private *priv =3D - (struct mwifiex_private *) file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; unsigned long page =3D get_zeroed_page(GFP_KERNEL); char *p =3D (char *) page; ssize_t ret; @@ -220,8 +214,8 @@ mwifiex_getlog_read(struct file *file, char __user *ubu= f, stats.bcn_miss_cnt); =20 =20 - ret =3D simple_read_from_buffer(ubuf, count, ppos, (char *) page, - (unsigned long) p - page); + ret =3D simple_copy_to_iter((char *) page, &iocb->ki_pos, + (unsigned long) p - page, to); =20 free_and_exit: free_page(page); @@ -238,12 +232,9 @@ mwifiex_getlog_read(struct file *file, char __user *ub= uf, * - Receive packet number of each nosie_flr * - Receive packet number of each signal streath */ -static ssize_t -mwifiex_histogram_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_histogram_read(struct kiocb *iocb, struct iov_iter = *to) { - struct mwifiex_private *priv =3D - (struct mwifiex_private *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; ssize_t ret; struct mwifiex_histogram_data *phist_data; int i, value; @@ -309,8 +300,8 @@ mwifiex_histogram_read(struct file *file, char __user *= ubuf, i, value); } =20 - ret =3D simple_read_from_buffer(ubuf, count, ppos, (char *)page, - (unsigned long)p - page); + ret =3D simple_copy_to_iter((char *)page, &iocb->ki_pos, + (unsigned long)p - page, to); =20 free_and_exit: free_page(page); @@ -318,10 +309,9 @@ mwifiex_histogram_read(struct file *file, char __user = *ubuf, } =20 static ssize_t -mwifiex_histogram_write(struct file *file, const char __user *ubuf, - size_t count, loff_t *ppos) +mwifiex_histogram_write(struct kiocb *iocb, struct iov_iter *from) { - struct mwifiex_private *priv =3D (void *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; =20 if (priv && priv->hist_data) mwifiex_hist_data_reset(priv); @@ -377,12 +367,9 @@ static struct mwifiex_debug_info info; * - Tx BA stream table (TID, RA) * - Rx reorder table (TID, TA, Start window, Window size, Buffer) */ -static ssize_t -mwifiex_debug_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_debug_read(struct kiocb *iocb, struct iov_iter *to) { - struct mwifiex_private *priv =3D - (struct mwifiex_private *) file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; unsigned long page =3D get_zeroed_page(GFP_KERNEL); char *p =3D (char *) page; ssize_t ret; @@ -396,8 +383,8 @@ mwifiex_debug_read(struct file *file, char __user *ubuf, =20 p +=3D mwifiex_debug_info_to_buffer(priv, p, &info); =20 - ret =3D simple_read_from_buffer(ubuf, count, ppos, (char *) page, - (unsigned long) p - page); + ret =3D simple_copy_to_iter((char *) page, &iocb->ki_pos, + (unsigned long) p - page, to); =20 free_and_exit: free_page(page); @@ -414,14 +401,14 @@ static u32 saved_reg_type, saved_reg_offset, saved_re= g_value; * This function can be used to write to a register. */ static ssize_t -mwifiex_regrdwr_write(struct file *file, - const char __user *ubuf, size_t count, loff_t *ppos) +mwifiex_regrdwr_write(struct kiocb *iocb, struct iov_iter *from) { char *buf; int ret; u32 reg_type =3D 0, reg_offset =3D 0, reg_value =3D UINT_MAX; + size_t count =3D iov_iter_count(from); =20 - buf =3D memdup_user_nul(ubuf, min(count, (size_t)(PAGE_SIZE - 1))); + buf =3D iterdup_nul(from, min(count, (size_t)(PAGE_SIZE - 1))); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -451,12 +438,9 @@ mwifiex_regrdwr_write(struct file *file, * * This function can be used to read from a register. */ -static ssize_t -mwifiex_regrdwr_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_regrdwr_read(struct kiocb *iocb, struct iov_iter *t= o) { - struct mwifiex_private *priv =3D - (struct mwifiex_private *) file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); char *buf =3D (char *) addr; int pos =3D 0, ret =3D 0; @@ -479,7 +463,7 @@ mwifiex_regrdwr_read(struct file *file, char __user *ub= uf, saved_reg_type, saved_reg_offset, saved_reg_value); =20 - ret =3D simple_read_from_buffer(ubuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 goto done; } @@ -494,7 +478,7 @@ mwifiex_regrdwr_read(struct file *file, char __user *ub= uf, pos +=3D snprintf(buf, PAGE_SIZE, "%u 0x%x 0x%x\n", saved_reg_type, saved_reg_offset, reg_value); =20 - ret =3D simple_read_from_buffer(ubuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 done: free_page(addr); @@ -506,11 +490,9 @@ mwifiex_regrdwr_read(struct file *file, char __user *u= buf, * This function can be used read driver debugging mask value. */ static ssize_t -mwifiex_debug_mask_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +mwifiex_debug_mask_read(struct kiocb *iocb, struct iov_iter *to) { - struct mwifiex_private *priv =3D - (struct mwifiex_private *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; unsigned long page =3D get_zeroed_page(GFP_KERNEL); char *buf =3D (char *)page; size_t ret =3D 0; @@ -521,7 +503,7 @@ mwifiex_debug_mask_read(struct file *file, char __user = *ubuf, =20 pos +=3D snprintf(buf, PAGE_SIZE, "debug mask=3D0x%08x\n", priv->adapter->debug_mask); - ret =3D simple_read_from_buffer(ubuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 free_page(page); return ret; @@ -532,15 +514,15 @@ mwifiex_debug_mask_read(struct file *file, char __use= r *ubuf, * This function can be used read driver debugging mask value. */ static ssize_t -mwifiex_debug_mask_write(struct file *file, const char __user *ubuf, - size_t count, loff_t *ppos) +mwifiex_debug_mask_write(struct kiocb *iocb, struct iov_iter *from) { int ret; unsigned long debug_mask; - struct mwifiex_private *priv =3D (void *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char *buf; =20 - buf =3D memdup_user_nul(ubuf, min(count, (size_t)(PAGE_SIZE - 1))); + buf =3D iterdup_nul(from, min(count, (size_t)(PAGE_SIZE - 1))); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -559,15 +541,14 @@ mwifiex_debug_mask_write(struct file *file, const cha= r __user *ubuf, /* debugfs verext file write handler. * This function is called when the 'verext' file is opened for write */ -static ssize_t -mwifiex_verext_write(struct file *file, const char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_verext_write(struct kiocb *iocb, struct iov_iter *f= rom) { int ret; u32 versionstrsel; - struct mwifiex_private *priv =3D (void *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); =20 - ret =3D kstrtou32_from_user(ubuf, count, 10, &versionstrsel); + ret =3D kstrtou32_from_iter(from, count, 10, &versionstrsel); if (ret) return ret; =20 @@ -581,11 +562,9 @@ mwifiex_verext_write(struct file *file, const char __u= ser *ubuf, * This function can be used read driver exteneed verion string. */ static ssize_t -mwifiex_verext_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +mwifiex_verext_read(struct kiocb *iocb, struct iov_iter *to) { - struct mwifiex_private *priv =3D - (struct mwifiex_private *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; char buf[256]; int ret; =20 @@ -593,25 +572,24 @@ mwifiex_verext_read(struct file *file, char __user *u= buf, ret =3D snprintf(buf, sizeof(buf), "version string: %s\n", priv->version_str); =20 - return simple_read_from_buffer(ubuf, count, ppos, buf, ret); + return simple_copy_to_iter(buf, &iocb->ki_pos, ret, to); } =20 /* Proc memrw file write handler. * This function is called when the 'memrw' file is opened for writing * This function can be used to write to a memory location. */ -static ssize_t -mwifiex_memrw_write(struct file *file, const char __user *ubuf, size_t cou= nt, - loff_t *ppos) +static ssize_t mwifiex_memrw_write(struct kiocb *iocb, struct iov_iter *fr= om) { int ret; char cmd; struct mwifiex_ds_mem_rw mem_rw; u16 cmd_action; - struct mwifiex_private *priv =3D (void *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char *buf; =20 - buf =3D memdup_user_nul(ubuf, min(count, (size_t)(PAGE_SIZE - 1))); + buf =3D iterdup_nul(from, min(count, (size_t)(PAGE_SIZE - 1))); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -647,11 +625,9 @@ mwifiex_memrw_write(struct file *file, const char __us= er *ubuf, size_t count, * This function is called when the 'memrw' file is opened for reading * This function can be used to read from a memory location. */ -static ssize_t -mwifiex_memrw_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_memrw_read(struct kiocb *iocb, struct iov_iter *to) { - struct mwifiex_private *priv =3D (void *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); char *buf =3D (char *)addr; int ret, pos =3D 0; @@ -661,7 +637,7 @@ mwifiex_memrw_read(struct file *file, char __user *ubuf, =20 pos +=3D snprintf(buf, PAGE_SIZE, "0x%x 0x%x\n", priv->mem_rw.addr, priv->mem_rw.value); - ret =3D simple_read_from_buffer(ubuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 free_page(addr); return ret; @@ -676,15 +652,14 @@ static u32 saved_offset =3D -1, saved_bytes =3D -1; * * This function can be used to write to a RDEEPROM location. */ -static ssize_t -mwifiex_rdeeprom_write(struct file *file, - const char __user *ubuf, size_t count, loff_t *ppos) +static ssize_t mwifiex_rdeeprom_write(struct kiocb *iocb, struct iov_iter = *from) { char *buf; int ret =3D 0; int offset =3D -1, bytes =3D -1; + size_t count =3D iov_iter_count(from); =20 - buf =3D memdup_user_nul(ubuf, min(count, (size_t)(PAGE_SIZE - 1))); + buf =3D iterdup_nul(from, min(count, (size_t)(PAGE_SIZE - 1))); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -713,12 +688,9 @@ mwifiex_rdeeprom_write(struct file *file, * * This function can be used to read from a RDEEPROM location. */ -static ssize_t -mwifiex_rdeeprom_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_rdeeprom_read(struct kiocb *iocb, struct iov_iter *= to) { - struct mwifiex_private *priv =3D - (struct mwifiex_private *) file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); char *buf =3D (char *) addr; int pos, ret, i; @@ -747,7 +719,7 @@ mwifiex_rdeeprom_read(struct file *file, char __user *u= buf, pos +=3D scnprintf(buf + pos, PAGE_SIZE - pos, "%d ", value[i]); =20 done: - ret =3D simple_read_from_buffer(ubuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); out_free: free_page(addr); return ret; @@ -756,18 +728,17 @@ mwifiex_rdeeprom_read(struct file *file, char __user = *ubuf, /* Proc hscfg file write handler * This function can be used to configure the host sleep parameters. */ -static ssize_t -mwifiex_hscfg_write(struct file *file, const char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_hscfg_write(struct kiocb *iocb, struct iov_iter *fr= om) { - struct mwifiex_private *priv =3D (void *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); char *buf; int ret, arg_num; struct mwifiex_ds_hs_cfg hscfg; int conditions =3D HS_CFG_COND_DEF; u32 gpio =3D HS_CFG_GPIO_DEF, gap =3D HS_CFG_GAP_DEF; =20 - buf =3D memdup_user_nul(ubuf, min(count, (size_t)(PAGE_SIZE - 1))); + buf =3D iterdup_nul(from, min(count, (size_t)(PAGE_SIZE - 1))); if (IS_ERR(buf)) return PTR_ERR(buf); =20 @@ -815,11 +786,9 @@ mwifiex_hscfg_write(struct file *file, const char __us= er *ubuf, * This function can be used to read host sleep configuration * parameters from driver. */ -static ssize_t -mwifiex_hscfg_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_hscfg_read(struct kiocb *iocb, struct iov_iter *to) { - struct mwifiex_private *priv =3D (void *)file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; unsigned long addr =3D get_zeroed_page(GFP_KERNEL); char *buf =3D (char *)addr; int pos, ret; @@ -834,17 +803,16 @@ mwifiex_hscfg_read(struct file *file, char __user *ub= uf, pos =3D snprintf(buf, PAGE_SIZE, "%u 0x%x 0x%x\n", hscfg.conditions, hscfg.gpio, hscfg.gap); =20 - ret =3D simple_read_from_buffer(ubuf, count, ppos, buf, pos); + ret =3D simple_copy_to_iter(buf, &iocb->ki_pos, pos, to); =20 free_page(addr); return ret; } =20 -static ssize_t -mwifiex_timeshare_coex_read(struct file *file, char __user *ubuf, - size_t count, loff_t *ppos) +static ssize_t mwifiex_timeshare_coex_read(struct kiocb *iocb, + struct iov_iter *to) { - struct mwifiex_private *priv =3D file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; char buf[3]; bool timeshare_coex; int ret; @@ -859,21 +827,21 @@ mwifiex_timeshare_coex_read(struct file *file, char _= _user *ubuf, return ret; =20 len =3D sprintf(buf, "%d\n", timeshare_coex); - return simple_read_from_buffer(ubuf, count, ppos, buf, len); + return simple_copy_to_iter(buf, &iocb->ki_pos, len, to); } =20 static ssize_t -mwifiex_timeshare_coex_write(struct file *file, const char __user *ubuf, - size_t count, loff_t *ppos) +mwifiex_timeshare_coex_write(struct kiocb *iocb, struct iov_iter *from) { bool timeshare_coex; - struct mwifiex_private *priv =3D file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); int ret; =20 if (priv->adapter->fw_api_ver !=3D MWIFIEX_FW_V15) return -EOPNOTSUPP; =20 - ret =3D kstrtobool_from_user(ubuf, count, ×hare_coex); + ret =3D kstrtobool_from_iter(from, count, ×hare_coex); if (ret) return ret; =20 @@ -885,16 +853,15 @@ mwifiex_timeshare_coex_write(struct file *file, const= char __user *ubuf, return count; } =20 -static ssize_t -mwifiex_reset_write(struct file *file, - const char __user *ubuf, size_t count, loff_t *ppos) +static ssize_t mwifiex_reset_write(struct kiocb *iocb, struct iov_iter *fr= om) { - struct mwifiex_private *priv =3D file->private_data; + struct mwifiex_private *priv =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); struct mwifiex_adapter *adapter =3D priv->adapter; bool result; int rc; =20 - rc =3D kstrtobool_from_user(ubuf, count, &result); + rc =3D kstrtobool_from_iter(from, count, &result); if (rc) return rc; =20 @@ -916,20 +883,20 @@ mwifiex_reset_write(struct file *file, =20 #define MWIFIEX_DFS_FILE_OPS(name) \ static const struct file_operations mwifiex_dfs_##name##_fops =3D { \ - .read =3D mwifiex_##name##_read, \ - .write =3D mwifiex_##name##_write, \ + .read_iter =3D mwifiex_##name##_read, \ + .write_iter =3D mwifiex_##name##_write, \ .open =3D simple_open, \ }; =20 #define MWIFIEX_DFS_FILE_READ_OPS(name) \ static const struct file_operations mwifiex_dfs_##name##_fops =3D { \ - .read =3D mwifiex_##name##_read, \ + .read_iter =3D mwifiex_##name##_read, \ .open =3D simple_open, \ }; =20 #define MWIFIEX_DFS_FILE_WRITE_OPS(name) \ static const struct file_operations mwifiex_dfs_##name##_fops =3D { \ - .write =3D mwifiex_##name##_write, \ + .write_iter =3D mwifiex_##name##_write, \ .open =3D simple_open, \ }; =20 --=20 2.43.0