Received: by 10.223.176.5 with SMTP id f5csp3430245wra; Mon, 29 Jan 2018 13:04:19 -0800 (PST) X-Google-Smtp-Source: AH8x226xy/6BjXWrxw0txcytrqLHOYVmD9UpJoiZkH4hs7E0S+vd9eZm0IatsDw6JDlKpboY+BsH X-Received: by 10.101.96.207 with SMTP id r15mr22155680pgv.139.1517259859335; Mon, 29 Jan 2018 13:04:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517259859; cv=none; d=google.com; s=arc-20160816; b=Iiyl3I8FH/5tiynKvXsKoHsGPvKQxcg5mL+LZRdG15VByLYJx1TeyR3Vi3WkZfLBFh LfRV8HIPH82GAe82x3EZtXToIRBP6sZFcWCEh4+wS6CD/9/PWlzuWk0yglWPZ6E29lH/ QfSFfeozSBXmn5Vy8H8LefhgIaxRO2rYsgN5hxGtC2erwhzwgy8BgIkrT9DiQ86VrvdW 5bETr4f1Lem92RdUggEBjZDUjt+kMa8ZkzjBXMkJ2vRJQ6PqYrXAs6ehiOn/ex/22ekA boNoS3c2nDsxOzL/xJrJLMmzitd/YXRSQKCV9a6Zww6MXJNxbA8WhrnS5qt5nVRI6Uky Yupw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=nNKqTPVJCbx2bz9bZMZ76upBc+jAwuXBznXCQRavs34=; b=TS9/Rm2Z2Og1xXOjZvjWzo6vcvQFvQ+MExTW+NOB+VJi9pFvdtZMb1pWtb2vtrT3AJ lFkXqSdARz1ZNkjMvf3oZPGwhC7OwU1+OJfDNW3Kc20XWyafDLMGXOZXmoKwT7OBWznv FU8AoWs0dkAhYC669HLdoan4Trfiw6KH/TB+/xxvVEy0jBzwsHM/u9q0MtU+dWdMkKyM TC5jePLLfLtj/zbrfptM+4hgTYjqaGDJLohaqRmPJKf7haJNAtcXQ4HCeqpe4mH/2MUR MCTX7Me4/VnJ+UW7kfcfQ5zgIK8XTQjI87icXyULOJuswbfumQ22yC1kI/k4AIysBu0+ C+aw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 94-v6si245454ple.413.2018.01.29.13.04.05; Mon, 29 Jan 2018 13:04:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752996AbeA2UID (ORCPT + 99 others); Mon, 29 Jan 2018 15:08:03 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:51718 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752964AbeA2UIA (ORCPT ); Mon, 29 Jan 2018 15:08:00 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 094382EF6; Mon, 29 Jan 2018 13:01:30 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Rui Wang , Thomas Gleixner , tony.luck@intel.com, linux-pci@vger.kernel.org, rjw@rjwysocki.net, linux-acpi@vger.kernel.org, bhelgaas@google.com, Ingo Molnar , Joerg Roedel Subject: [PATCH 4.4 26/74] x86/ioapic: Fix incorrect pointers in ioapic_setup_resources() Date: Mon, 29 Jan 2018 13:56:31 +0100 Message-Id: <20180129123848.802267981@linuxfoundation.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180129123847.507563674@linuxfoundation.org> References: <20180129123847.507563674@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Rui Wang commit 9d98bcec731756b8688b59ec998707924d716d7b upstream. On a 4-socket Brickland system, hot-removing one ioapic is fine. Hot-removing the 2nd one causes panic in mp_unregister_ioapic() while calling release_resource(). It is because the iomem_res pointer has already been released when removing the first ioapic. To explain the use of &res[num] here: res is assigned to ioapic_resources, and later in ioapic_insert_resources() we do: struct resource *r = ioapic_resources; for_each_ioapic(i) { insert_resource(&iomem_resource, r); r++; } Here 'r' is treated as an arry of 'struct resource', and the r++ ensures that each element of the array is inserted separately. Thus we should call release_resouce() on each element at &res[num]. Fix it by assigning the correct pointers to ioapics[i].iomem_res in ioapic_setup_resources(). Signed-off-by: Rui Wang Signed-off-by: Thomas Gleixner Cc: tony.luck@intel.com Cc: linux-pci@vger.kernel.org Cc: rjw@rjwysocki.net Cc: linux-acpi@vger.kernel.org Cc: bhelgaas@google.com Link: http://lkml.kernel.org/r/1465369193-4816-3-git-send-email-rui.y.wang@intel.com Signed-off-by: Ingo Molnar Acked-by: Joerg Roedel Signed-off-by: Greg Kroah-Hartman --- arch/x86/kernel/apic/io_apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -2592,8 +2592,8 @@ static struct resource * __init ioapic_s res[num].flags = IORESOURCE_MEM | IORESOURCE_BUSY; snprintf(mem, IOAPIC_RESOURCE_NAME_SIZE, "IOAPIC %u", i); mem += IOAPIC_RESOURCE_NAME_SIZE; + ioapics[i].iomem_res = &res[num]; num++; - ioapics[i].iomem_res = res; } ioapic_resources = res;