* [PATCH] qed: Fix potential use-after-free in qed_spq_post()
@ 2018-01-15 20:24 Roland Dreier
2018-01-16 19:57 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Roland Dreier @ 2018-01-15 20:24 UTC (permalink / raw)
To: Ariel Elior, everest-linux-l2; +Cc: netdev
From: Roland Dreier <roland@purestorage.com>
We need to check if p_ent->comp_mode is QED_SPQ_MODE_EBLOCK before
calling qed_spq_add_entry(). The test is fine is the mode is EBLOCK,
but if it isn't then qed_spq_add_entry() might kfree(p_ent).
Signed-off-by: Roland Dreier <roland@purestorage.com>
---
drivers/net/ethernet/qlogic/qed/qed_spq.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_spq.c b/drivers/net/ethernet/qlogic/qed/qed_spq.c
index be48d9abd001..3588081b2e27 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_spq.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_spq.c
@@ -776,6 +776,7 @@ int qed_spq_post(struct qed_hwfn *p_hwfn,
int rc = 0;
struct qed_spq *p_spq = p_hwfn ? p_hwfn->p_spq : NULL;
bool b_ret_ent = true;
+ bool eblock;
if (!p_hwfn)
return -EINVAL;
@@ -794,6 +795,11 @@ int qed_spq_post(struct qed_hwfn *p_hwfn,
if (rc)
goto spq_post_fail;
+ /* Check if entry is in block mode before qed_spq_add_entry,
+ * which might kfree p_ent.
+ */
+ eblock = (p_ent->comp_mode == QED_SPQ_MODE_EBLOCK);
+
/* Add the request to the pending queue */
rc = qed_spq_add_entry(p_hwfn, p_ent, p_ent->priority);
if (rc)
@@ -811,7 +817,7 @@ int qed_spq_post(struct qed_hwfn *p_hwfn,
spin_unlock_bh(&p_spq->lock);
- if (p_ent->comp_mode == QED_SPQ_MODE_EBLOCK) {
+ if (eblock) {
/* For entries in QED BLOCK mode, the completion code cannot
* perform the necessary cleanup - if it did, we couldn't
* access p_ent here to see whether it's successful or not.
--
2.14.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] qed: Fix potential use-after-free in qed_spq_post()
2018-01-15 20:24 [PATCH] qed: Fix potential use-after-free in qed_spq_post() Roland Dreier
@ 2018-01-16 19:57 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2018-01-16 19:57 UTC (permalink / raw)
To: roland; +Cc: Ariel.Elior, everest-linux-l2, netdev
From: Roland Dreier <roland@kernel.org>
Date: Mon, 15 Jan 2018 12:24:49 -0800
> From: Roland Dreier <roland@purestorage.com>
>
> We need to check if p_ent->comp_mode is QED_SPQ_MODE_EBLOCK before
> calling qed_spq_add_entry(). The test is fine is the mode is EBLOCK,
> but if it isn't then qed_spq_add_entry() might kfree(p_ent).
>
> Signed-off-by: Roland Dreier <roland@purestorage.com>
Applied, thanks Roland.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-01-16 19:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-15 20:24 [PATCH] qed: Fix potential use-after-free in qed_spq_post() Roland Dreier
2018-01-16 19:57 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).