From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756922AbbLBWp6 (ORCPT ); Wed, 2 Dec 2015 17:45:58 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:37900 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751078AbbLBWp5 (ORCPT ); Wed, 2 Dec 2015 17:45:57 -0500 Date: Wed, 2 Dec 2015 14:45:56 -0800 From: Andrew Morton To: Seth Jennings Cc: Greg Kroah-Hartman , Andrew Banman , Russ Anderson , linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/3] drivers: memory: prohibit offlining of memory blocks with missing sections Message-Id: <20151202144556.c21211967d835f5607a909bb@linux-foundation.org> In-Reply-To: <1449068821-9870-3-git-send-email-sjennings@variantweb.net> References: <1449068821-9870-1-git-send-email-sjennings@variantweb.net> <1449068821-9870-3-git-send-email-sjennings@variantweb.net> X-Mailer: Sylpheed 3.4.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2 Dec 2015 09:07:01 -0600 Seth Jennings 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.