From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759692AbcAKOVu (ORCPT ); Mon, 11 Jan 2016 09:21:50 -0500 Received: from mail-lf0-f49.google.com ([209.85.215.49]:35376 "EHLO mail-lf0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758936AbcAKOVs (ORCPT ); Mon, 11 Jan 2016 09:21:48 -0500 Subject: Re: [PATCH 42/53] perf record: Prevent reading invalid data in record__mmap_read To: Wang Nan , acme@kernel.org References: <1452520124-2073-1-git-send-email-wangnan0@huawei.com> <1452520124-2073-43-git-send-email-wangnan0@huawei.com> Cc: linux-kernel@vger.kernel.org, pi3orama@163.com, lizefan@huawei.com, netdev@vger.kernel.org, davem@davemloft.net, He Kuang , Arnaldo Carvalho de Melo , Jiri Olsa , Masami Hiramatsu , Namhyung Kim From: Sergei Shtylyov Organization: Cogent Embedded Message-ID: <5693BA78.70606@cogentembedded.com> Date: Mon, 11 Jan 2016 17:21:44 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <1452520124-2073-43-git-send-email-wangnan0@huawei.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello. On 01/11/2016 04:48 PM, Wang Nan wrote: > When record__mmap_read() require data more than the size of ring > buffer, drop those data to avoid access invalid memory. > > This can happen when reading from overwritable ring buffer, which > should be avoided. However, check this for robustness. > > Signed-off-by: Wang Nan > Signed-off-by: He Kuang > Cc: Arnaldo Carvalho de Melo > Cc: Jiri Olsa > Cc: Masami Hiramatsu > Cc: Namhyung Kim > Cc: Zefan Li > Cc: pi3orama@163.com > --- > tools/perf/builtin-record.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c > index b65b41f..3f58426 100644 > --- a/tools/perf/builtin-record.c > +++ b/tools/perf/builtin-record.c > @@ -37,6 +37,7 @@ > #include > #include > #include > +#include > > > struct record { > @@ -94,6 +95,13 @@ static int record__mmap_read(struct record *rec, int idx) > rec->samples++; > > size = head - old; > + if (size > (unsigned long)(md->mask) + 1) { > + WARN_ONCE(1, "WARNING: failed to keep up with mmap data. (warn only once)\n"); WARNING is already printed by WARN*(), no? [...] MBR, Sergei