summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMilan Broz <mbroz@redhat.com>2010-08-19 23:05:45 +0000
committerMilan Broz <mbroz@redhat.com>2010-08-19 23:05:45 +0000
commitc37a14506a16f7c34505503ee59fa322e04d28ae (patch)
treefd6503495ff988aece636d759670109e09fce02f /lib
parentcca6ab596f0625bb8c0386a3688f6b0480a34c95 (diff)
downloadlvm2-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.c12
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