diff options
Diffstat (limited to 'debian/patches/debian/0004-exit-gracefully-when-md-device-not-found.patch')
-rw-r--r-- | debian/patches/debian/0004-exit-gracefully-when-md-device-not-found.patch | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/debian/patches/debian/0004-exit-gracefully-when-md-device-not-found.patch b/debian/patches/debian/0004-exit-gracefully-when-md-device-not-found.patch new file mode 100644 index 0000000..225a8a3 --- /dev/null +++ b/debian/patches/debian/0004-exit-gracefully-when-md-device-not-found.patch @@ -0,0 +1,23 @@ +Author: Felix Lechner <felix.lechner@lease-up.com> +Description: Exit gracefully when md device not found (Closes: #970329). + +diff -Naurp mdadm.orig/Monitor.c mdadm/Monitor.c +--- mdadm.orig/Monitor.c ++++ mdadm/Monitor.c +@@ -554,8 +554,14 @@ static int check_array(struct state *st, + if (fd < 0) + goto disappeared; + +- if (st->devnm[0] == 0) +- snprintf(st->devnm, MD_NAME_MAX, "%s", fd2devnm(fd)); ++ if (st->devnm[0] == 0) { ++ char *found = fd2devnm(fd); ++ if (!found) { ++ alert(EVENT_DEVICE_DISAPPEARED, NULL, 0, dev, NULL); ++ goto out; ++ } ++ snprintf(st->devnm, MD_NAME_MAX, "%s", found); ++ } + + for (mse2 = mdstat; mse2; mse2 = mse2->next) + if (strcmp(mse2->devnm, st->devnm) == 0) { |