Re: [PATCH] firmware: Prevent oops on delayed abort

From: Luis R. Rodriguez
Date: Wed Jan 04 2017 - 10:40:55 EST


On Wed, Jan 04, 2017 at 07:12:11PM +0800, Ming Lei wrote:
> On Wed, Jan 4, 2017 at 5:31 PM, Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> wrote:
> > If the firmware load is slow and cancelled, we may call fw_load_abort()
> > twice and promptly oops on the second with a NULL dereference.
> >
> > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> > Cc: Ming Lei <ming.lei@xxxxxxxxxxxxx>
> > Cc: "Luis R. Rodriguez" <mcgrof@xxxxxxxxxx>
> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> > ---
> > drivers/base/firmware_class.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
> > index 4497d263209f..d03e21c1d2f3 100644
> > --- a/drivers/base/firmware_class.c
> > +++ b/drivers/base/firmware_class.c
> > @@ -557,6 +557,9 @@ static void fw_load_abort(struct firmware_priv *fw_priv)
> > {
> > struct firmware_buf *buf = fw_priv->buf;
> >
> > + if (!buf)
> > + return;
> > +
> > __fw_load_abort(buf);
> >
> > /* avoid user action after loading abort */
> > --
> > 2.11.0
> >
>
> Looks fine,
>
> Acked-by: Ming Lei <ming.lei@xxxxxxxxxxxxx>

But does this fix an actual oops or just theoretical? If it does can you
include the trace, and amend the commit log to Cc stable so this gets
properly propagated into the stable kernels?

Luis