gpt4 book ai didi

security - 安全删除 eMMC 卡(BLKSECDISCARD 返回 EOPNOTSUPP)

转载 作者:行者123 更新时间:2023-12-01 13:22:10 29 4
gpt4 key购买 nike

我需要在嵌入式系统中安全删除 MMC 卡。但是,我的 ioctl(BLKSECDISCARD) 返回 EOPNOTSUPP(与 BLKDISCARD 一样)。

MMC驱动通过读取内核代码,在kernel/linux/drivers/mmc/card/queue.c mmc_queue_setup_discard()中设置QUEUE_FLAG_DISCARD使能DISCARD,即调用如下:

if (mmc_can_erase(card))
mmc_queue_setup_discard(mq->queue, card);

其中 mmc_can_erase()kernel/linux/drivers/mmc/core/core.c 中定义为:

int mmc_can_erase(struct mmc_card *card)
{
if ((card->host->caps & MMC_CAP_ERASE) &&
(card->csd.cmdclass & CCC_ERASE) && card->erase_size)
return 1;
return 0;
}

要满足 mmc_can_erase() 中的条件需要什么?

它是卡、 Controller 、驱动程序、内核构建方式还是其他原因的特性?

理想情况下,我想启用 BLKSECDISCARD 功能,但不确定我需要做什么,或者即使它在我的嵌入式系统上是可能的。可以吗?

最佳答案

card->host->caps 描述了主机 Controller 的能力。设置的位置(假设它受支持)取决于您使用的 Controller ,例如,对于 SDHCI Controller ,其设置在 sdhci_setup_host() 中。 .

card->csd.cmdclass 从卡的 CSD(卡/设备特定数据)中读取,并指示卡支持的命令类别。在这种情况下,代码正在检查命令的删除类。参见 mmc_decode_csd() .

card->erase_size 也从卡的 CSD(如果卡有扩展 CSD)中读取,并设置在 mmc_set_erase_size() 中。 .

这些都不取决于内核的构建方式,而是硬件的功能。要找出哪些阻止您使用安全删除,您需要向内核添加一些工具以打印这些字段的值。

关于security - 安全删除 eMMC 卡(BLKSECDISCARD 返回 EOPNOTSUPP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49503307/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com