summaryrefslogtreecommitdiffstats
path: root/daemons/dmeventd
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2010-12-22 15:28:44 +0000
committerZdenek Kabelac <zkabelac@redhat.com>2010-12-22 15:28:44 +0000
commit4388a09b0f9d070884ecd0e8a128f20539991dfe (patch)
treea86a64ab3b976be2dbea761b70dd275a95a71b44 /daemons/dmeventd
parent38129844221e47a6018a56d71c2d72926f3e58ec (diff)
downloadlvm2-4388a09b0f9d070884ecd0e8a128f20539991dfe.tar.gz
lvm2-4388a09b0f9d070884ecd0e8a128f20539991dfe.tar.xz
lvm2-4388a09b0f9d070884ecd0e8a128f20539991dfe.zip
Detect errors from dm_task_set calls
Check for errors in dm_task_set calls. Use goto_bad macro with stack trace. Replace label failed: with bad:.
Diffstat (limited to 'daemons/dmeventd')
-rw-r--r--daemons/dmeventd/libdevmapper-event.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/daemons/dmeventd/libdevmapper-event.c b/daemons/dmeventd/libdevmapper-event.c
index bc8ad993..05ebf0ab 100644
--- a/daemons/dmeventd/libdevmapper-event.c
+++ b/daemons/dmeventd/libdevmapper-event.c
@@ -538,34 +538,37 @@ static struct dm_task *_get_device_info(const struct dm_event_handler *dmevh)
return NULL;
}
- if (dmevh->uuid)
- dm_task_set_uuid(dmt, dmevh->uuid);
- else if (dmevh->dev_name)
- dm_task_set_name(dmt, dmevh->dev_name);
- else if (dmevh->major && dmevh->minor) {
- dm_task_set_major(dmt, dmevh->major);
- dm_task_set_minor(dmt, dmevh->minor);
- }
+ if (dmevh->uuid) {
+ if (!dm_task_set_uuid(dmt, dmevh->uuid))
+ goto_bad;
+ } else if (dmevh->dev_name) {
+ if (!dm_task_set_name(dmt, dmevh->dev_name))
+ goto_bad;
+ } else if (dmevh->major && dmevh->minor) {
+ if (!dm_task_set_major(dmt, dmevh->major) ||
+ !dm_task_set_minor(dmt, dmevh->minor))
+ goto_bad;
+ }
/* FIXME Add name or uuid or devno to messages */
if (!dm_task_run(dmt)) {
log_error("_get_device_info: dm_task_run() failed");
- goto failed;
+ goto bad;
}
if (!dm_task_get_info(dmt, &info)) {
log_error("_get_device_info: failed to get info for device");
- goto failed;
+ goto bad;
}
if (!info.exists) {
log_error("_get_device_info: device not found");
- goto failed;
+ goto bad;
}
return dmt;
-failed:
+ bad:
dm_task_destroy(dmt);
return NULL;
}