mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 13:14:02 +02:00
fbdev: omap2: dsi: do not copy isr table
To te able to unregister stuff from isrs, the corresponding table was copied. Nobody seems to unregister stuff that way, so it does not help. But there are stack-allocated objects passed to these isrs giving chances of UAF of these objects if irqs are unregistered while they are handled, so better do not copy that table. Suggested-by: sashiko-bot@kernel.org Signed-off-by: Andreas Kemnade <andreas@kemnade.info> Signed-off-by: Helge Deller <deller@gmx.de>
This commit is contained in:
parent
95a627143a
commit
31875c51c3
|
|
@ -326,8 +326,6 @@ struct dsi_data {
|
|||
|
||||
spinlock_t irq_lock;
|
||||
struct dsi_isr_tables isr_tables;
|
||||
/* space for a copy used by the interrupt handler */
|
||||
struct dsi_isr_tables isr_tables_copy;
|
||||
|
||||
int update_channel;
|
||||
#ifdef DSI_PERF_MEASURE
|
||||
|
|
@ -838,15 +836,10 @@ static irqreturn_t omap_dsi_irq_handler(int irq, void *arg)
|
|||
timer_delete(&dsi->te_timer);
|
||||
#endif
|
||||
|
||||
/* make a copy and unlock, so that isrs can unregister
|
||||
* themselves */
|
||||
memcpy(&dsi->isr_tables_copy, &dsi->isr_tables,
|
||||
sizeof(dsi->isr_tables));
|
||||
|
||||
dsi_handle_isrs(&dsi->isr_tables, irqstatus, vcstatus, ciostatus);
|
||||
spin_unlock(&dsi->irq_lock);
|
||||
|
||||
dsi_handle_isrs(&dsi->isr_tables_copy, irqstatus, vcstatus, ciostatus);
|
||||
|
||||
dsi_handle_irq_errors(dsidev, irqstatus, vcstatus, ciostatus);
|
||||
|
||||
dsi_collect_irq_stats(dsidev, irqstatus, vcstatus, ciostatus);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user