在Little kernel bootloader中检查malloc之后的null?

时间:2012-07-12 08:04:44

标签: linux-kernel malloc bootloader

在很多地方的Little Kernel引导加载程序中,在malloc或memalign之后没有检查null。

例如:在

void flash_init(void) at flash_cmdlist = memalign(32, 1024);

char *target_cmdline(char *org_cmdline)
{
    cmdline = (char *)malloc(MAX_CMDLINE_LEN);
    memset(cmdline, 0, MAX_CMDLINE_LEN);
}

是否假设malloc在启动时不会返回null?

2 个答案:

答案 0 :(得分:1)

shunty,你应该做一些代码背景研究:)

你所指的代码实际上并不是由LK的作者提供的,而是来自Google / Qcom,而那部分(aboot)是使用遗留的android bootloader的一些转储创建的,我仍然有看起来像的文件太相似但无法将它们发布到公共领域。

他们不检查null的原因是因为在遗留引导加载程序堆中实现为非常基本的,没有空闲,没有块,只是分配,增加地址并忘记它,因为堆不会用于很长一段时间,所以这不是一个问题,但在LK本身非常能够像操作系统那样的任务,它只是完全错误,因为堆支持免费和其他标准堆函数。

答案 1 :(得分:0)

您应该始终检查null,但是如果它不能malloc,引导加载程序如何恢复?没有地方可以恢复到......它可能会重启,但这可能会导致无法重启。也许这就是他们没有检查空的原因。