Re: rhashtable: Fix potential crash on destroy in rhashtable_shrink
From: Thomas Graf <tgraf@suug.ch>
Date: 2015-01-31 11:16:53
From: Thomas Graf <tgraf@suug.ch>
Date: 2015-01-31 11:16:53
On 01/31/15 at 08:36pm, Herbert Xu wrote:
The current being_destroyed check in rhashtable_expand is not enough since if we start a shrinking process after freeing all elements in the table that's also going to crash.
(The check in expand() is just an optimization to drop out of work cycles if it does not make sense to continue anymore.)
This patch adds a being_destroyed check to the deferred worker thread so that we bail out as soon as we take the lock.
Shouldn't the cancel_work_sync() in rhashtable_destroy() block until the deferred worker is done and cancelled?