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 sfr@xxxxxxxxxxxxxxxx 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:
pgpSxdzJp3x2b.pgp
Description: PGP signature