Re: [PATCH] Fix sysrq emergency thaw

From: Pavel Machek
Date: Fri Aug 05 2016 - 16:15:00 EST


On Wed 2016-07-20 16:11:16, Charles Gong wrote:
> "SYSRQ + J" triggers a call to emergency_thaw_all(). Currently, this
> is an infinite loop. Once we trigger it, we'll need to do a hard
> power-cycle. There are users reporting this bug from 2012 to 2016, for
> example, at https://bugzilla.kernel.org/show_bug.cgi?id=47741.
>
> This happens because thaw_bdev() fails to return -EINVAL in the
> non-frozen case, so fix it so that do_one_thaw() can recognize this case
> and quit from looping. I checked that none of the other thaw_bdev()
> callers check the return value.
>
> The regression was introduced in commit 4504230a7156 ("freeze_bdev: grab
> active reference to frozen superblocks").
>
> Reviewed-by: Chris Mason <clm@xxxxxx>
> Signed-off-by: Charles Gong <cggong@xxxxxx>

Acked-by: Pavel Machek <pavel@xxxxxx>

(even magic should be finite...)
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html