mirror of https://gitee.com/openkylin/linux.git
Input: synaptics-rmi4 - really fix attn_data use-after-free
Fix a use-after-free noticed by running with KASAN enabled. If rmi_irq_fn() is run twice in a row, then rmi_f11_attention() (among others) will end up reading from drvdata->attn_data.data, which was freed and left dangling in rmi_irq_fn(). Commit55edde9fff
("Input: synaptics-rmi4 - prevent UAF reported by KASAN") correctly identified and analyzed this bug. However the attempted fix only NULLed out a local variable, missing the fact that drvdata->attn_data is a struct, not a pointer. NULL out the correct pointer in the driver data to prevent the attention functions from copying from it. Fixes:55edde9fff
("Input: synaptics-rmi4 - prevent UAF reported by KASAN") Fixes:b908d3cd81
("Input: synaptics-rmi4 - allow to add attention data") Signed-off-by: Evan Green <evgreen@chromium.org> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20200427145537.1.Ic8f898e0147beeee2c005ee7b20f1aebdef1e7eb@changeid Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
2712c91a54
commit
d5a5e5b5fa
|
@ -205,7 +205,7 @@ static irqreturn_t rmi_irq_fn(int irq, void *dev_id)
|
||||||
|
|
||||||
if (count) {
|
if (count) {
|
||||||
kfree(attn_data.data);
|
kfree(attn_data.data);
|
||||||
attn_data.data = NULL;
|
drvdata->attn_data.data = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!kfifo_is_empty(&drvdata->attn_fifo))
|
if (!kfifo_is_empty(&drvdata->attn_fifo))
|
||||||
|
|
Loading…
Reference in New Issue