Re: [PATCH v2] vfs: avoid dereferencing pointers in iterate_supers callbacks

From: Matthew Wilcox
Date: Thu May 17 2018 - 13:30:34 EST


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);