From ae32c8a9193e09e405aa140ccc38fa557bcec215 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Tue, 31 Jan 2012 12:54:03 +0000 Subject: [PATCH] Upcoming change in sysfs will break the way libsensors detects if sysfs is mounted. Adjust the implementation so that it still works after said change. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@6017 7894878c-1315-0410-8ee3-d5d059ff63e0 --- CHANGES | 1 + lib/sysfs.c | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 7a27669b..8dbf85d4 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,7 @@ lm-sensors CHANGES file SVN HEAD libsensors: Added support for new sysfs attributes + Change sysfs detection to survive upcoming kernel changes sensors: Added support for new sysfs attributes Display both instantaneous and average power if available. Report thermal sensor type 1 as CPU diode diff --git a/lib/sysfs.c b/lib/sysfs.c index 94cea355..9068a71a 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -40,6 +41,7 @@ /****************************************************************************/ #define ATTR_MAX 128 +#define SYSFS_MAGIC 0x62656572 /* * Read an attribute from sysfs @@ -593,11 +595,11 @@ exit_free: /* returns !0 if sysfs filesystem was found, 0 otherwise */ int sensors_init_sysfs(void) { - struct stat statbuf; + struct statfs statfsbuf; snprintf(sensors_sysfs_mount, NAME_MAX, "%s", "/sys"); - if (stat(sensors_sysfs_mount, &statbuf) < 0 - || statbuf.st_nlink <= 2) /* Empty directory */ + if (statfs(sensors_sysfs_mount, &statfsbuf) < 0 + || statfsbuf.f_type != SYSFS_MAGIC) return 0; return 1;