Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2829937imu; Sun, 23 Dec 2018 08:44:26 -0800 (PST) X-Google-Smtp-Source: AFSGD/VUhw95YiqcEBrFGeh2cBLreYYnsmUgE8WHN0ssocxSkMTFYklZEYaJBfMylCZvcqdPnfzJ X-Received: by 2002:a24:d3cb:: with SMTP id n194mr6721331itg.57.1545583466775; Sun, 23 Dec 2018 08:44:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545583466; cv=none; d=google.com; s=arc-20160816; b=t1TeviXi7e7vMX/O4ehruEA/9mUDHOqi75VsjpVy3LFpT7pRnU+1wrjTJ36et1tnUk 2X3WdFwT573OBjxh7eiBfQbySbXXRFtnAHO+K9Di1licP5AmeJCRktCE+TBf8G7/cero e60qPGJpqzd4V/JFz2My0VYHmEf66ppXVYkSQKsc+ODlFbLC2MLIC/HPYood0gmxRLvg /sx7cQKP0Z/E8cLII/h0xPZs7uY088VzDaa3O594GRLiR2uCaU4oAtOwgUbXkn/nDljj GPF4nlTVCePoSt6QoC8qcr/ai+9Ui/N/d2G1YJrlBqHs3PUp5MAGQFQLCoc/NEjnKeLq U0CA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=zlB6Sd6oZ/slDvHvsRtGZNxp2o8yQdgCIAfuDyHDfDI=; b=QpKnhGlYogZFaN6n7bG8EEQcURgP59DFpethLKLfVdeOUTM+EyqUuzfBLM0MRTlvdn bjLKoYeZ7Dj2bjhf4UaHrhjs9GDYoAK53zs+w/CBA+YgcXZ/xLahFrYvEXqPrMBY7/Q9 51lnsjkw31OP09fY5vx86sab/GqIz+D7WgTJL/hhh3DbBIUmsiYaRNryp+rVluCqRdg9 7q1YoZeaJC9Lnx1691cK5xhXqtiXKJQGfUpehPeeyiP5pPJXThPzi7BbdH8EMwWPsqgC c1Gx4M0wbCzQ6BKkV5+kJRdQHcNX0XSwRZXzo/qnDVhIDWx41Q+gmL89+inrHk2+iY0g bDag== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 127si8757419its.69.2018.12.23.08.44.13; Sun, 23 Dec 2018 08:44:26 -0800 (PST) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728487AbeLWNDF (ORCPT + 99 others); Sun, 23 Dec 2018 08:03:05 -0500 Received: from mga04.intel.com ([192.55.52.120]:12208 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728293AbeLWNDF (ORCPT ); Sun, 23 Dec 2018 08:03:05 -0500 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Dec 2018 05:03:04 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,386,1539673200"; d="gz'50?scan'50,208,50";a="109495295" Received: from lkp-server01.sh.intel.com (HELO lkp-server01) ([10.239.97.150]) by fmsmga007.fm.intel.com with ESMTP; 23 Dec 2018 05:03:02 -0800 Received: from kbuild by lkp-server01 with local (Exim 4.89) (envelope-from ) id 1gb3PJ-000GRZ-Ro; Sun, 23 Dec 2018 21:03:01 +0800 Date: Sun, 23 Dec 2018 21:02:33 +0800 From: kbuild test robot To: Yuri Norov Cc: kbuild-all@01.org, Andrew Morton , Andy Shevchenko , Rasmus Villemoes , Arnd Bergmann , Kees Cook , Matthew Wilcox , Tetsuo Handa , Yuri Norov , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH 3/4] bitmap_parselist: rework input string parser Message-ID: <201812232109.iBsDYtbe%fengguang.wu@intel.com> References: <20181223094422.4849-4-ynorov@marvell.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="GvXjxJ+pjyke8COw" Content-Disposition: inline In-Reply-To: <20181223094422.4849-4-ynorov@marvell.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --GvXjxJ+pjyke8COw Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Yuri, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.20-rc7 next-20181221] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Yuri-Norov/rework-bitmap_parselist/20181223-175529 reproduce: make htmldocs All warnings (new ones prefixed by >>): WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org) lib/bitmap.c:679: warning: Excess function parameter 'buflen' description in '__bitmap_parselist' lib/bitmap.c:680: warning: Excess function parameter 'buflen' description in '__bitmap_parselist' >> lib/bitmap.c:680: warning: Function parameter or member 'end' not described in '__bitmap_parselist' lib/bitmap.c:680: warning: Excess function parameter 'buflen' description in '__bitmap_parselist' include/linux/rcutree.h:1: warning: no structured comments found kernel/rcu/tree.c:684: warning: Excess function parameter 'irq' description in 'rcu_nmi_exit' include/linux/srcu.h:175: warning: Function parameter or member 'p' not described in 'srcu_dereference_notrace' include/linux/srcu.h:175: warning: Function parameter or member 'sp' not described in 'srcu_dereference_notrace' include/linux/gfp.h:1: warning: no structured comments found include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.ibss' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.connect' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.keys' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.ie' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.ie_len' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.bssid' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.ssid' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.default_key' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.default_mgmt_key' not described in 'wireless_dev' include/net/cfg80211.h:4439: warning: Function parameter or member 'wext.prev_bssid_valid' not described in 'wireless_dev' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' include/net/cfg80211.h:2838: warning: cannot understand function prototype: 'struct cfg80211_ftm_responder_stats ' vim +680 lib/bitmap.c 32eb0e6b5 Yuri Norov 2018-12-23 649 5aaba3631 Sudeep Holla 2014-09-30 650 /** 4b060420a Mike Travis 2011-05-24 651 * __bitmap_parselist - convert list format ASCII string to bitmap b0825ee3a Randy Dunlap 2011-06-15 652 * @buf: read nul-terminated user string from this buffer 4b060420a Mike Travis 2011-05-24 653 * @buflen: buffer size in bytes. If string is smaller than this 4b060420a Mike Travis 2011-05-24 654 * then it must be terminated with a \0. 4b060420a Mike Travis 2011-05-24 655 * @is_user: location of buffer, 0 indicates kernel space 6e1907ffd Randy Dunlap 2006-06-25 656 * @maskp: write resulting mask here ^1da177e4 Linus Torvalds 2005-04-16 657 * @nmaskbits: number of bits in mask to be written ^1da177e4 Linus Torvalds 2005-04-16 658 * ^1da177e4 Linus Torvalds 2005-04-16 659 * Input format is a comma-separated list of decimal numbers and ^1da177e4 Linus Torvalds 2005-04-16 660 * ranges. Consecutively set bits are shown as two hyphen-separated ^1da177e4 Linus Torvalds 2005-04-16 661 * decimal numbers, the smallest and largest bit numbers set in ^1da177e4 Linus Torvalds 2005-04-16 662 * the range. 2d13e6ca4 Noam Camus 2016-10-11 663 * Optionally each range can be postfixed to denote that only parts of it 2d13e6ca4 Noam Camus 2016-10-11 664 * should be set. The range will divided to groups of specific size. 2d13e6ca4 Noam Camus 2016-10-11 665 * From each group will be used only defined amount of bits. 2d13e6ca4 Noam Camus 2016-10-11 666 * Syntax: range:used_size/group_size 2d13e6ca4 Noam Camus 2016-10-11 667 * Example: 0-1023:2/256 ==> 0,1,256,257,512,513,768,769 ^1da177e4 Linus Torvalds 2005-04-16 668 * 40bf19a8d Mauro Carvalho Chehab 2017-03-30 669 * Returns: 0 on success, -errno on invalid input strings. Error values: 40bf19a8d Mauro Carvalho Chehab 2017-03-30 670 * 32eb0e6b5 Yuri Norov 2018-12-23 671 * - ``-EINVAL``: wrong region format 40bf19a8d Mauro Carvalho Chehab 2017-03-30 672 * - ``-EINVAL``: invalid character in string 40bf19a8d Mauro Carvalho Chehab 2017-03-30 673 * - ``-ERANGE``: bit number specified too large for mask 32eb0e6b5 Yuri Norov 2018-12-23 674 * - ``-EOVERFLOW``: integer overflow in the input parameters ^1da177e4 Linus Torvalds 2005-04-16 675 */ 32eb0e6b5 Yuri Norov 2018-12-23 676 static int __bitmap_parselist(const char *buf, const char *const end, 4b060420a Mike Travis 2011-05-24 677 int is_user, unsigned long *maskp, 4b060420a Mike Travis 2011-05-24 678 int nmaskbits) ^1da177e4 Linus Torvalds 2005-04-16 @679 { 87ac23b87 Yuri Norov 2018-12-23 @680 struct region r; 32eb0e6b5 Yuri Norov 2018-12-23 681 long ret; ^1da177e4 Linus Torvalds 2005-04-16 682 ^1da177e4 Linus Torvalds 2005-04-16 683 bitmap_zero(maskp, nmaskbits); 4b060420a Mike Travis 2011-05-24 684 32eb0e6b5 Yuri Norov 2018-12-23 685 while (buf && buf < end) { 32eb0e6b5 Yuri Norov 2018-12-23 686 buf = bitmap_find_region(buf, end, is_user); 32eb0e6b5 Yuri Norov 2018-12-23 687 if (buf == NULL) 32eb0e6b5 Yuri Norov 2018-12-23 688 return 0; 87ac23b87 Yuri Norov 2018-12-23 689 32eb0e6b5 Yuri Norov 2018-12-23 690 buf = bitmap_parse_region(&r, buf, end, is_user); 32eb0e6b5 Yuri Norov 2018-12-23 691 if (IS_ERR(buf)) 32eb0e6b5 Yuri Norov 2018-12-23 692 return (long)buf; 87ac23b87 Yuri Norov 2018-12-23 693 87ac23b87 Yuri Norov 2018-12-23 694 ret = bitmap_check_region(&r); 87ac23b87 Yuri Norov 2018-12-23 695 if (ret) 87ac23b87 Yuri Norov 2018-12-23 696 return ret; 87ac23b87 Yuri Norov 2018-12-23 697 87ac23b87 Yuri Norov 2018-12-23 698 ret = bitmap_set_region(&r, maskp, nmaskbits); 87ac23b87 Yuri Norov 2018-12-23 699 if (ret) 87ac23b87 Yuri Norov 2018-12-23 700 return ret; 32eb0e6b5 Yuri Norov 2018-12-23 701 } 87ac23b87 Yuri Norov 2018-12-23 702 ^1da177e4 Linus Torvalds 2005-04-16 703 return 0; ^1da177e4 Linus Torvalds 2005-04-16 704 } 4b060420a Mike Travis 2011-05-24 705 :::::: The code at line 680 was first introduced by commit :::::: 87ac23b8755f8cbef41f1befaee43d76bbfb2cc9 bitmap_parselist: move part of logic to helpers :::::: TO: Yuri Norov :::::: CC: 0day robot --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --GvXjxJ+pjyke8COw Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 /gOpagT1qFsAAA== --GvXjxJ+pjyke8COw--