Patch from Alex Tomas <bzzz@tmi.comex.ru>

There's a missing unlock_kernel() on an error path.


 25-akpm/fs/ext3/dir.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

diff -puN fs/ext3/dir.c~htree-lock_kernel-fix fs/ext3/dir.c
--- 25/fs/ext3/dir.c~htree-lock_kernel-fix	Tue Mar  4 16:34:07 2003
+++ 25-akpm/fs/ext3/dir.c	Tue Mar  4 16:34:07 2003
@@ -105,8 +105,10 @@ static int ext3_readdir(struct file * fi
 
 	if (is_dx(inode)) {
 		err = ext3_dx_readdir(filp, dirent, filldir);
-		if (err != ERR_BAD_DX_DIR)
+		if (err != ERR_BAD_DX_DIR) {
+			unlock_kernel();
 			return err;
+		}
 		/*
 		 * We don't set the inode dirty flag since it's not
 		 * critical that it get flushed back to the disk.

_