diff options
Diffstat (limited to 'drivers/base/firmware_loader/firmware.h')
| -rw-r--r-- | drivers/base/firmware_loader/firmware.h | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/drivers/base/firmware_loader/firmware.h b/drivers/base/firmware_loader/firmware.h index 63bd29fdcb9c..a3014e9e2c85 100644 --- a/drivers/base/firmware_loader/firmware.h +++ b/drivers/base/firmware_loader/firmware.h @@ -117,8 +117,16 @@ static inline void __fw_state_set(struct fw_priv *fw_priv,  	WRITE_ONCE(fw_st->status, status); -	if (status == FW_STATUS_DONE || status == FW_STATUS_ABORTED) +	if (status == FW_STATUS_DONE || status == FW_STATUS_ABORTED) { +#ifdef CONFIG_FW_LOADER_USER_HELPER +		/* +		 * Doing this here ensures that the fw_priv is deleted from +		 * the pending list in all abort/done paths. +		 */ +		list_del_init(&fw_priv->pending_list); +#endif  		complete_all(&fw_st->completion); +	}  }  static inline void fw_state_aborted(struct fw_priv *fw_priv) | 
