On Aug 23, 2023, at 8:42 PM, Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx> wrote:
In preparation for implementing lockless slab shrink, use new APIs to
dynamically allocate the vmw-balloon shrinker, so that it can be freed
asynchronously via RCU. Then it doesn't need to wait for RCU read-side
critical section when releasing the struct vmballoon.
And we can simply exit vmballoon_init() when registering the shrinker
fails. So the shrinker_registered indication is redundant, just remove it.
...
Ugh. We should have already moved to OOM notifier instead...
static void vmballoon_unregister_shrinker(struct vmballoon *b)
{
- if (b->shrinker_registered)
- unregister_shrinker(&b->shrinker);
- b->shrinker_registered = false;
+ shrinker_free(b->shrinker);
}
If the patch goes through another iteration, please add:
b->shrinker = NULL;
Not that this is a real issue, but I prefer it so in order to more easily
identify UAF if the function is called elsewhere.
Otherwise, LGTM. Thanks.