Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp753732imm; Thu, 13 Sep 2018 07:15:56 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaR331Aj0/mv9KbtX4h0fw3EL/d46z8+R5oFEOcf8DwIruHKAyP0LgKbg0e1Kypk/Vu5FFi X-Received: by 2002:a63:455d:: with SMTP id u29-v6mr7313201pgk.342.1536848156555; Thu, 13 Sep 2018 07:15:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536848156; cv=none; d=google.com; s=arc-20160816; b=cYV2XKvpazbhbvnng9TrgVu/8XkkoO6T5jAas98+QoTl4fZQuT3rMF4vq7bbQPQI+4 2TfN+KA6cue1AA8re+M49aCosNdXtZubc5UmQcSc92Wz3+A3/GdYZvLEWUVJ2WibJhOn ie6lcoaXO1dCtdQEUKsD7lci7o19pBBcQgIEmAtktUjJyXzoY//5n9rUy5TZLDXNnTMR EQrVVpBVVjd5yOmeLzI4gYO/TH0+rBrTZBYv1DgNEVAhwdkjW2SHUY/gIeDls5vCk6V/ ai1RPqQGoIoMwHQfkc7SiEK52obl8Ka1W1SBveEbbqjN/9p37WdOESjfXu6ifY6OBblb GlcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from; bh=xLBbCb2Ay1fHwHfBcqrbyJFCWb/z51r67Q6pzNLr07k=; b=uWIY0tD3+UOmwxpbFlpKGga3sbm4bIDMtfGXPBlOk1oDu6KRstex1fE1KuDU9PMT/3 0XwOJvTW3qCQGO8OLWTEvEDZ3wFwvN9TgfbRnHNwzc6+I35dgTw0Qtvpp/tLFojDxMtK CFf+ssXAzFI8feSBIqf3lShkCBFF6g1EZ7/iczJzUhsZGA1sOW28IAZrCvXBIM1QRF+f +YSiIAQ5AevLa3dBEhGzfjvUjeuE50tPugz1OQ9nVnzq3DBiceR4yTHkC9kNwiKJwQMd 2VDKTc5V5Wz2jmyKumZAXfZ8Ekyi9GIj0toxLrfYkFFjs1CNicBhD4kiiZobjkUHYaJD qGlw== 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 d24-v6si4581194pgb.226.2018.09.13.07.15.34; Thu, 13 Sep 2018 07:15:56 -0700 (PDT) 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 S1728320AbeIMTZM (ORCPT + 99 others); Thu, 13 Sep 2018 15:25:12 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:60400 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728536AbeIMSxS (ORCPT ); Thu, 13 Sep 2018 14:53:18 -0400 Received: from localhost (ip-213-127-77-73.ip.prioritytelecom.net [213.127.77.73]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 2CF1DD19; Thu, 13 Sep 2018 13:43:44 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Philipp Rudo , Heiko Carstens , Sasha Levin Subject: [PATCH 4.14 039/115] s390/kdump: Fix memleak in nt_vmcoreinfo Date: Thu, 13 Sep 2018 15:30:59 +0200 Message-Id: <20180913131826.128092819@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180913131823.327472833@linuxfoundation.org> References: <20180913131823.327472833@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Philipp Rudo [ Upstream commit 2d2e7075b87181ed0c675e4936e20bdadba02e1f ] The vmcoreinfo of a crashed system is potentially fragmented. Thus the crash kernel has an intermediate step where the vmcoreinfo is copied into a temporary, continuous buffer in the crash kernel memory. This temporary buffer is never freed. Free it now to prevent the memleak. While at it replace all occurrences of "VMCOREINFO" by its corresponding macro to prevent potential renaming issues. Signed-off-by: Philipp Rudo Acked-by: Heiko Carstens Signed-off-by: Heiko Carstens Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- arch/s390/kernel/crash_dump.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) --- a/arch/s390/kernel/crash_dump.c +++ b/arch/s390/kernel/crash_dump.c @@ -404,11 +404,13 @@ static void *get_vmcoreinfo_old(unsigned if (copy_oldmem_kernel(nt_name, addr + sizeof(note), sizeof(nt_name) - 1)) return NULL; - if (strcmp(nt_name, "VMCOREINFO") != 0) + if (strcmp(nt_name, VMCOREINFO_NOTE_NAME) != 0) return NULL; vmcoreinfo = kzalloc_panic(note.n_descsz); - if (copy_oldmem_kernel(vmcoreinfo, addr + 24, note.n_descsz)) + if (copy_oldmem_kernel(vmcoreinfo, addr + 24, note.n_descsz)) { + kfree(vmcoreinfo); return NULL; + } *size = note.n_descsz; return vmcoreinfo; } @@ -418,15 +420,20 @@ static void *get_vmcoreinfo_old(unsigned */ static void *nt_vmcoreinfo(void *ptr) { + const char *name = VMCOREINFO_NOTE_NAME; unsigned long size; void *vmcoreinfo; vmcoreinfo = os_info_old_entry(OS_INFO_VMCOREINFO, &size); - if (!vmcoreinfo) - vmcoreinfo = get_vmcoreinfo_old(&size); + if (vmcoreinfo) + return nt_init_name(ptr, 0, vmcoreinfo, size, name); + + vmcoreinfo = get_vmcoreinfo_old(&size); if (!vmcoreinfo) return ptr; - return nt_init_name(ptr, 0, vmcoreinfo, size, "VMCOREINFO"); + ptr = nt_init_name(ptr, 0, vmcoreinfo, size, name); + kfree(vmcoreinfo); + return ptr; } /*