Implement conditional logic in order to replace NULL pointer arithmetic. The use of NULL pointer arithmetic was pointed out by clang with the following warning: fs/kernfs/file.c:128:15: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] return NULL + !*ppos; ~~~~ ^ fs/seq_file.c:559:14: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] return NULL + (*pos == 0); Signed-off-by: Maíra Canal <maira.canal@xxxxxx> --- fs/kernfs/file.c | 6 ++++-- fs/seq_file.c | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c index 9414a7a60a9f..3a6990c7fe8e 100644 --- a/fs/kernfs/file.c +++ b/fs/kernfs/file.c @@ -120,12 +120,14 @@ static void *kernfs_seq_start(struct seq_file *sf, loff_t *ppos) if (next == ERR_PTR(-ENODEV)) kernfs_seq_stop_active(sf, next); return next; - } else { + } else if (*ppos) { /* * The same behavior and code as single_open(). Returns * !NULL if pos is at the beginning; otherwise, NULL. */ - return NULL + !*ppos; + return NULL; + } else { + return (void *) 1; } } diff --git a/fs/seq_file.c b/fs/seq_file.c index f8e1f4ee87ff..7b6165d5d829 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c @@ -556,7 +556,7 @@ EXPORT_SYMBOL(seq_dentry); static void *single_start(struct seq_file *p, loff_t *pos) { - return NULL + (*pos == 0); + return *pos ? NULL : (void *) 1; } static void *single_next(struct seq_file *p, void *v, loff_t *pos) -- 2.34.1