Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753732AbbGWOzc (ORCPT ); Thu, 23 Jul 2015 10:55:32 -0400 Received: from g9t5008.houston.hp.com ([15.240.92.66]:33526 "EHLO g9t5008.houston.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752437AbbGWOzZ (ORCPT ); Thu, 23 Jul 2015 10:55:25 -0400 From: "Elliott, Robert (Server Storage)" To: Pan Xinhui , "linux-kernel@vger.kernel.org" CC: Thomas Gleixner , Borislav Petkov , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "bp@suse.de" , "Kani, Toshimitsu" , "jgross@suse.com" , "mcgrof@suse.com" , "mnipxh@163.com" , "yanmin_zhang@linux.intel.com" Subject: RE: [PATCH] x86/mm/pat: Do a small optimization when dump PAT memtype list Thread-Topic: [PATCH] x86/mm/pat: Do a small optimization when dump PAT memtype list Thread-Index: AQHQxS3icwCsWp8XrUmuVL/Yrx2IOZ3pIZUg Date: Thu, 23 Jul 2015 14:53:46 +0000 Message-ID: <94D0CD8314A33A4D9D801C0FE68B40295AA04A39@G9W0745.americas.hpqcorp.net> References: <55B0B9BB.50800@intel.com> In-Reply-To: <55B0B9BB.50800@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [16.210.48.26] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id t6NEtZP4021938 Content-Length: 1651 Lines: 55 > -----Original Message----- > From: linux-kernel-owner@vger.kernel.org [mailto:linux-kernel- > owner@vger.kernel.org] On Behalf Of Pan Xinhui > Sent: Thursday, July 23, 2015 4:54 AM > To: linux-kernel@vger.kernel.org > Subject: [PATCH] x86/mm/pat: Do a small optimization when dump PAT memtype > list ... > diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c > index 268b2c8..6302119 100644 > --- a/arch/x86/mm/pat.c > +++ b/arch/x86/mm/pat.c > @@ -1001,45 +1001,42 @@ EXPORT_SYMBOL_GPL(pgprot_writethrough); > > #if defined(CONFIG_DEBUG_FS) && defined(CONFIG_X86_PAT) > > -static struct memtype *memtype_get_idx(loff_t pos) > +static struct memtype *memtype_get_idx(struct memtype *entry, loff_t pos) > { > - struct memtype *print_entry; > int ret; > > - print_entry = kzalloc(sizeof(struct memtype), GFP_KERNEL); > - if (!print_entry) > - return NULL; > - > spin_lock(&memtype_lock); > - ret = rbt_memtype_copy_nth_element(print_entry, pos); > + ret = rbt_memtype_copy_nth_element(entry, pos); > spin_unlock(&memtype_lock); > > - if (!ret) { > - return print_entry; > - } else { > - kfree(print_entry); > - return NULL; > - } > + return ret ? NULL : entry; > } > ... > static void memtype_seq_stop(struct seq_file *seq, void *v) > { > + kfree(seq->private); > } > Consider adding seq->private = NULL; so the stale pointer isn't left around. There's probably not much risk of accessing it, but NULL is safer in case it is. --- Robert Elliott, HP Server Storage ????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?