seq_file: fix NULL pointer arithmetic warning
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@usp.br> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
6692531df6
commit
90b2433edb
|
@ -120,13 +120,8 @@ 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 {
|
||||
/*
|
||||
* The same behavior and code as single_open(). Returns
|
||||
* !NULL if pos is at the beginning; otherwise, NULL.
|
||||
*/
|
||||
return NULL + !*ppos;
|
||||
}
|
||||
return single_start(sf, ppos);
|
||||
}
|
||||
|
||||
static void *kernfs_seq_next(struct seq_file *sf, void *v, loff_t *ppos)
|
||||
|
|
|
@ -554,9 +554,9 @@ int seq_dentry(struct seq_file *m, struct dentry *dentry, const char *esc)
|
|||
}
|
||||
EXPORT_SYMBOL(seq_dentry);
|
||||
|
||||
static void *single_start(struct seq_file *p, loff_t *pos)
|
||||
void *single_start(struct seq_file *p, loff_t *pos)
|
||||
{
|
||||
return NULL + (*pos == 0);
|
||||
return *pos ? NULL : SEQ_START_TOKEN;
|
||||
}
|
||||
|
||||
static void *single_next(struct seq_file *p, void *v, loff_t *pos)
|
||||
|
|
|
@ -162,6 +162,7 @@ int seq_dentry(struct seq_file *, struct dentry *, const char *);
|
|||
int seq_path_root(struct seq_file *m, const struct path *path,
|
||||
const struct path *root, const char *esc);
|
||||
|
||||
void *single_start(struct seq_file *, loff_t *);
|
||||
int single_open(struct file *, int (*)(struct seq_file *, void *), void *);
|
||||
int single_open_size(struct file *, int (*)(struct seq_file *, void *), void *, size_t);
|
||||
int single_release(struct inode *, struct file *);
|
||||
|
|
Loading…
Reference in New Issue