summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorPetr Uzel2011-09-13 11:08:46 +0200
committerKarel Zak2011-09-13 11:38:13 +0200
commit3a18db62e661fbb307ad3a53c18afabc92d3c63e (patch)
tree0f7157e3d6010166c732d47f7852e77be3523515 /lib
parentchfn: remove non-ANSI definitions [smatch scan] (diff)
downloadkernel-qcow2-util-linux-3a18db62e661fbb307ad3a53c18afabc92d3c63e.tar.gz
kernel-qcow2-util-linux-3a18db62e661fbb307ad3a53c18afabc92d3c63e.tar.xz
kernel-qcow2-util-linux-3a18db62e661fbb307ad3a53c18afabc92d3c63e.zip
lib: do not attempt to close(0) in sysfs_deinit()
If the 'open' fails we 'goto err' which runs 'sysfs_deinit()' on a 'cxt' which hasn't been fully initialised. The 'dir_fd' is still 0, so sysfs_deinit calls "close(0)". Addresses: https://bugzilla.novell.com/show_bug.cgi?id=714151 Reported-by: Diego Ercolani <diego.ercolani@gmail.com> Analysed-by: Neil Brown <nfbrown@suse.com> Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
Diffstat (limited to 'lib')
-rw-r--r--lib/sysfs.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/sysfs.c b/lib/sysfs.c
index eec1f243b..ebb3bb508 100644
--- a/lib/sysfs.c
+++ b/lib/sysfs.c
@@ -140,6 +140,7 @@ int sysfs_init(struct sysfs_cxt *cxt, dev_t devno, struct sysfs_cxt *parent)
int fd, rc = 0;
memset(cxt, 0, sizeof(*cxt));
+ cxt->dir_fd = -1;
if (!sysfs_devno_path(devno, path, sizeof(path)))
goto err;