On Fri, Jul 25, 2008 at 10:08:09PM +0200, Julia Lawall wrote: > From: Julia Lawall <julia@xxxxxxx> > > Once clp is assigned, it never becomes NULL, so we can make a label for it > in the error handling code. Because the call to path_lookup follows the > call to auth_domain_find, its error handling code should jump to this new > label. Yes, that looks correct to me; thanks! Applied.--b. > > The semantic match that finds this problem is as follows: > (http://www.emn.fr/x-info/coccinelle/) > > // <smpl> > @r@ > expression x,E; > statement S; > position p1,p2,p3; > @@ > > ( > if ((x = auth_domain_find@p1(...)) == NULL || ...) S > | > x = auth_domain_find@p1(...) > ... when != x > if (x == NULL || ...) S > ) > <... > if@p3 (...) { ... when != auth_domain_put(x) > when != if (x) { ... auth_domain_put(x); ...} > return@p2 ...; > } > ...> > ( > return x; > | > return 0; > | > x = E > | > E = x > | > auth_domain_put(x) > ) > > @exists@ > position r.p1,r.p2,r.p3; > expression x; > int ret != 0; > statement S; > @@ > > * x = auth_domain_find@p1(...) > <... > * if@p3 (...) > S > ...> > * return@p2 \(NULL\|ret\); > // </smpl> > > Signed-off-by: Julia Lawall <julia@xxxxxxx> > > --- > fs/nfsd/export.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c > index 33bfcf0..9dc036f 100644 > --- a/fs/nfsd/export.c > +++ b/fs/nfsd/export.c > @@ -1023,7 +1023,7 @@ exp_export(struct nfsctl_export *nxp) > /* Look up the dentry */ > err = path_lookup(nxp->ex_path, 0, &nd); > if (err) > - goto out_unlock; > + goto out_put_clp; > err = -EINVAL; > > exp = exp_get_by_name(clp, nd.path.mnt, nd.path.dentry, NULL); > @@ -1090,9 +1090,9 @@ finish: > exp_put(exp); > if (fsid_key && !IS_ERR(fsid_key)) > cache_put(&fsid_key->h, &svc_expkey_cache); > - if (clp) > - auth_domain_put(clp); > path_put(&nd.path); > +out_put_clp: > + auth_domain_put(clp); > out_unlock: > exp_writeunlock(); > out: -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html