Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759253AbZDLKFZ (ORCPT ); Sun, 12 Apr 2009 06:05:25 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754339AbZDLKFI (ORCPT ); Sun, 12 Apr 2009 06:05:08 -0400 Received: from mx2.mail.elte.hu ([157.181.151.9]:50354 "EHLO mx2.mail.elte.hu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753424AbZDLKFF (ORCPT ); Sun, 12 Apr 2009 06:05:05 -0400 Date: Sun, 12 Apr 2009 12:04:50 +0200 From: Ingo Molnar To: Frederic Weisbecker Cc: Li Zefan , Tom Zanussi , Steven Rostedt , LKML Subject: Re: [PATCH 4/7] tracing/filters: allow user to specify a filter val to be string Message-ID: <20090412100450.GB3023@elte.hu> References: <49E04C22.4040608@cn.fujitsu.com> <49E04C61.10209@cn.fujitsu.com> <20090411143533.GA5977@nowhere> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090411143533.GA5977@nowhere> User-Agent: Mutt/1.5.18 (2008-05-17) X-ELTE-VirusStatus: clean X-ELTE-SpamScore: -1.5 X-ELTE-SpamLevel: X-ELTE-SpamCheck: no X-ELTE-SpamVersion: ELTE 2.0 X-ELTE-SpamCheck-Details: score=-1.5 required=5.9 tests=BAYES_00 autolearn=no SpamAssassin version=3.2.3 -1.5 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0000] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2151 Lines: 67 * Frederic Weisbecker wrote: > Hi Li, > > On Sat, Apr 11, 2009 at 03:53:05PM +0800, Li Zefan wrote: > > Suppose we would like to trace all tasks named '123', but this > > will fail: > > # echo 'parent_comm == 123' > events/sched/sched_process_fork/filter > > bash: echo: write error: Invalid argument > > > > With this patch, we allow it by: > > # echo 'parent_comm == \123' > events/sched/sched_process_fork/filter > > # cat events/sched/sched_process_fork/filter > > parent_comm == 123 > > Well, IMHO, it would be rather better to just echo > 'parent_comm == 123' and let it answer depending of which > filter_pred_*() callback we have for the concerned field. > > > The culprit is this part in filter_parse(): > > pred->val = simple_strtoull(val_str, &tmp, 10); > if (tmp == val_str) { > pred->str_val = kstrdup(val_str, GFP_KERNEL); > if (!pred->str_val) > return -ENOMEM; > } > > The idea would be to not anymore base the check on simple_strtoull to > guess whether this is a number or a string, making it act subsequently > to this assumption, which is not the good assumption we must base our > parsing yet. > > Instead, we could let filter_parse only do the job of extracting the tokens > and then fill the whole pred struct without yet bothering about the type > of the value. > > Thereafter we may defer the real value type checking on filter_add_pred() > depending on the type of the concerned field: > > if (is_string_field()) { > add it as a string value; > } else { > do the check with simple_strtoull > looks good? Then go to the number size switch.... > ... > } > > You see? > > I think it would be a saner basis of parsing. Agreed. The user input itself is unambigously parse-able - and we should not work around parsing limitations by complicating the user input. The failure situation that Li found should obviously be fixed. Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/