From: Carlos Maiolino Date: Fri, 30 Jun 2017 16:46:07 +0000 (-0700) Subject: xfs: Check for m_errortag initialization in xfs_errortag_test X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=d04c241c669209667dd8f44335591246e601139a;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git xfs: Check for m_errortag initialization in xfs_errortag_test While adding error injection into IO completion, I notice the lack of initialization check in xfs_errortag_test(), make the error injection mechanism unable to be used there. IO completion is executed a few times before the error injection mechanism is initialized, so to be safer, make xfs_errortag_test() check if the errortag is properly initialized. Signed-off-by: Carlos Maiolino Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong --- diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index 26c32bc5cd34..2f4feb959bfb 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c @@ -233,6 +233,17 @@ xfs_errortag_test( { unsigned int randfactor; + /* + * To be able to use error injection anywhere, we need to ensure error + * injection mechanism is already initialized. + * + * Code paths like I/O completion can be called before the + * initialization is complete, but be able to inject errors in such + * places is still useful. + */ + if (!mp->m_errortag) + return false; + ASSERT(error_tag < XFS_ERRTAG_MAX); randfactor = mp->m_errortag[error_tag]; if (!randfactor || prandom_u32() % randfactor)