Commit 68050eb6 authored by Dan Carpenter's avatar Dan Carpenter Committed by Thierry Reding

mailbox: tegra-hsp: Use after free in tegra_hsp_remove_doorbells()

We have to use the _safe version of list_for_each() because we're
freeing the pointer as we go along.  (This might not show up testing
depending on what config options you have enabled).

Fixes: 0fe88461 ("mailbox: Add Tegra HSP driver")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 0fe88461
...@@ -334,12 +334,12 @@ static struct mbox_chan *of_tegra_hsp_xlate(struct mbox_controller *mbox, ...@@ -334,12 +334,12 @@ static struct mbox_chan *of_tegra_hsp_xlate(struct mbox_controller *mbox,
static void tegra_hsp_remove_doorbells(struct tegra_hsp *hsp) static void tegra_hsp_remove_doorbells(struct tegra_hsp *hsp)
{ {
struct tegra_hsp_doorbell *db; struct tegra_hsp_doorbell *db, *tmp;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&hsp->lock, flags); spin_lock_irqsave(&hsp->lock, flags);
list_for_each_entry(db, &hsp->doorbells, list) list_for_each_entry_safe(db, tmp, &hsp->doorbells, list)
__tegra_hsp_doorbell_destroy(db); __tegra_hsp_doorbell_destroy(db);
spin_unlock_irqrestore(&hsp->lock, flags); spin_unlock_irqrestore(&hsp->lock, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment