diff options
author | Petr Uzel | 2011-09-13 11:08:46 +0200 |
---|---|---|
committer | Karel Zak | 2011-09-13 11:38:13 +0200 |
commit | 3a18db62e661fbb307ad3a53c18afabc92d3c63e (patch) | |
tree | 0f7157e3d6010166c732d47f7852e77be3523515 | |
parent | chfn: remove non-ANSI definitions [smatch scan] (diff) | |
download | kernel-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>
-rw-r--r-- | lib/sysfs.c | 1 |
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; |