From ae8f947894d41269b905033eef31d2e8c553fc58 Mon Sep 17 00:00:00 2001 From: Hyotaek Shim Date: Wed, 25 Oct 2017 17:30:17 +0900 Subject: [PATCH] Use ode_luks_close_sync() instead of ode_luks_close() 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 --- src/block/block.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/block/block.c b/src/block/block.c index c17d7c4..9ab3f03 100644 --- a/src/block/block.c +++ b/src/block/block.c @@ -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"); } -- 2.7.4