Package: ksysguardd Version: 4:3.5.9.dfsg.1-6 Severity: normal Tags: patch Today I needed to reload the kernel module thermal and was surprised to find that after the reload the directory /proc/acpi/thermal_zone/ empty was. Some extra testing showed the same happened for the modules fan and battery.
Needless to say that having /proc directories for such common ACPI modules empty is not desirable. I also noticed that after module removal there still existed an empty directory /proc/acpi/thermal_zone. So my theory was that the old dir was "masksing" the newly created one. A look at the kernel source showed that the likely explanation for this was that some process was holding the directory open, thereby blocking the full release of the directory created by the "old" module. # lsof | grep /proc/acpi/ | awk '{print $1" "$5" "$9}' acpid REG /proc/acpi/event ksysguard DIR /proc/acpi/battery ksysguard DIR /proc/acpi/fan ksysguard DIR /proc/acpi/thermal_zone So, the culprit is ksysguardd. And the attached trivial patch fixes the issue. -- System Information: Debian Release: 5.0.2 APT prefers stable APT policy: (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.31-rc6 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages ksysguardd depends on: ii libavahi-compat-libdnssd1 0.6.23-3lenny1 Avahi Apple Bonjour compatibility ii libc6 2.7-18 GNU C Library: Shared libraries ii libsensors4 1:3.0.2-1+b2 library to read temperature/voltag ksysguardd recommends no packages. ksysguardd suggests no packages. -- no debconf information
diff -Nru kdebase-3.5.9.dfsg.1/ksysguard/ksysguardd/Linux/acpi.c kdebase-3.5.9.dfsg.1/ksysguard/ksysguardd/Linux/acpi.c --- kdebase-3.5.9.dfsg.1/ksysguard/ksysguardd/Linux/acpi.c 2005-10-10 17:04:31.000000000 +0200 +++ kdebase-3.5.9.dfsg.1/ksysguard/ksysguardd/Linux/acpi.c 2009-08-17 23:44:15.000000000 +0200 @@ -94,6 +94,7 @@ AcpiBatteryNum++; } } + closedir ( d ); } @@ -270,6 +271,7 @@ printThermalZoneTemperatureInfo, sm); } + closedir ( d ); return; } @@ -361,6 +363,7 @@ printFanStateInfo, sm); } + closedir ( d ); return; }