aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Delvare <jdelvare@suse.de>2012-07-19 16:25:41 +0000
committerJean Delvare <jdelvare@suse.de>2012-07-19 16:25:41 +0000
commit186311fb8b683686fb4eb53c78f4b8fc3b0dc987 (patch)
treecde1ad8b807caec18bb30068fdbc8f6093af3bd6
parentad37d6af3b9c6b838632730dbdcd4e2fa407ef8d (diff)
downloadi2c-tools-186311fb8b683686fb4eb53c78f4b8fc3b0dc987.tar.gz
Don't choke when no SPD EEPROM is found while the eeprom or at24 driver is
loaded. This can happen, handle the case gracefully. git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@6062 7894878c-1315-0410-8ee3-d5d059ff63e0
-rw-r--r--CHANGES1
-rwxr-xr-xeeprom/decode-dimms11
2 files changed, 7 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 524da19..8a45cb6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -5,6 +5,7 @@ SVN HEAD
README: Clarify licenses
decode-dimms: Decode module configuration type of DDR2 SDRAM
Decode bus width extension of DDR3 SDRAM
+ Don't choke when no EEPROM is found
i2c-dev.h: Minimize differences with kernel flavor
Move SMBus helper functions to include/i2c/smbus.h
i2c-stub-from-dump: Be more tolerant on input dump format
diff --git a/eeprom/decode-dimms b/eeprom/decode-dimms
index 20045a6..a969276 100755
--- a/eeprom/decode-dimms
+++ b/eeprom/decode-dimms
@@ -1725,7 +1725,7 @@ sub sysfs_device_attribute
sub get_dimm_list
{
- my (@dirs, $dir, $file, @files);
+ my (@dirs, $dir, $opened, $file, @files);
if ($use_sysfs) {
@dirs = ('/sys/bus/i2c/drivers/eeprom', '/sys/bus/i2c/drivers/at24');
@@ -1735,6 +1735,7 @@ sub get_dimm_list
foreach $dir (@dirs) {
next unless opendir(local *DIR, $dir);
+ $opened++;
while (defined($file = readdir(DIR))) {
if ($use_sysfs) {
# We look for I2C devices like 0-0050 or 2-0051
@@ -1755,12 +1756,12 @@ sub get_dimm_list
close(DIR);
}
- if (@files) {
- return sort { $a->{file} cmp $b->{file} } @files;
- } elsif (! -d '/sys/module/eeprom') {
- print "No EEPROM found, are you sure the eeprom module is loaded?\n";
+ if (!$opened) {
+ print STDERR "No EEPROM found, try loading the eeprom or at24 module\n";
exit;
}
+
+ return sort { $a->{file} cmp $b->{file} } @files;
}
# @dimm is a list of hashes. There's one hash for each EEPROM we found.