Re: [patch 08/12] NLM: Fix a circular lock dependency in lockd

Trond Myklebust
2007-10-09T15:00:19Z

On Mon, 2007-10-08 at 22:01 +0200, Roel Kluin wrote:
> Greg KH wrote:
>
> @@ -477,10 +479,15 @@ nlmsvc_testlock(struct svc_rqst *rqstp,
>
> if (block == NULL) {
> struct file_lock *conf = kzalloc(sizeof(*conf), GFP_KERNEL);
> + struct nlm_host *host;
>
> if (conf == NULL)
> return nlm_granted;
> - block = nlmsvc_create_block(rqstp, file, lock, cookie);
> + /* Create host handle for callback */
> + host = nlmsvc_lookup_host(rqstp, lock->caller, lock->len);
> + if (host == NULL)
> + return nlm_lck_denied_nolocks;
> + block = nlmsvc_create_block(rqstp, host, file, lock, cookie);
> if (block == NULL) {
> kfree(conf);
> return nlm_granted;
>
> To be frankly I don't know what this is about, but shouldn't conf be freed if host == NULL?

Thanks for spotting this!

Greg, should I resend this patch, or would you prefer an incremental
fix?

Cheers
Trond