Re: [PATCH 2/5] KEYS: user_defined: sanitize key payloads

From: Eric Biggers
Date: Fri Apr 21 2017 - 14:35:01 EST


On Fri, Apr 21, 2017 at 02:57:17PM +0100, David Howells wrote:
> Eric Biggers <ebiggers3@xxxxxxxxx> wrote:
>
> > - kfree_rcu(zap, rcu);
> > + call_rcu(&zap->rcu, user_free_payload_rcu);
>
> Add kzfree_rcu()?
>
> David

We could, but it's not trivial because the way kfree_rcu() works is to store the
offset of the rcu_head as the callback function, then have a special case in RCU
reclaim that recognizes "function pointers" with value < 4096 and call kfree()
rather than the function. To support kzfree_rcu() we'd need to reserve another
4096 bytes of the address space (maybe at the end?), then check for the special
kzfree value on every RCU reclaim. Or equivalently it could be a flag. It's
possible, but it may be best to just use a custom callback for now. Then if it
can be shown later that there are a lot of users who would like a
"kzfree_rcu()", it can be added.

- Eric