Package: lilo Version: 22.7.3-1.4 Severity: normal Tags: patch Hi,
my xsession's terminals (which I now and then run lilo from) happen to inherit an inotify file descriptor from the window manager. Lilo happens to encounter it when descending into /dev/fd, but unluckily those fds return ] st_mode = 040600 (S_IFDIR | S_IRUSR | S_IWUSR) when fstat()ed. This in turn causes lilo to try to descend into it, which obviously fails: ] [EMAIL PROTECTED]:~# /sbin/lilo -v ] LILO version 22.7.3, Copyright (C) 1992-1998 Werner Almesberger ] Development beyond version 21 Copyright (C) 1999-2006 John Coffman ] Released 11-Aug-2006, and compiled at 10:06:46 on Feb 3 2007 ] Debian GNU/Linux ] ] Reading boot sector from /dev/hdf ] Fatal: opendir /dev/fd/3: Not a directory ] [EMAIL PROTECTED]:~# ll /dev/fd/ ] total 0 ] lrwx------ 1 root root 64 2007-02-06 23:21 0 -> /dev/pts/3 ] lrwx------ 1 root root 64 2007-02-06 23:21 1 -> /dev/pts/3 ] lrwx------ 1 root root 64 2007-02-06 23:21 2 -> /dev/pts/3 ] lr-x------ 1 root root 64 2007-02-06 23:21 3 -> inotify ] lr-x------ 1 root root 64 2007-02-06 23:21 4 -> /proc/17696/fd ] [EMAIL PROTECTED]:~# strace -estat64 /sbin/lilo.real -v ] [...] ] stat64("/dev/fd/3", {st_mode=S_IFDIR|0600, st_size=0, ...}) = 0 ] Fatal: opendir /dev/fd/3: Not a directory ] Process 17714 detached While this behaviour of inotify fds is very strange, lilo shouldn't descend into /dev/fd anyway. I'd suggest updating debian patch 17 to additionally exclude "fd" (besides ".udev"). An update of that dpatch file is attached. Regards, Jan
#! /bin/sh -e ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Skip directories named .udev [ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts patch_opts="${patch_opts:--f --no-backup-if-mismatch}" if [ $# -ne 1 ]; then echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 fi case "$1" in -patch) patch $patch_opts -p1 < $0;; -unpatch) patch $patch_opts -p1 -R < $0;; *) echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1;; esac exit 0 @DPATCH@ diff -urN lilo-22.7.3.orig/device.c lilo-22.7.3/device.c --- lilo-22.7.3.orig/device.c 2006-12-03 20:30:37.924145000 +0000 +++ lilo-22.7.3/device.c 2006-12-03 20:31:05.443946970 +0000 @@ -101,7 +101,7 @@ return 1; } if (S_ISDIR(dev->st.st_mode) && strcmp(dir->d_name,".") && - strcmp(dir->d_name,"..")) { + strcmp(dir->d_name,"..") && strcmp(dir->d_name, ".udev") && strcmp(dir->d_name, "fd")) { for (walk = next; walk; walk = walk->next) if (stat_equal(&walk->st,&st.st)) break; if (!walk && scan_dir(&st,dev,parent,number)) {
signature.asc
Description: Digital signature