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 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... :)

Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>

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