Use ode_luks_close_sync() instead of ode_luks_close() 98/157598/2
authorHyotaek Shim <hyotaek.shim@samsung.com>
Wed, 25 Oct 2017 08:30:17 +0000 (17:30 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Wed, 25 Oct 2017 08:30:51 +0000 (17:30 +0900)
ode_luks_close_sync() is performed at add_operation(BLOCK_DEV_REMOVE) of /dev/mmcblkX that is set up as crypto_LUKS

Change-Id: Ib4509d9b29fb2c00bed95907df92c76028fe2f63
Signed-off-by: Hyotaek Shim <hyotaek.shim@samsung.com>
src/block/block.c

index c17d7c4..9ab3f03 100644 (file)
@@ -1835,7 +1835,11 @@ static void trigger_operation(struct block_device *bdev, dd_list *queue, struct
                        _D("Unmount (%s) result:(%d)", devnode, ret);
                        break;
                case BLOCK_DEV_REMOVE:
-                       /* Do nothing */
+                       if (!strncmp(bdev->data->fs_type, LUKS_NAME, strlen(LUKS_NAME))) {
+                               ret = ode_luks_close_sync(EXTENDEDSD_NAME);
+                               if (ret < 0)
+                                       _E("Failed on ode_luks_close(%s)", EXTENDEDSD_NAME);
+                       }
                        break;
                default:
                        _E("Operation type is invalid (%d)", op->op);
@@ -2152,7 +2156,12 @@ static int add_block_device(struct udev_device *dev, const char *devnode, bool m
 
        if (mapper && !udev_device_get_property_value(dev, "ID_FS_TYPE")) {
                char syspath[128] = {0};
-               sprintf(syspath, "/sys/block%s", rindex(udev_device_get_syspath(dev), '/'));
+               char *r;
+
+               r = rindex(udev_device_get_syspath(dev), '/');
+               if (!r) return -ENODEV;
+
+               sprintf(syspath, "/sys/block%s", r);
                data = make_block_data(devnode,
                                syspath,
                                FILESYSTEM,
@@ -2316,12 +2325,6 @@ static int remove_block_device(struct udev_device *dev, const char *devnode)
                                _E("Failed to add operation (remove %s)", devnode);
                                return ret;
                        }
-
-                       ret = ode_luks_close(EXTENDEDSD_NAME);
-                       if (ret < 0) {
-                               _E("Failed on ode_luks_close(%s)", EXTENDEDSD_NAME);
-                               return ret;
-                       }
                } else
                        _E("fail to find block data for extended sd card");
        }