Re: [PATCH V2 0/4] zram: fix two races and one zram leak

From: Luis Chamberlain
Date: Thu Oct 21 2021 - 13:47:35 EST


On Thu, Oct 21, 2021 at 10:39:46AM -0700, Luis Chamberlain wrote:
> On Wed, Oct 20, 2021 at 02:40:05PM -0700, Minchan Kim wrote:
> > On Wed, Oct 20, 2021 at 09:55:44AM +0800, Ming Lei wrote:
> > > Hello,
> > >
> > > Fixes three issues reported by Luis Chamberlain with one simpler approach:
> > >
> > > - race between between zram_reset_device() and disksize_store() (1/4)
> > >
> > > - zram leak during unloading module, which is one race between resetting
> > > and removing device (2/4)
> > >
> > > - race between zram_remove and disksize_store (3/4)
> > >
> > > Also replace replace fsync_bdev with sync_blockdev since no one opens
> > > it.(4/4)
> > >
> > > V2:
> > > - take another approach to avoid failing of zram_remove()
> > > - add patch to address race between zram_reset_device() and
> > > disksize_store()
> > >
> >
> > Thanks for breaking the problems down, Ming.
> >
> > To me, the whole patchset looks good to me since each patch solves
> > the problem step by step and finally fix.
> >
> > Luis, do you have any concern of this patchset to solve the cpuhp
> > problem? (Sorry in advance if I miss some concerns if you raised
> > in different thread. I'm totally lost).
>
> Running tests against this now. Will report back!

So indeed with these patches I end up in the situation where we if
if spawn two ltp zram02.sh runs and cancel then randomly and start
them again:

zram: Can't change algorithm for initialized device

And after that only if you do:

swapoff /dev/zram0

Only then can you restart the tests again.

I had note seen that with my patch fix, but But Ming noted that he
did see that, and I trust him, although I can't reproduce that issue.

And from at lest a testing perspective then:

Tested-by: Luis Chamberlain <mcgrof@xxxxxxxxxx>

I'll go and do the line-by-line code review now.

Luis