From b79f37ef16877e195ce41a3c0af1afd60be7d670 Mon Sep 17 00:00:00 2001 From: pooka Date: Wed, 14 Jul 2010 14:07:37 +0000 Subject: [PATCH] RENAME lookup semantics say return EISDIR if dvp = *vpp for the last component .... obviously(!!) --- sys/fs/puffs/puffs_vnops.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/fs/puffs/puffs_vnops.c b/sys/fs/puffs/puffs_vnops.c index 40e35445f4db..9fa174a44921 100644 --- a/sys/fs/puffs/puffs_vnops.c +++ b/sys/fs/puffs/puffs_vnops.c @@ -1,4 +1,4 @@ -/* $NetBSD: puffs_vnops.c,v 1.146 2010/06/24 13:03:10 hannken Exp $ */ +/* $NetBSD: puffs_vnops.c,v 1.147 2010/07/14 14:07:37 pooka Exp $ */ /* * Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.146 2010/06/24 13:03:10 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.147 2010/07/14 14:07:37 pooka Exp $"); #include #include @@ -500,6 +500,10 @@ puffs_vnop_lookup(void *v) } if (isdot) { + /* deal with rename lookup semantics */ + if (cnp->cn_nameiop == RENAME && (cnp->cn_flags & ISLASTCN)) + return EISDIR; + vp = ap->a_dvp; vref(vp); *ap->a_vpp = vp;