2020-09-07 09:32:54

by Tobias Klauser

[permalink] [raw]
Subject: [PATCH] fs: adjust dirtytime_interval_handler definition to match prototype

Commit 32927393dc1c ("sysctl: pass kernel pointers to ->proc_handler")
changed ctl_table.proc_handler to take a kernel pointer. Adjust the
definition of dirtytime_interval_handler to match its prototype in
linux/writeback.h which fixes the following sparse error/warning:

fs/fs-writeback.c:2189:50: warning: incorrect type in argument 3 (different address spaces)
fs/fs-writeback.c:2189:50: expected void *
fs/fs-writeback.c:2189:50: got void [noderef] __user *buffer
fs/fs-writeback.c:2184:5: error: symbol 'dirtytime_interval_handler' redeclared with different type (incompatible argument 3 (different address spaces)):
fs/fs-writeback.c:2184:5: int extern [addressable] [signed] [toplevel] dirtytime_interval_handler( ... )
fs/fs-writeback.c: note: in included file:
./include/linux/writeback.h:374:5: note: previously declared as:
./include/linux/writeback.h:374:5: int extern [addressable] [signed] [toplevel] dirtytime_interval_handler( ... )

Fixes: 32927393dc1c ("sysctl: pass kernel pointers to ->proc_handler")
Cc: Christoph Hellwig <[email protected]>
Cc: Al Viro <[email protected]>
Signed-off-by: Tobias Klauser <[email protected]>
---
fs/fs-writeback.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 149227160ff0..58b27e4070a3 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -2184,7 +2184,7 @@ static int __init start_dirtytime_writeback(void)
__initcall(start_dirtytime_writeback);

int dirtytime_interval_handler(struct ctl_table *table, int write,
- void __user *buffer, size_t *lenp, loff_t *ppos)
+ void *buffer, size_t *lenp, loff_t *ppos)
{
int ret;

--
2.27.0


2020-09-08 11:37:53

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH] fs: adjust dirtytime_interval_handler definition to match prototype

On Mon 07-09-20 11:31:40, Tobias Klauser wrote:
> Commit 32927393dc1c ("sysctl: pass kernel pointers to ->proc_handler")
> changed ctl_table.proc_handler to take a kernel pointer. Adjust the
> definition of dirtytime_interval_handler to match its prototype in
> linux/writeback.h which fixes the following sparse error/warning:
>
> fs/fs-writeback.c:2189:50: warning: incorrect type in argument 3 (different address spaces)
> fs/fs-writeback.c:2189:50: expected void *
> fs/fs-writeback.c:2189:50: got void [noderef] __user *buffer
> fs/fs-writeback.c:2184:5: error: symbol 'dirtytime_interval_handler' redeclared with different type (incompatible argument 3 (different address spaces)):
> fs/fs-writeback.c:2184:5: int extern [addressable] [signed] [toplevel] dirtytime_interval_handler( ... )
> fs/fs-writeback.c: note: in included file:
> ./include/linux/writeback.h:374:5: note: previously declared as:
> ./include/linux/writeback.h:374:5: int extern [addressable] [signed] [toplevel] dirtytime_interval_handler( ... )
>
> Fixes: 32927393dc1c ("sysctl: pass kernel pointers to ->proc_handler")
> Cc: Christoph Hellwig <[email protected]>
> Cc: Al Viro <[email protected]>
> Signed-off-by: Tobias Klauser <[email protected]>

Thanks! The patch looks good to me. You can add:

Reviewed-by: Jan Kara <[email protected]>

Honza

> ---
> fs/fs-writeback.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
> index 149227160ff0..58b27e4070a3 100644
> --- a/fs/fs-writeback.c
> +++ b/fs/fs-writeback.c
> @@ -2184,7 +2184,7 @@ static int __init start_dirtytime_writeback(void)
> __initcall(start_dirtytime_writeback);
>
> int dirtytime_interval_handler(struct ctl_table *table, int write,
> - void __user *buffer, size_t *lenp, loff_t *ppos)
> + void *buffer, size_t *lenp, loff_t *ppos)
> {
> int ret;
>
> --
> 2.27.0
>
--
Jan Kara <[email protected]>
SUSE Labs, CR