From 98110858fe3f68d784129e6ef30770c676ccfd89 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Sat, 21 Jul 2007 09:28:12 +0000 Subject: [PATCH] Discard devices with zero feature. git-svn-id: http://lm-sensors.org/svn/lm-sensors/branches/lm-sensors-3.0.0@4637 7894878c-1315-0410-8ee3-d5d059ff63e0 --- lib/access.c | 2 -- lib/sysfs.c | 12 +++++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/access.c b/lib/access.c index d34c1500..4312add2 100644 --- a/lib/access.c +++ b/lib/access.c @@ -347,8 +347,6 @@ const sensors_feature_data *sensors_get_all_features(sensors_chip_name name, if (sensors_match_chip(sensors_proc_chips[i].chip, name)) { feature_list = sensors_proc_chips[i].feature; if (!*nr1 && !*nr2) { /* Return the first entry */ - if (!feature_list[0].data.name) /* The list may be empty */ - return NULL; *nr1 = *nr2 = 1; return &feature_list->data; } diff --git a/lib/sysfs.c b/lib/sysfs.c index f507deb8..bb91a425 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -166,6 +166,11 @@ static int sensors_read_dynamic_chip(sensors_chip_features *chip, fnum++; } + if (fnum == 1) { /* No feature */ + chip->feature = NULL; + return 0; + } + dyn_features = calloc(fnum, sizeof(sensors_chip_feature)); if (dyn_features == NULL) { sensors_fatal_error(__FUNCTION__,"Out of memory"); @@ -203,6 +208,7 @@ int sensors_init_sysfs(void) static int sensors_read_one_sysfs_chip(struct sysfs_device *dev) { int domain, bus, slot, fn; + int err = -SENSORS_ERR_PARSE; struct sysfs_attribute *attr, *bus_attr; char bus_path[SYSFS_PATH_MAX]; sensors_chip_features entry; @@ -259,6 +265,10 @@ static int sensors_read_one_sysfs_chip(struct sysfs_device *dev) if (sensors_read_dynamic_chip(&entry, dev) < 0) goto exit_free; + if (!entry.feature) { /* No feature, discard chip */ + err = 0; + goto exit_free; + } sensors_add_proc_chips(&entry); return 0; @@ -266,7 +276,7 @@ static int sensors_read_one_sysfs_chip(struct sysfs_device *dev) exit_free: free(entry.chip.prefix); free(entry.chip.busname); - return -SENSORS_ERR_PARSE; + return err; } /* returns 0 if successful, !0 otherwise */