Received: by 2002:ac0:aa62:0:0:0:0:0 with SMTP id w31-v6csp471374ima; Fri, 26 Oct 2018 01:04:32 -0700 (PDT) X-Google-Smtp-Source: AJdET5f2oLIDv2bu+2CE+ySzpV3PDZIOVnMrb/Y3yanaSyk4mnip7Db5yQWsIzvDW5r122SmvtZJ X-Received: by 2002:a17:902:9696:: with SMTP id n22-v6mr2555867plp.282.1540541072243; Fri, 26 Oct 2018 01:04:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540541072; cv=none; d=google.com; s=arc-20160816; b=DWJ9G8vT6RnvZxlDGjehyQXSu58vi9NU3HKPvICRXwKuGM7msafTkW9zzwemwMOgMs o9i+YvKSYfs5huYpZpbf//VWJTrXewCe0qFGKNb//U8bhQ42TXFocPm2nFxWBdeIdOyk 6iuT8pDKmT081PO8hWcXSIp8hge7Is/qJYICynF61h4T8OBpPYTddNG/Y9sjEXoswyqc PkG+CvIRJw1XTFsmaNuGAFwHVGADmE8mASS7xCQL9xU9jIYcfl/tBS6dm10nOMkvLpXC 5SDCKLSKughXNnfreXM72TognW6IHHimR+uoCftLg0GfRCpqrQACKiSLXjhsMyCornkr 0m4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature; bh=7NpKPSz0A7lAh2QMGTe5hISfmW+FWnrDsxztH/tnCuE=; b=JhdLKDcUPc3GDmJkxj4DRM0lXhuo9Tbrdg8AcfycVyTl9+EJKU2spchg4OIMqtPDFe fn47zTNNbZuqFRDOgFtUljdPQ8ViutXNID7JSALHJzi2wt+Wu1WdTQ1O6T5LdAvlkZ+O NO5kah9NtXNjfzFwyq4mIn6jn05RYeTytokylW+FV0j8uTITrO+dn27lR1SZXzCqmA4o 77Qm+n0ZHZuAYNZ8CkLLJsCZ3eHqWQnR8nhZAwt2DWsCMNw9oHJn/lY970UAV1MQjblt dolJONc90zAS81EcL+l/yam5W670Hjz69h+s5GWzeS7eZIEpXJs8pe0eJyj4buc5EUfP oX7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=d7Wfxz4k; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m75-v6si10657160pga.481.2018.10.26.01.04.15; Fri, 26 Oct 2018 01:04:32 -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; dkim=pass header.i=@linaro.org header.s=google header.b=d7Wfxz4k; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726406AbeJZQiN (ORCPT + 99 others); Fri, 26 Oct 2018 12:38:13 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:40332 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725914AbeJZQiN (ORCPT ); Fri, 26 Oct 2018 12:38:13 -0400 Received: by mail-lj1-f196.google.com with SMTP id t22-v6so271405lji.7 for ; Fri, 26 Oct 2018 01:02:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=7NpKPSz0A7lAh2QMGTe5hISfmW+FWnrDsxztH/tnCuE=; b=d7Wfxz4k65Xvg/XIROGkZFMU9GjGCkrCCPtK+FlBLyNQuv0wp7eZ4Smi/bYQswjthB Oo3MyeNxwRzd2IiswKld52NGyOtTrT/p6GkIob2vDjbuCiZZltVuxBTFngaEStttJkcJ 49QsufRvlmI00R85M72UKJpo/RvHQWQx3iPXc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=7NpKPSz0A7lAh2QMGTe5hISfmW+FWnrDsxztH/tnCuE=; b=oG3O6HTWJRCKE0930B5XlWAiNeT2wAJ/+XO1jEBumEgJk+7xCA15ZoGcD2bRFKyOLm ZbIcsD/GC76VIVPDxVbdpiwHljxhM0hap7yJArrB5xuzYgFET/EKvLbxvl+5dgnjnlki jYF2kZ4g9wRDgWHL312XphrH5RIinNw/9HRaZzMuEFsgjNqibojJ55m1kTvsNhsrTFPx g9FUcNq/59YViBbWhoVE071f2iHseNRLeuUyACnr5i89Fs7f1R9yqR1B+UKczgpfYVSJ vsj49sgjy5mHqcKCMyw5gCMYFYgxenbIO001H60DHabTjDGt3njZDwFvBjwm17iNke2y gM7g== X-Gm-Message-State: AGRZ1gIogdGRDxXYSE/+vTk/u3A9QMtjbiLpaaVqWb64nCvmSRB4RvlZ yCnaN0EH2V4zXxlwzZHpSkF4ap40qq8ygy+M83b5IQ== X-Received: by 2002:a2e:8684:: with SMTP id l4-v6mr1768719lji.52.1540540931137; Fri, 26 Oct 2018 01:02:11 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a2e:95d7:0:0:0:0:0 with HTTP; Fri, 26 Oct 2018 01:02:10 -0700 (PDT) In-Reply-To: <20181025212429.GB18016@amd> References: <9794969ab8a5a6f62d8ac54cdebcaa3caedfc6d6.1539230481.git.baolin.wang@linaro.org> <20181024083143.GA24165@amd> <20181024204439.GA32300@amd> <79c29d20-ae6a-4a12-28fa-93d7305a0623@gmail.com> <20181025212429.GB18016@amd> From: Baolin Wang Date: Fri, 26 Oct 2018 16:02:10 +0800 Message-ID: Subject: Re: More checks for patterns? was: Fix pattern handling optimalization To: Pavel Machek Cc: Jacek Anaszewski , rteysseyre@gmail.com, Bjorn Andersson , Mark Brown , Linus Walleij , Linux LED Subsystem , LKML 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 Hi Pavel, On 26 October 2018 at 05:24, Pavel Machek wrote: > > We don't want brightness < 0, but this may not be best way to do > this. We also don't want brightness > max_brightness, but I'm not sure > this check is effective. I think this is reasonable, but we can simplify the patch as: diff --git a/drivers/leds/trigger/ledtrig-pattern.c b/drivers/leds/trigger/ledtrig-pattern.c index ce7acd1..3a4ecb9 100644 --- a/drivers/leds/trigger/ledtrig-pattern.c +++ b/drivers/leds/trigger/ledtrig-pattern.c @@ -250,10 +250,11 @@ static ssize_t pattern_trig_store_patterns(struct led_classdev *led_cdev, while (offset < count - 1 && data->npatterns < MAX_PATTERNS) { cr = 0; - ccount = sscanf(buf + offset, "%d %u %n", + ccount = sscanf(buf + offset, "%u %u %n", &data->patterns[data->npatterns].brightness, &data->patterns[data->npatterns].delta_t, &cr); - if (ccount != 2) { + if (ccount != 2 || + data->patterns[data->npatterns].brightness > data->led_cdev->max_brightness) { data->npatterns = 0; err = -EINVAL; goto out; > > We probably also don't want pattern where all the delta_t s are zero. Yes. Maybe add one function to valid the patterns. > > I came up with this so far.... > Pavel > > > > diff --git a/drivers/leds/trigger/ledtrig-pattern.c b/drivers/leds/trigger/ledtrig-pattern.c > index ce7acd1..bc5f495 100644 > --- a/drivers/leds/trigger/ledtrig-pattern.c > +++ b/drivers/leds/trigger/ledtrig-pattern.c > @@ -250,9 +251,16 @@ static ssize_t pattern_trig_store_patterns(struct led_classdev *led_cdev, > > while (offset < count - 1 && data->npatterns < MAX_PATTERNS) { > cr = 0; > - ccount = sscanf(buf + offset, "%d %u %n", > + ccount = sscanf(buf + offset, "%u %u %n", > &data->patterns[data->npatterns].brightness, > &data->patterns[data->npatterns].delta_t, &cr); > + > + if (data->patterns[data->npatterns].brightness > data->led_cdev->max_brightness) { > + data->npatterns = 0; > + err = -EINVAL; > + goto out; > + } > + > if (ccount != 2) { > data->npatterns = 0; > err = -EINVAL; > > > > > -- > (english) http://www.livejournal.com/~pavelmachek > (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- Baolin Wang Best Regards