Re: [PATCH 3/3] drivers: memory: prohibit offlining of memory blocks with missing sections

From: Andrew Morton
Date: Wed Dec 02 2015 - 17:46:47 EST


On Wed, 2 Dec 2015 09:07:01 -0600 Seth Jennings <sjennings@xxxxxxxxxxxxxx> wrote:

> bdee237c and 982792c7 introduced large block sizes for x86.
> This made it possible to have multiple sections per memory
> block where previously, there was a only every one section
> per block.
>
> Since blocks consist of contiguous ranges of section, there
> can be holes in the blocks where sections are not present.
> If one attempts to offline such a block, a crash occurs since
> the code is not designed to deal with this.
>
> This patch is a quick fix to gaurd against the crash by
> not allowing blocks with non-present sections to be offlined.
>
> ...
>
> --- a/drivers/base/memory.c
> +++ b/drivers/base/memory.c
> @@ -303,6 +303,10 @@ static int memory_subsys_offline(struct device *dev)
> if (mem->state == MEM_OFFLINE)
> return 0;
>
> + /* Can't offline block with non-present sections */
> + if (mem->section_count != sections_per_block)
> + return -EINVAL;
> +
> return memory_block_change_state(mem, MEM_OFFLINE, MEM_ONLINE);
> }

[3/3] fixes a kernel crash so I've tagged it for -stable and shall move
it ahead of [1/2] and [2/2], which are merely cleanups.

This assumes that [3/3] is independent of the other two patches. I'll
eat my hat if it isn't.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/