Hi Greg,

Today's linux-next merge of the driver-core tree got a conflict in
drivers/base/firmware_class.c between commit 875979368eb4 ("firmware
loader: fix use-after-free by double abort") from the driver-core.current
tree and commit fe304143b0c3 ("firmware: Avoid deadlock of usermodehelper
lock at shutdown") from the driver-core tree.

I fixed it up (more may be required - see below) and can carry the fix as
necessary (no action is required).

-- 
Cheers,
Stephen Rothwell                    s...@canb.auug.org.au

diff --cc drivers/base/firmware_class.c
index 01e2103,6ede229..0000000
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@@ -446,22 -452,11 +452,18 @@@ static struct firmware_priv *to_firmwar
        return container_of(dev, struct firmware_priv, dev);
  }
  
- static void fw_load_abort(struct firmware_priv *fw_priv)
+ static void fw_load_abort(struct firmware_buf *buf)
  {
-       struct firmware_buf *buf = fw_priv->buf;
- 
 +      /*
 +       * There is a small window in which user can write to 'loading'
 +       * between loading done and disappearance of 'loading'
 +       */
 +      if (test_bit(FW_STATUS_DONE, &buf->status))
 +              return;
 +
+       list_del_init(&buf->pending_list);
        set_bit(FW_STATUS_ABORT, &buf->status);
        complete_all(&buf->completion);
- 
-       /* avoid user action after loading abort */
-       fw_priv->buf = NULL;
  }
  
  #define is_fw_load_aborted(buf)       \

Attachment: pgp7X7les8v4_.pgp
Description: PGP signature

Reply via email to