Messages in this thread | | | Date | Thu, 03 Jan 2008 15:15:56 +0100 | From | Jiri Slaby <> | Subject | Re: isofs oops - d_splice_alias+0x1f (2.6.24-rc5-mm1) |
| |
On 01/03/2008 02:51 PM, Pekka J Enberg wrote: > Hi Jiri, > > On Thu, 3 Jan 2008, Jiri Slaby wrote: >> this happened, while playing with broken dvd. > > [snip] > >> Buffer I/O error on device sr0, logical block 5441 >> end_request: I/O error, dev sr0, sector 136 >> ISOFS: unable to read i-node block >> Unable to handle kernel NULL pointer dereference at 00000000000000ad RIP: >> [<ffffffff802a679f>] d_splice_alias+0x1f/0x100 > > [snip] > >> Call Trace: >> [<ffffffff880d2395>] :isofs:isofs_lookup+0x395/0x4a0 >> [<ffffffff802a565b>] d_alloc+0x2b/0x1d0 >> [<ffffffff8029a97c>] do_lookup+0x1ac/0x200 > > Does the following patch fix it? > > Pekka > > [PATCH] isofs: check for bad inode in isofs_lookup > From: Pekka Enberg <penberg@cs.helsinki.fi> > > If isofs_read_inode() fails to read one of the inode blocks from disk, it > returns a bad inode. > > Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> > --- > fs/isofs/namei.c | 5 +++++ > 1 file changed, 5 insertions(+) > > Index: linux-2.6/fs/isofs/namei.c > =================================================================== > --- linux-2.6.orig/fs/isofs/namei.c > +++ linux-2.6/fs/isofs/namei.c > @@ -183,6 +183,11 @@ struct dentry *isofs_lookup(struct inode > unlock_kernel(); > return ERR_PTR(-EACCES); > } > + if (is_bad_inode(inode)) { > + unlock_kernel(); > + iput(inode); > + return ERR_PTR(-ENOENT); > + } > } > unlock_kernel(); > return d_splice_alias(inode, dentry);
Can't say, the DVD seems to be OK, I don't know what was wrong (as I can say, this happened several times in the past yet and after reboot everything OK; I suspect gnome auto mounter -- multiple machines, several DVD ROMs, same disk with OS, similar errors, but that's too few to report).
| |