Re: Oops (request_key_auth_describe) while running cve-2016-7042 from LTP

From: David Howells
Date: Fri Aug 30 2019 - 10:13:07 EST


Hillf Danton <hdanton@xxxxxxxx> wrote:

> - struct request_key_auth *rka = dereference_key_rcu(key);
> + struct request_key_auth *rka;
> +
> + rcu_read_lock();
> + rka = dereference_key_rcu(key);

This shouldn't help as the caller, proc_keys_show(), is holding the RCU read
lock across the call. The end of the function reads:

if (key->type->describe)
key->type->describe(key, m);
seq_putc(m, '\n');

rcu_read_unlock();
return 0;
}

and the documentation says "This method will be called with the RCU read lock
held".

I suspect the actual bugfix is this bit:

> + if (!rka)
> + goto out;

David