summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--lib/sysfs.c8
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 <sys/types.h>
#include <sys/stat.h>
+#include <sys/vfs.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
@@ -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;