diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2010-12-22 15:28:44 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2010-12-22 15:28:44 +0000 |
commit | 4388a09b0f9d070884ecd0e8a128f20539991dfe (patch) | |
tree | a86a64ab3b976be2dbea761b70dd275a95a71b44 /daemons/dmeventd | |
parent | 38129844221e47a6018a56d71c2d72926f3e58ec (diff) | |
download | lvm2-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.c | 27 |
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; } |