From 03951ed89c90161cc73caed9a0db35762dce55aa Mon Sep 17 00:00:00 2001 From: Erez_Zadok Date: Mon, 28 May 2007 19:47:35 -0400 Subject: [PATCH] invariants: don't complain about directories with some NULL lower objects Directories can have NULL lower objects in between start/end, but NOT if at the start/end range. We cannot verify that this dentry is a type=DIR, because it may already be a negative dentry. But if dbstart is greater than dbend, we know that this couldn't have been a regular file: it had to have been a directory. In that case, don't complain about NULL lower objects in in between start/end. Signed-off-by: Erez Zadok --- fs/unionfs/union.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/fs/unionfs/union.h b/fs/unionfs/union.h index bb8d2b85f8c..36a6faa4588 100644 --- a/fs/unionfs/union.h +++ b/fs/unionfs/union.h @@ -510,9 +510,19 @@ static inline void unionfs_mntput(struct dentry *dentry, int bindex) return; if (!mnt && bindex >= 0) { #ifdef UNIONFS_DEBUG - printk(KERN_DEBUG - "unionfs_mntput: mnt=%p bindex=%d\n", - mnt, bindex); + /* + * Directories can have NULL lower objects in + * between start/end, but NOT if at the start/end + * range. We cannot verify that this dentry is a + * type=DIR, because it may already be a negative + * dentry. But if dbstart is greater than dbend, we + * know that this couldn't have been a regular file: + * it had to have been a directory. + */ + if (!(bindex > dbstart(dentry) && bindex < dbend(dentry))) + printk(KERN_WARNING + "unionfs_mntput: mnt=%p bindex=%d\n", + mnt, bindex); #endif /* UNIONFS_DEBUG */ return; } -- 2.43.0