在ppc架构的pseries平台上,内存热插拔使用drmem_info来跟踪可用的内存插槽。
dlpar_memory_remove_by_index(u32 drc_index) 的功能是根据提供的索引号,从 DLPAR(Dynamic Logical Partitioning,可以动态增加或减少的分配给逻辑分区的内存) 内存中的相应位置删除内存块。
此函数首先会对提供的索引号进行有效性检查,以确保其在 DLPAR 内存的有效范围内,方法如下:
遍历&drmem_info->lmbs[0]到&drmem_info->lmbs[drmem_info->n_lmbs],并将每个元素赋值给lmb,然后用lmb->drc_index对比传参drc_index。
如果全都没匹配上(例如内存插槽数量超过了lmbs数组大小,这里就会匹配不上),lmb会指向&drmem_info->lmbs[drmem_info->n_lmbs],这是数组中最后一个有效条目之后的一个元素。在函数末尾打印调试信息时,会访问lmb->base_addr,即访问数组末尾之外的内存地址,从而导致系统崩溃。
因此新增一条调试信息来记录匹配不到drc_index的情况,并仅在lmb->base_addr指向有效条目时使用下标打印调试信息。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论