On 3/21/22 10:01 PM, David Howells wrote: > Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> wrote: > >> + read_lock(&cache->reqs_lock); >> + >> + /* recheck dead state under lock */ >> + if (test_bit(CACHEFILES_DEAD, &cache->flags)) { >> + read_unlock(&cache->reqs_lock); >> + ret = -EIO; >> + goto out; >> + } >> + >> + xa_lock(xa); >> + ret = __xa_alloc(xa, &id, req, xa_limit_32b, GFP_KERNEL); > > You're holding a spinlock. You can't use GFP_KERNEL. Oh yes... I've dropped into this for second time... Sorry for that. > >> +static int cachefiles_ondemand_cinit(struct cachefiles_cache *cache, char *args) >> +{ >> ... >> + tmp = kstrdup(args, GFP_KERNEL); > > No need to copy the string. The caller already did that and added a NUL for > good measure. Right. > > I would probably move most of the functions added in this patch to > fs/cachefiles/ondemand.c. Alright. -- Thanks, Jeffle