mount: reorder deleting code in the mount_enum_drives()
[project/mountd.git] / mount.c
diff --git a/mount.c b/mount.c
index bf5fbfd..b488ede 100644 (file)
--- a/mount.c
+++ b/mount.c
@@ -152,7 +152,7 @@ static void mount_add_list(char *name, char *dev, char *serial,
        char *vendor, char *model, char *rev, int ignore, char *size, char *sector_size, int fs)
 {
        struct mount *mount;
-       char tmp[64], tmp2[64];
+       char dev_path[64], dev_link[64];
 
        mount  = malloc(sizeof(struct mount));
        INIT_LIST_HEAD(&mount->list);
@@ -172,9 +172,9 @@ static void mount_add_list(char *name, char *dev, char *serial,
                mount->status = STATUS_IGNORE;
        } else {
                log_printf("new mount : %s -> %s (%s)\n", name, dev, fs_names[mount->fs]);
-               snprintf(tmp, 64, "%s%s", uci_path, name);
-               snprintf(tmp2, 64, "/tmp/run/mountd/%s", dev);
-               symlink(tmp2, tmp);
+               snprintf(dev_link, sizeof(dev_link), "%s%s", uci_path, name);
+               snprintf(dev_path, sizeof(dev_path), "%s%s", "/tmp/run/mountd/", dev);
+               symlink(dev_path, dev_link);
                if (!mount_new("/tmp/run/mountd/", dev))
                        system_printf("ACTION=add DEVICE=%s NAME=%s /sbin/hotplug-call mount", dev, name);
        }
@@ -757,16 +757,18 @@ static void mount_enum_drives(void)
                if(!check_block(q->dev)||del)
                {
                        mount_dev_del(q);
-                       p->prev->next = p->next;
-                       p->next->prev = p->prev;
-                       p = p->next;
                        if (q->status == STATUS_MOUNTED || q->status == STATUS_EXPIRED) {
                                snprintf(tmp, 64, "%s%s", uci_path, q->name);
                                log_printf("unlinking %s\n", tmp);
                                unlink(tmp);
                                system_printf("ACTION=remove DEVICE=%s NAME=%s /sbin/hotplug-call mount", q->dev, q->name);
                        }
+
+                       p->prev->next = p->next;
+                       p->next->prev = p->prev;
+                       p = p->next;
                        free(q);
+
                        mount_dump_uci_state();
                        system_printf("/etc/fonstated/ReloadSamba");
                } else p = p->next;