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

Greg KH
2007-10-09T15:14:18Z

On Tue, Oct 09, 2007 at 11:00:28AM -0400, Trond Myklebust wrote:
>
> 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?

An incremental one would be best.

thanks,

greg k-h