From nobody Fri Dec 19 17:14:56 2025 Received: from mail-io1-f45.google.com (mail-io1-f45.google.com [209.85.166.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C94C17BD5 for ; Thu, 11 Apr 2024 15:32:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849557; cv=none; b=nb9k9o69j7mYvlWc03imHkq2DWFvIY5jhSmlv3vX7Wz9gyEKyOchs2W32S0O4t0VALd3bfOHRG4qminD/qzihaMsSjSFhawB68b/X5ukh5ulixz28cZxXdGQdbH/8eq1x/5ADZHf8P9niVfFgMg/IIhCBmt51FFz75utIOdhx7I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849557; c=relaxed/simple; bh=6nXHrJxwgebxvbIYQmXJeHY8zamN//PeVWbXFLxfhZo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FKzQHf2tnC/jbQ5mr/dGIbAiaJPP/dnOnku4+K5mhPsxVKLItxdF9FmMzBPbWxD7D0CKx9O4Ynusf00orezo5GFPhKQSQUmta1m4S2+oqn6G3eXNfPCogAMwWjAA0snDj5udnvI9AfrteJaKgn63JPUg1UfhVwXLctf+v6RtSiE= 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=x3a0h8Ow; arc=none smtp.client-ip=209.85.166.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kernel.dk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b="x3a0h8Ow" Received: by mail-io1-f45.google.com with SMTP id ca18e2360f4ac-7d6812b37a6so8859539f.0 for ; Thu, 11 Apr 2024 08:32:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1712849554; x=1713454354; 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=jRZlShq2GjuAkYR6CqTxKx160jv8ehLkEKbZcc7NPRA=; b=x3a0h8Ow0E5oI90+yMNeo3tUtBaf+srnVGMj7ampdtiykVwpcjRuAUPEKjcp79Ll3r b0eAvBF34EGHgOXo9+d1dUa3YUMD0fYiVXWR+I8vjF3MtqaON52tmAfI6UZPCLUzt7Jy Zoh21kfWvO2PeicCQl4CnMmYdoW/oesgYcCJ3Q/LZwXMpuax54rQrycRQ828lim66Pyx DJ484IlyqPWtTN4isE61KPYUQxECdb8I957PaJxdJ6CcxsxW3/viSD+UrVnRabMSJ010 VQ86Z29enh4llBTifI9Pad5p8B+GtA4M6WQj8AlEXFEaVQb/y1i+izx8N/XgdVPHrI7H 57tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712849554; x=1713454354; 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=jRZlShq2GjuAkYR6CqTxKx160jv8ehLkEKbZcc7NPRA=; b=i43cpbqOgj48vReL48yzFgTmMHH59/RuKBFfbwTQ4PMI9LQYgDDTXQEXFZZyYZ65iS 8R4YC24OmaBTjCzpm2FkUzAK6eonSsM0n1+yKfhQtVdnW2s5ITUeIkUeRE3Ev6IPv0QU qT5SGOAKSJOZJ+9lzwRW7BS/SN1OksQBlZBf9uW6+wzPhDg6vFF7tD+NqD7MK1oDjjhJ kFcRCYLPV2soVlB7Mt+uQXl6U5Nd70I3SVVmhnm7rhmJpci93MgYWVcsNs0oLqITep15 CRDi0IaVGC9SF5+OoGgWkET+1tte/didJo72pAv8u3gqnuBF5d/Oql9s/2yJjdQCI14b cpMw== X-Gm-Message-State: AOJu0YwgETqb93K2yTo7fD97cFIO0wTauIH4mgn2qSRj8WTqbF2+ZLDg f61In/qC5VJGUiEEQG52hZ970+yR0PP66ITLciLmuJRVbK+a4n7KUc8Z4mlRTTG2efJhbc2fbUH F X-Google-Smtp-Source: AGHT+IFuxpPSrBf1tMH8EwZa8jOJ2lAJ6UhOZNqDIiUUZBKs1IeLqGXKrVCNCB1w23aH7zn5IL2MVg== X-Received: by 2002:a5e:9907:0:b0:7d6:751f:192 with SMTP id t7-20020a5e9907000000b007d6751f0192mr170355ioj.2.1712849554011; Thu, 11 Apr 2024 08:32:34 -0700 (PDT) Received: from localhost.localdomain ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id jc25-20020a056638891900b0047f14b7f6c0sm457056jab.5.2024.04.11.08.32.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Apr 2024 08:32:32 -0700 (PDT) From: Jens Axboe To: linux-kernel@vger.kernel.org Cc: Jens Axboe Subject: [PATCH 038/437] debugfs: convert to ->read_iter() Date: Thu, 11 Apr 2024 09:12:58 -0600 Message-ID: <20240411153126.16201-39-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 --- arch/powerpc/kernel/dawr.c | 10 ++- drivers/base/regmap/regmap-debugfs.c | 32 ++++++--- drivers/misc/mei/debugfs.c | 12 ++-- fs/debugfs/file.c | 104 ++++++++++++++++++--------- include/linux/debugfs.h | 24 +++---- kernel/sched/debug.c | 9 ++- 6 files changed, 114 insertions(+), 77 deletions(-) diff --git a/arch/powerpc/kernel/dawr.c b/arch/powerpc/kernel/dawr.c index 909a05cd2809..03ab57564a18 100644 --- a/arch/powerpc/kernel/dawr.c +++ b/arch/powerpc/kernel/dawr.c @@ -59,9 +59,7 @@ static void disable_dawrs_cb(void *info) set_dawr(i, &null_brk); } =20 -static ssize_t dawr_write_file_bool(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t dawr_write_file_bool(struct kiocb *iocb, struct iov_iter *f= rom) { struct arch_hw_breakpoint null_brk =3D {0}; size_t rc; @@ -72,7 +70,7 @@ static ssize_t dawr_write_file_bool(struct file *file, set_dawr(0, &null_brk) !=3D H_SUCCESS) return -ENODEV; =20 - rc =3D debugfs_write_file_bool(file, user_buf, count, ppos); + rc =3D debugfs_write_file_bool(iocb, from); if (rc) return rc; =20 @@ -84,8 +82,8 @@ static ssize_t dawr_write_file_bool(struct file *file, } =20 static const struct file_operations dawr_enable_fops =3D { - .read =3D debugfs_read_file_bool, - .write =3D dawr_write_file_bool, + .read_iter =3D debugfs_read_file_bool, + .write_iter =3D dawr_write_file_bool, .open =3D simple_open, .llseek =3D default_llseek, }; diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/reg= map-debugfs.c index fb84cda92a75..571b5c00a28e 100644 --- a/drivers/base/regmap/regmap-debugfs.c +++ b/drivers/base/regmap/regmap-debugfs.c @@ -456,9 +456,9 @@ static int regmap_access_show(struct seq_file *s, void = *ignored) =20 DEFINE_SHOW_ATTRIBUTE(regmap_access); =20 -static ssize_t regmap_cache_only_write_file(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t __regmap_cache_only_write_file(struct file *file, + const char __user *user_buf, + size_t count, loff_t *ppos) { struct regmap *map =3D container_of(file->private_data, struct regmap, cache_only); @@ -497,15 +497,21 @@ static ssize_t regmap_cache_only_write_file(struct fi= le *file, return count; } =20 +static ssize_t regmap_cache_only_write_file(struct kiocb *iocb, + struct iov_iter *from) +{ + return vfs_write_iter(iocb, from, __regmap_cache_only_write_file); +} + static const struct file_operations regmap_cache_only_fops =3D { .open =3D simple_open, - .read =3D debugfs_read_file_bool, - .write =3D regmap_cache_only_write_file, + .read_iter =3D debugfs_read_file_bool, + .write_iter =3D regmap_cache_only_write_file, }; =20 -static ssize_t regmap_cache_bypass_write_file(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t __regmap_cache_bypass_write_file(struct file *file, + const char __user *user_buf, + size_t count, loff_t *ppos) { struct regmap *map =3D container_of(file->private_data, struct regmap, cache_bypass); @@ -537,10 +543,16 @@ static ssize_t regmap_cache_bypass_write_file(struct = file *file, return count; } =20 +static ssize_t regmap_cache_bypass_write_file(struct kiocb *iocb, + struct iov_iter *from) +{ + return vfs_write_iter(iocb, from, __regmap_cache_bypass_write_file); +} + static const struct file_operations regmap_cache_bypass_fops =3D { .open =3D simple_open, - .read =3D debugfs_read_file_bool, - .write =3D regmap_cache_bypass_write_file, + .read_iter =3D debugfs_read_file_bool, + .write_iter =3D regmap_cache_bypass_write_file, }; =20 void regmap_debugfs_init(struct regmap *map) diff --git a/drivers/misc/mei/debugfs.c b/drivers/misc/mei/debugfs.c index 3b098d4c8e3d..b2e9fa911817 100644 --- a/drivers/misc/mei/debugfs.c +++ b/drivers/misc/mei/debugfs.c @@ -133,17 +133,15 @@ static int mei_dbgfs_devstate_show(struct seq_file *m= , void *unused) } DEFINE_SHOW_ATTRIBUTE(mei_dbgfs_devstate); =20 -static ssize_t mei_dbgfs_write_allow_fa(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t mei_dbgfs_write_allow_fa(struct kiocb *iocb, struct iov_ite= r *from) { struct mei_device *dev; int ret; =20 - dev =3D container_of(file->private_data, + dev =3D container_of(iocb->ki_filp->private_data, struct mei_device, allow_fixed_address); =20 - ret =3D debugfs_write_file_bool(file, user_buf, count, ppos); + ret =3D debugfs_write_file_bool(iocb, from); if (ret < 0) return ret; dev->override_fixed_address =3D true; @@ -152,8 +150,8 @@ static ssize_t mei_dbgfs_write_allow_fa(struct file *fi= le, =20 static const struct file_operations mei_dbgfs_allow_fa_fops =3D { .open =3D simple_open, - .read =3D debugfs_read_file_bool, - .write =3D mei_dbgfs_write_allow_fa, + .read_iter =3D debugfs_read_file_bool, + .write_iter =3D mei_dbgfs_write_allow_fa, .llseek =3D generic_file_llseek, }; =20 diff --git a/fs/debugfs/file.c b/fs/debugfs/file.c index c6f4a9a98b85..c6ff9084bc0f 100644 --- a/fs/debugfs/file.c +++ b/fs/debugfs/file.c @@ -26,21 +26,19 @@ =20 struct poll_table_struct; =20 -static ssize_t default_read_file(struct file *file, char __user *buf, - size_t count, loff_t *ppos) +static ssize_t default_read_file_iter(struct kiocb *iocb, struct iov_iter = *to) { return 0; } =20 -static ssize_t default_write_file(struct file *file, const char __user *bu= f, - size_t count, loff_t *ppos) +static ssize_t default_write_file_iter(struct kiocb *iocb, struct iov_iter= *from) { - return count; + return iov_iter_count(from); } =20 const struct file_operations debugfs_noop_file_operations =3D { - .read =3D default_read_file, - .write =3D default_write_file, + .read_iter =3D default_read_file_iter, + .write_iter =3D default_write_file_iter, .open =3D simple_open, .llseek =3D noop_llseek, }; @@ -872,8 +870,9 @@ void debugfs_create_atomic_t(const char *name, umode_t = mode, } EXPORT_SYMBOL_GPL(debugfs_create_atomic_t); =20 -ssize_t debugfs_read_file_bool(struct file *file, char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t __debugfs_read_file_bool(struct file *file, + char __user *user_buf, size_t count, + loff_t *ppos) { char buf[2]; bool val; @@ -893,10 +892,16 @@ ssize_t debugfs_read_file_bool(struct file *file, cha= r __user *user_buf, buf[1] =3D '\n'; return simple_read_from_buffer(user_buf, count, ppos, buf, 2); } + +ssize_t debugfs_read_file_bool(struct kiocb *iocb, struct iov_iter *to) +{ + return vfs_read_iter(iocb, to, __debugfs_read_file_bool); +} EXPORT_SYMBOL_GPL(debugfs_read_file_bool); =20 -ssize_t debugfs_write_file_bool(struct file *file, const char __user *user= _buf, - size_t count, loff_t *ppos) +static ssize_t __debugfs_write_file_bool(struct file *file, + const char __user *user_buf, + size_t count, loff_t *ppos) { bool bv; int r; @@ -914,23 +919,28 @@ ssize_t debugfs_write_file_bool(struct file *file, co= nst char __user *user_buf, =20 return count; } + +ssize_t debugfs_write_file_bool(struct kiocb *iocb, struct iov_iter *from) +{ + return vfs_write_iter(iocb, from, __debugfs_write_file_bool); +} EXPORT_SYMBOL_GPL(debugfs_write_file_bool); =20 static const struct file_operations fops_bool =3D { - .read =3D debugfs_read_file_bool, - .write =3D debugfs_write_file_bool, + .read_iter =3D debugfs_read_file_bool, + .write_iter =3D debugfs_write_file_bool, .open =3D simple_open, .llseek =3D default_llseek, }; =20 static const struct file_operations fops_bool_ro =3D { - .read =3D debugfs_read_file_bool, + .read_iter =3D debugfs_read_file_bool, .open =3D simple_open, .llseek =3D default_llseek, }; =20 static const struct file_operations fops_bool_wo =3D { - .write =3D debugfs_write_file_bool, + .write_iter =3D debugfs_write_file_bool, .open =3D simple_open, .llseek =3D default_llseek, }; @@ -957,8 +967,8 @@ void debugfs_create_bool(const char *name, umode_t mode= , struct dentry *parent, } EXPORT_SYMBOL_GPL(debugfs_create_bool); =20 -ssize_t debugfs_read_file_str(struct file *file, char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t __debugfs_read_file_str(struct file *file, char __user *use= r_buf, + size_t count, loff_t *ppos) { struct dentry *dentry =3D F_DENTRY(file); char *str, *copy =3D NULL; @@ -991,10 +1001,15 @@ ssize_t debugfs_read_file_str(struct file *file, cha= r __user *user_buf, =20 return ret; } -EXPORT_SYMBOL_GPL(debugfs_create_str); =20 -static ssize_t debugfs_write_file_str(struct file *file, const char __user= *user_buf, - size_t count, loff_t *ppos) +ssize_t debugfs_read_file_str(struct kiocb *iocb, struct iov_iter *to) +{ + return vfs_read_iter(iocb, to, __debugfs_read_file_str); +} + +static ssize_t __debugfs_write_file_str(struct file *file, + const char __user *user_buf, + size_t count, loff_t *ppos) { struct dentry *dentry =3D F_DENTRY(file); char *old, *new =3D NULL; @@ -1044,21 +1059,26 @@ static ssize_t debugfs_write_file_str(struct file *= file, const char __user *user return r; } =20 +static ssize_t debugfs_write_file_str(struct kiocb *iocb, struct iov_iter = *from) +{ + return vfs_write_iter(iocb, from, __debugfs_write_file_str); +} + static const struct file_operations fops_str =3D { - .read =3D debugfs_read_file_str, - .write =3D debugfs_write_file_str, + .read_iter =3D debugfs_read_file_str, + .write_iter =3D debugfs_write_file_str, .open =3D simple_open, .llseek =3D default_llseek, }; =20 static const struct file_operations fops_str_ro =3D { - .read =3D debugfs_read_file_str, + .read_iter =3D debugfs_read_file_str, .open =3D simple_open, .llseek =3D default_llseek, }; =20 static const struct file_operations fops_str_wo =3D { - .write =3D debugfs_write_file_str, + .write_iter =3D debugfs_write_file_str, .open =3D simple_open, .llseek =3D default_llseek, }; @@ -1083,9 +1103,10 @@ void debugfs_create_str(const char *name, umode_t mo= de, debugfs_create_mode_unsafe(name, mode, parent, value, &fops_str, &fops_str_ro, &fops_str_wo); } +EXPORT_SYMBOL_GPL(debugfs_create_str); =20 -static ssize_t read_file_blob(struct file *file, char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t __read_file_blob(struct file *file, char __user *user_buf, + size_t count, loff_t *ppos) { struct debugfs_blob_wrapper *blob =3D file->private_data; struct dentry *dentry =3D F_DENTRY(file); @@ -1100,8 +1121,13 @@ static ssize_t read_file_blob(struct file *file, cha= r __user *user_buf, return r; } =20 -static ssize_t write_file_blob(struct file *file, const char __user *user_= buf, - size_t count, loff_t *ppos) +static ssize_t read_file_blob(struct kiocb *iocb, struct iov_iter *to) +{ + return vfs_read_iter(iocb, to, __read_file_blob); +} + +static ssize_t __write_file_blob(struct file *file, const char __user *use= r_buf, + size_t count, loff_t *ppos) { struct debugfs_blob_wrapper *blob =3D file->private_data; struct dentry *dentry =3D F_DENTRY(file); @@ -1117,9 +1143,14 @@ static ssize_t write_file_blob(struct file *file, co= nst char __user *user_buf, return r; } =20 +static ssize_t write_file_blob(struct kiocb *iocb, struct iov_iter *from) +{ + return vfs_write_iter(iocb, from, __write_file_blob); +} + static const struct file_operations fops_blob =3D { - .read =3D read_file_blob, - .write =3D write_file_blob, + .read_iter =3D read_file_blob, + .write_iter =3D write_file_blob, .open =3D simple_open, .llseek =3D default_llseek, }; @@ -1197,8 +1228,8 @@ static int u32_array_open(struct inode *inode, struct= file *file) return nonseekable_open(inode, file); } =20 -static ssize_t u32_array_read(struct file *file, char __user *buf, size_t = len, - loff_t *ppos) +static ssize_t __u32_array_read(struct file *file, char __user *buf, size_= t len, + loff_t *ppos) { size_t size =3D strlen(file->private_data); =20 @@ -1206,6 +1237,11 @@ static ssize_t u32_array_read(struct file *file, cha= r __user *buf, size_t len, file->private_data, size); } =20 +static ssize_t u32_array_read(struct kiocb *iocb, struct iov_iter *to) +{ + return vfs_read_iter(iocb, to, __u32_array_read); +} + static int u32_array_release(struct inode *inode, struct file *file) { kfree(file->private_data); @@ -1217,7 +1253,7 @@ static const struct file_operations u32_array_fops = =3D { .owner =3D THIS_MODULE, .open =3D u32_array_open, .release =3D u32_array_release, - .read =3D u32_array_read, + .read_iter =3D u32_array_read, .llseek =3D no_llseek, }; =20 @@ -1341,7 +1377,7 @@ static const struct file_operations debugfs_devm_entr= y_ops =3D { .owner =3D THIS_MODULE, .open =3D debugfs_devm_entry_open, .release =3D single_release, - .read =3D seq_read, + .read_iter =3D seq_read_iter, .llseek =3D seq_lseek }; =20 diff --git a/include/linux/debugfs.h b/include/linux/debugfs.h index c9c65b132c0f..ad417d079ec9 100644 --- a/include/linux/debugfs.h +++ b/include/linux/debugfs.h @@ -162,14 +162,11 @@ void debugfs_create_devm_seqfile(struct device *dev, = const char *name, =20 bool debugfs_initialized(void); =20 -ssize_t debugfs_read_file_bool(struct file *file, char __user *user_buf, - size_t count, loff_t *ppos); +ssize_t debugfs_read_file_bool(struct kiocb *iocb, struct iov_iter *to); =20 -ssize_t debugfs_write_file_bool(struct file *file, const char __user *user= _buf, - size_t count, loff_t *ppos); +ssize_t debugfs_write_file_bool(struct kiocb *iocb, struct iov_iter *from); =20 -ssize_t debugfs_read_file_str(struct file *file, char __user *user_buf, - size_t count, loff_t *ppos); +ssize_t debugfs_read_file_str(struct kiocb *iocb, struct iov_iter *to); =20 /** * struct debugfs_cancellation - cancellation data @@ -376,23 +373,20 @@ static inline void debugfs_create_devm_seqfile(struct= device *dev, { } =20 -static inline ssize_t debugfs_read_file_bool(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static inline ssize_t debugfs_read_file_bool(struct kiocb *iocb, + struct iov_iter *to) { return -ENODEV; } =20 -static inline ssize_t debugfs_write_file_bool(struct file *file, - const char __user *user_buf, - size_t count, loff_t *ppos) +static inline ssize_t debugfs_write_file_bool(struct kiocb *iocb, + struct iov_iter *from) { return -ENODEV; } =20 -static inline ssize_t debugfs_read_file_str(struct file *file, - char __user *user_buf, - size_t count, loff_t *ppos) +static inline ssize_t debugfs_read_file_str(struct kiocb *iocb, + struct iov_iter *to) { return -ENODEV; } diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 8d5d98a5834d..686a21ea1791 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -284,8 +284,7 @@ __read_mostly bool sched_debug_verbose; static struct dentry *sd_dentry; =20 =20 -static ssize_t sched_verbose_write(struct file *filp, const char __user *u= buf, - size_t cnt, loff_t *ppos) +static ssize_t sched_verbose_write(struct kiocb *iocb, struct iov_iter *fr= om) { ssize_t result; bool orig; @@ -294,7 +293,7 @@ static ssize_t sched_verbose_write(struct file *filp, c= onst char __user *ubuf, mutex_lock(&sched_domains_mutex); =20 orig =3D sched_debug_verbose; - result =3D debugfs_write_file_bool(filp, ubuf, cnt, ppos); + result =3D debugfs_write_file_bool(iocb, from); =20 if (sched_debug_verbose && !orig) update_sched_domain_debugfs(); @@ -313,8 +312,8 @@ static ssize_t sched_verbose_write(struct file *filp, c= onst char __user *ubuf, #endif =20 static const struct file_operations sched_verbose_fops =3D { - .read =3D debugfs_read_file_bool, - .write =3D sched_verbose_write, + .read_iter =3D debugfs_read_file_bool, + .write_iter =3D sched_verbose_write, .open =3D simple_open, .llseek =3D default_llseek, }; --=20 2.43.0