[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <7526514.EvYhyI6sBW@sven-l14>
Date: Fri, 26 May 2023 22:30:16 +0200
From: Sven Eckelmann <sven@...fation.org>
To: Marek Lindner <mareklindner@...mailbox.ch>,
Vladislav Efanov <VEfanov@...ras.ru>
Cc: Simon Wunderlich <sw@...onwunderlich.de>,
Antonio Quartulli <a@...table.cc>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
b.a.t.m.a.n@...ts.open-mesh.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, lvc-project@...uxtesting.org
Subject: Re: [PATCH] batman-adv: Broken sync while rescheduling delayed work
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@...ras.ru>
> ---
Acked-by: Sven Eckelmann <sven@...fation.org>
Thanks,
Sven
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists