diff options
-rw-r--r-- | ext4_utils/Android.mk | 10 | ||||
-rw-r--r-- | ext4_utils/wipe.c | 9 |
2 files changed, 17 insertions, 2 deletions
diff --git a/ext4_utils/Android.mk b/ext4_utils/Android.mk index 31a4b711..4a41d8f5 100644 --- a/ext4_utils/Android.mk +++ b/ext4_utils/Android.mk @@ -70,6 +70,11 @@ LOCAL_SHARED_LIBRARIES := \ libsparse \ libz LOCAL_CFLAGS := -DREAL_UUID + +ifeq ($(BOARD_SUPPRESS_EMMC_WIPE),true) + LOCAL_CFLAGS += -DSUPPRESS_EMMC_WIPE +endif + include $(BUILD_SHARED_LIBRARY) @@ -79,6 +84,11 @@ LOCAL_SRC_FILES := $(libext4_utils_src_files) \ LOCAL_MODULE := libext4_utils_static LOCAL_STATIC_LIBRARIES := \ libsparse_static + +ifeq ($(BOARD_SUPPRESS_EMMC_WIPE),true) + LOCAL_CFLAGS += -DSUPPRESS_EMMC_WIPE +endif + include $(BUILD_STATIC_LIBRARY) diff --git a/ext4_utils/wipe.c b/ext4_utils/wipe.c index 002e0213..f8af756d 100644 --- a/ext4_utils/wipe.c +++ b/ext4_utils/wipe.c @@ -34,6 +34,7 @@ int wipe_block_device(int fd, s64 len) { +#ifndef SUPPRESS_EMMC_WIPE u64 range[2]; int ret; @@ -47,7 +48,7 @@ int wipe_block_device(int fd, s64 len) range[1] = len; ret = ioctl(fd, BLKSECDISCARD, &range); if (ret < 0) { -#endif +#endif /* NO_SECURE_DISCARD */ range[0] = 0; range[1] = len; ret = ioctl(fd, BLKDISCARD, &range); @@ -60,8 +61,12 @@ int wipe_block_device(int fd, s64 len) } #ifndef NO_SECURE_DISCARD } -#endif +#endif /* NO_SECURE_DISCARD */ return 0; +#else + warn("Wipe via secure discard suppressed due to bug in EMMC firmware\n"); + return 1; +#endif /* SUPPRESS_EMMC_WIPE */ } #else /* __linux__ */ |