Re: [PATCH][BROKEN] common/rc: fix check for disabled kmemleak

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On Tue, Sep 18, 2018 at 5:29 PM Darrick J. Wong <darrick.wong@xxxxxxxxxx> wrote:
>
> On Tue, Sep 18, 2018 at 01:44:56PM +0300, Amir Goldstein wrote:
> > With kernel commit b353756b2b71 ("kmemleak: always register debugfs file")
> > that was merged to v4.19-rc3, the kmemleak debugfs knob exists even if
> > kmemleak is disabled, but returns EBUSY on write.
> >
> > Suppress EBUSY errors from _check_kmemleak() by removing write permission
> > from knob on failure to initialize kmemleak.
> >
> > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
>
> Ewww, but I guess it works... :)
>

Ewww indeed, but what I wrote below is that it doesn't work,
but I couldn't figure out why.
In manual tests the method works, but some elusive detail
in the scripts must have escaped me and I still get some EBUSY
errors when running with this patch and kmemleak disabled.

Thanks,
Amir.

>
> --D
>
> > ---
> >
> > Guys,
> >
> > With kernel v4.19-rc3, tests started printing noisy messages about failure
> > to write to kmemleak knob.
> >
> > Problem is that kmemleak was disabled on my system but the test for
> > kmemleak enabled we have in place was broken by the kernel change.
> >
> > I tried this patch to hack around the new kernel behavior, but something
> > is broken in this patch as it doesn't suppress all errors.
> > For me, I prefer to have kmemleak enabled anyway, so I gave up on this
> > hack and enabled kmemleak.
> >
> > If someone is interested in taking over, be my guest.
> >
> > FYI, to enable kmemleak on kvm-xfstests I needed to configure
> > CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=5000
> > # CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF is not set
> >
> > Thanks,
> > Amir.
> >
> >  common/rc | 10 ++++++++--
> >  1 file changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/common/rc b/common/rc
> > index ec631ad9..cafc83b4 100644
> > --- a/common/rc
> > +++ b/common/rc
> > @@ -3514,8 +3514,14 @@ _init_kmemleak()
> >
> >       # Disable the automatic scan so that we can control it completely,
> >       # then dump all the leaks recorded so far.
> > -     echo "scan=off" > "$kern_knob"
> > -     _capture_kmemleak /dev/null
> > +     if echo "scan=off" > "$kern_knob" 2>/dev/null; then
> > +             _capture_kmemleak /dev/null
> > +     else
> > +             # Since kernel v4.19-rc3, the knob exists even if kmemleak is
> > +             # disabled, but returns EBUSY on write. Suppress EBUSY errors
> > +             # from _check_kmemleak() by removing write permission from knob
> > +             chmod a-w "$kern_knob"
> > +     fi
> >  }
> >
> >  # check kmemleak log
> > --
> > 2.17.1
> >



[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux