[PATCH] isofs may compute wrong size for large files

Todd Sabin (tastas@home.com)
14 Sep 1999 11:32:38 -0400


Hi,

There's a bug in fs/isofs/inode.c which causes it to get the wrong
size for some large files. It's triggered by having the
iso_directory_entrys describing a file go across more than one block,
with a empty record at the end of the first block. There's code to
handle that case, but it's slightly wrong.

The CD in question contains mp3s, and was burned on NT. I suspect
that mkisofs doesn't lay out the dir entries the same way, or this
would have been noticed earlier.

Todd

p.s. Is there an official maintainer of isofs who should get this?
While tracking this down I noticed there have been a few isofs patches
to lkml recently that didn't get into the kernel...

--- fs/isofs/inode.c.orig Thu Aug 26 17:18:06 1999
+++ fs/isofs/inode.c Tue Sep 14 10:53:07 1999
@@ -1062,7 +1062,6 @@
goto out_noread;
}
pnt = ((unsigned char *) bh->b_data + offset);
- raw_inode = ((struct iso_directory_record *) pnt);
/*
* Note: this is invariant even if the record
* spans buffers and must be copied ...
@@ -1074,6 +1073,7 @@
ino = (ino & ~(ISOFS_BLOCK_SIZE - 1)) + ISOFS_BLOCK_SIZE;
continue;
}
+ raw_inode = ((struct iso_directory_record *) pnt);

/* Check whether the raw inode spans the buffer ... */
if (offset + reclen > bufsize){

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/