Re: general protection fault in strncasecmp

From: David Howells
Date: Fri Oct 09 2020 - 06:04:34 EST


Hillf Danton <hdanton@xxxxxxxx> wrote:

> + /*
> + * care to detect writers because
> + *
> + * read_seqbegin_or_lock(&net->cells_lock, &seq);
> + *
> + * is unable to block
> + *
> + * write_seqlock(&net->cells_lock);
> + *
> + */

That shouldn't be true. The loop may make one or two passes, the first
without the lock, the second with. The RCU read lock is supposed to be held
in both cases too (but see below).

One of the call sites, however, afs_probe_cell_name(), doesn't call
afs_lookup_cell_rcu() with the RCU read lock held - which is an error, but not
obviously the one that's biting here.

David