Re: [PATCH v2] vfs: avoid dereferencing pointers in iterate_supers callbacks
From: Jeff Layton
Date: Thu May 17 2018 - 13:59:03 EST
On Thu, 2018-05-17 at 11:26 -0700, Matthew Wilcox wrote:
> On Thu, May 17, 2018 at 01:43:36PM -0400, Jeff Layton wrote:
> > @@ -107,12 +109,10 @@ static void fdatawait_one_bdev(struct block_device *bdev, void *arg)
> > */
> > void ksys_sync(void)
> > {
> > - int nowait = 0, wait = 1;
> > -
> > wakeup_flusher_threads(WB_REASON_SYNC);
> > iterate_supers(sync_inodes_one_sb, NULL);
> > - iterate_supers(sync_fs_one_sb, &nowait);
> > - iterate_supers(sync_fs_one_sb, &wait);
> > + iterate_supers(sync_fs_one_sb, NULL);
> > + iterate_supers(sync_fs_one_sb, (void *)1UL);
>
> I think this is actually less clear. How about:
>
> void *wait = (void *)1UL;
>
> iterate_supers(sync_fs_one_sb, !wait);
> iterate_supers(sync_fs_one_sb, wait);
>
Sure, I could do that. We could also keep the wait/nowait vars too, I
guess.