diff options
author | Milan Broz <mbroz@redhat.com> | 2010-08-19 23:05:45 +0000 |
---|---|---|
committer | Milan Broz <mbroz@redhat.com> | 2010-08-19 23:05:45 +0000 |
commit | c37a14506a16f7c34505503ee59fa322e04d28ae (patch) | |
tree | fd6503495ff988aece636d759670109e09fce02f /lib | |
parent | cca6ab596f0625bb8c0386a3688f6b0480a34c95 (diff) | |
download | lvm2-c37a14506a16f7c34505503ee59fa322e04d28ae.tar.gz lvm2-c37a14506a16f7c34505503ee59fa322e04d28ae.tar.xz lvm2-c37a14506a16f7c34505503ee59fa322e04d28ae.zip |
Fix file descriptor leak in swap signature detection
Diffstat (limited to 'lib')
-rw-r--r-- | lib/device/dev-swap.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/device/dev-swap.c b/lib/device/dev-swap.c index 62c2bb50..b8ebcca5 100644 --- a/lib/device/dev-swap.c +++ b/lib/device/dev-swap.c @@ -42,7 +42,7 @@ int dev_is_swap(struct device *dev, uint64_t *signature) { char buf[10]; uint64_t size; - int page; + int page, ret = 0; if (!dev_get_size(dev, &size)) { stack; @@ -66,11 +66,12 @@ int dev_is_swap(struct device *dev, uint64_t *signature) break; if (!dev_read(dev, page - SIGNATURE_SIZE, SIGNATURE_SIZE, buf)) { - stack; - return -1; + ret = -1; + break; } if (_swap_detect_signature(buf)) { *signature = page - SIGNATURE_SIZE; + ret = 1; break; } } @@ -78,10 +79,7 @@ int dev_is_swap(struct device *dev, uint64_t *signature) if (!dev_close(dev)) stack; - if (*signature) - return 1; - - return 0; + return ret; } #endif |