Re: [PATCH] batman-adv: Broken sync while rescheduling delayed work

From: Sven Eckelmann
Date: Fri May 26 2023 - 16:30:32 EST


On Friday, 26 May 2023 18:16:32 CEST Vladislav Efanov wrote:
> Syzkaller got a lot of crashes like:
> KASAN: use-after-free Write in *_timers*
>
> All of these crashes point to the same memory area:
>
> The buggy address belongs to the object at ffff88801f870000
> which belongs to the cache kmalloc-8k of size 8192
> The buggy address is located 5320 bytes inside of
> 8192-byte region [ffff88801f870000, ffff88801f872000)
>
> This area belongs to :
> batadv_priv->batadv_priv_dat->delayed_work->timer_list
>
> The reason for these issues is the lack of synchronization. Delayed
> work (batadv_dat_purge) schedules new timer/work while the device
> is being deleted. As the result new timer/delayed work is set after
> cancel_delayed_work_sync() was called. So after the device is freed
> the timer list contains pointer to already freed memory.
>
> Found by Linux Verification Center (linuxtesting.org) with syzkaller.
>
> Fixes: 2f1dfbe18507 ("batman-adv: Distributed ARP Table - implement local storage")
> Signed-off-by: Vladislav Efanov <VEfanov@xxxxxxxxx>
> ---


Acked-by: Sven Eckelmann <sven@xxxxxxxxxxxxx>

Thanks,
Sven

Attachment: signature.asc
Description: This is a digitally signed message part.