All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/opp/core.c:1025:45: warning: Possible null pointer dereference: opp [nullPointer]
Date: Sat, 13 Nov 2021 19:55:33 +0800	[thread overview]
Message-ID: <202111131913.IJglDzlB-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 11865 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Viresh Kumar <viresh.kumar@linaro.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   66f4beaa6c1d28161f534471484b2daa2de1dce0
commit: f0b88fa45595254fa51427bd8ca321732e2eb73d opp: Allow _set_opp() to work for non-freq devices
date:   9 months ago
:::::: branch date: 15 hours ago
:::::: commit date: 9 months ago
compiler: h8300-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/opp/core.c:1025:45: warning: Possible null pointer dereference: opp [nullPointer]
     __func__, old_freq, freq, old_opp->level, opp->level,
                                               ^
   drivers/opp/core.c:1089:27: note: Assignment 'opp=NULL', assigned value is 0
    struct dev_pm_opp *opp = NULL;
                             ^
   drivers/opp/core.c:1130:33: note: Calling function '_set_opp', 3rd argument 'opp' value is 0
    ret = _set_opp(dev, opp_table, opp, freq);
                                   ^
   drivers/opp/core.c:1025:45: note: Null pointer dereference
     __func__, old_freq, freq, old_opp->level, opp->level,
                                               ^
   drivers/opp/core.c:1027:3: warning: Possible null pointer dereference: opp [nullPointer]
     opp->bandwidth ? opp->bandwidth[0].peak : 0);
     ^
   drivers/opp/core.c:1089:27: note: Assignment 'opp=NULL', assigned value is 0
    struct dev_pm_opp *opp = NULL;
                             ^
   drivers/opp/core.c:1130:33: note: Calling function '_set_opp', 3rd argument 'opp' value is 0
    ret = _set_opp(dev, opp_table, opp, freq);
                                   ^
   drivers/opp/core.c:1027:3: note: Null pointer dereference
     opp->bandwidth ? opp->bandwidth[0].peak : 0);
     ^
>> drivers/opp/core.c:1590:20: warning: Possible null pointer dereference: opp2 [nullPointer]
    if (opp1->rate != opp2->rate)
                      ^
   drivers/opp/core.c:1089:27: note: Assignment 'opp=NULL', assigned value is 0
    struct dev_pm_opp *opp = NULL;
                             ^
   drivers/opp/core.c:1130:33: note: Calling function '_set_opp', 3rd argument 'opp' value is 0
    ret = _set_opp(dev, opp_table, opp, freq);
                                   ^
   drivers/opp/core.c:1029:43: note: Calling function '_opp_compare_key', 2nd argument 'opp' value is 0
    scaling_down = _opp_compare_key(old_opp, opp);
                                             ^
   drivers/opp/core.c:1590:20: note: Null pointer dereference
    if (opp1->rate != opp2->rate)
                      ^
   drivers/opp/core.c:1595:21: warning: Possible null pointer dereference: opp2 [nullPointer]
    if (opp1->level != opp2->level)
                       ^
   drivers/opp/core.c:1089:27: note: Assignment 'opp=NULL', assigned value is 0
    struct dev_pm_opp *opp = NULL;
                             ^
   drivers/opp/core.c:1130:33: note: Calling function '_set_opp', 3rd argument 'opp' value is 0
    ret = _set_opp(dev, opp_table, opp, freq);
                                   ^
   drivers/opp/core.c:1029:43: note: Calling function '_opp_compare_key', 2nd argument 'opp' value is 0
    scaling_down = _opp_compare_key(old_opp, opp);
                                             ^
   drivers/opp/core.c:1595:21: note: Null pointer dereference
    if (opp1->level != opp2->level)
                       ^
   drivers/opp/core.c:1618:4: warning: Address of local auto-variable assigned to a function parameter. [autoVariables]
      *head = &opp->node;
      ^

vim +1025 drivers/opp/core.c

f3364e17d5716a drivers/opp/core.c            Viresh Kumar    2020-08-13  1000  
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1001  static int _set_opp(struct device *dev, struct opp_table *opp_table,
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1002  		    struct dev_pm_opp *opp, unsigned long freq)
6a0712f6f199e7 drivers/base/power/opp/core.c Viresh Kumar    2016-02-09  1003  {
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1004  	struct dev_pm_opp *old_opp;
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1005  	unsigned long old_freq;
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1006  	int scaling_down, ret;
6a0712f6f199e7 drivers/base/power/opp/core.c Viresh Kumar    2016-02-09  1007  
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1008  	if (unlikely(!opp))
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1009  		return _disable_opp_table(dev, opp_table);
aca48b61f96386 drivers/opp/core.c            Rajendra Nayak  2020-04-08  1010  
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1011  	/* Find the currently set OPP if we don't know already */
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1012  	if (unlikely(!opp_table->current_opp))
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1013  		_find_current_opp(dev, opp_table);
6a0712f6f199e7 drivers/base/power/opp/core.c Viresh Kumar    2016-02-09  1014  
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1015  	old_opp = opp_table->current_opp;
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1016  	old_freq = old_opp->rate;
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1017  
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1018  	/* Return early if nothing to do */
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1019  	if (opp_table->enabled && old_opp == opp) {
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1020  		dev_dbg(dev, "%s: OPPs are same, nothing to do\n", __func__);
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1021  		return 0;
6a0712f6f199e7 drivers/base/power/opp/core.c Viresh Kumar    2016-02-09  1022  	}
6a0712f6f199e7 drivers/base/power/opp/core.c Viresh Kumar    2016-02-09  1023  
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1024  	dev_dbg(dev, "%s: switching OPP: Freq %lu -> %lu Hz, Level %u -> %u, Bw %u -> %u\n",
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21 @1025  		__func__, old_freq, freq, old_opp->level, opp->level,
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1026  		old_opp->bandwidth ? old_opp->bandwidth[0].peak : 0,
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1027  		opp->bandwidth ? opp->bandwidth[0].peak : 0);
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1028  
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1029  	scaling_down = _opp_compare_key(old_opp, opp);
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1030  	if (scaling_down == -1)
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1031  		scaling_down = 0;
947355850fcb3b drivers/base/power/opp/core.c Viresh Kumar    2016-12-01  1032  
ca1b5d77b1c69d drivers/opp/core.c            Viresh Kumar    2018-06-14  1033  	/* Scaling up? Configure required OPPs before frequency */
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1034  	if (!scaling_down) {
2c59138c22f17c drivers/opp/core.c            Stephan Gerhold 2020-07-30  1035  		ret = _set_required_opps(dev, opp_table, opp, true);
ca1b5d77b1c69d drivers/opp/core.c            Viresh Kumar    2018-06-14  1036  		if (ret)
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1037  			return ret;
ca1b5d77b1c69d drivers/opp/core.c            Viresh Kumar    2018-06-14  1038  	}
ca1b5d77b1c69d drivers/opp/core.c            Viresh Kumar    2018-06-14  1039  
7e535993fa4f67 drivers/opp/core.c            Viresh Kumar    2018-06-12  1040  	if (opp_table->set_opp) {
7e535993fa4f67 drivers/opp/core.c            Viresh Kumar    2018-06-12  1041  		ret = _set_opp_custom(opp_table, dev, old_freq, freq,
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1042  				      old_opp->supplies, opp->supplies);
7e535993fa4f67 drivers/opp/core.c            Viresh Kumar    2018-06-12  1043  	} else if (opp_table->regulators) {
c74b32fadc00f2 drivers/base/power/opp/core.c Viresh Kumar    2017-05-23  1044  		ret = _generic_set_opp_regulator(opp_table, dev, old_freq, freq,
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1045  						 old_opp->supplies,
c74b32fadc00f2 drivers/base/power/opp/core.c Viresh Kumar    2017-05-23  1046  						 opp->supplies);
c74b32fadc00f2 drivers/base/power/opp/core.c Viresh Kumar    2017-05-23  1047  	} else {
947355850fcb3b drivers/base/power/opp/core.c Viresh Kumar    2016-12-01  1048  		/* Only frequency scaling */
1d3c42cabbd351 drivers/opp/core.c            Viresh Kumar    2021-01-20  1049  		ret = _generic_set_opp_clk_only(dev, opp_table->clk, freq);
c74b32fadc00f2 drivers/base/power/opp/core.c Viresh Kumar    2017-05-23  1050  	}
6a0712f6f199e7 drivers/base/power/opp/core.c Viresh Kumar    2016-02-09  1051  
ca1b5d77b1c69d drivers/opp/core.c            Viresh Kumar    2018-06-14  1052  	/* Scaling down? Configure required OPPs after frequency */
f0b88fa4559525 drivers/opp/core.c            Viresh Kumar    2021-01-21  1053  	if (!ret && scaling_down) {
2c59138c22f17c drivers/opp/core.c            Stephan Gerhold 2020-07-30  1054  		ret = _set_required_opps(dev, opp_table, opp, false);
ca1b5d77b1c69d drivers/opp/core.c            Viresh Kumar    2018-06-14  1055  		if (ret)
ca1b5d77b1c69d drivers/opp/core.c            Viresh Kumar    2018-06-14  1056  			dev_err(dev, "Failed to set required opps: %d\n", ret);
c74b32fadc00f2 drivers/base/power/opp/core.c Viresh Kumar    2017-05-23  1057  	}
052c6f19141dd1 drivers/base/power/opp/core.c Viresh Kumar    2017-01-23  1058  
72f80ce4ef9b75 drivers/opp/core.c            Viresh Kumar    2020-08-13  1059  	if (!ret) {
b00e667a6d8b2b drivers/opp/core.c            Viresh Kumar    2020-05-27  1060  		ret = _set_opp_bw(opp_table, opp, dev, false);
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1061  		if (!ret) {
72f80ce4ef9b75 drivers/opp/core.c            Viresh Kumar    2020-08-13  1062  			opp_table->enabled = true;
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1063  			dev_pm_opp_put(old_opp);
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1064  
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1065  			/* Make sure current_opp doesn't get freed */
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1066  			dev_pm_opp_get(opp);
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1067  			opp_table->current_opp = opp;
81c4d8a3c41488 drivers/opp/core.c            Viresh Kumar    2021-01-20  1068  		}
72f80ce4ef9b75 drivers/opp/core.c            Viresh Kumar    2020-08-13  1069  	}
fe2af40250bfc3 drivers/opp/core.c            Georgi Djakov   2020-05-12  1070  
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1071  	return ret;
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1072  }
386ba854d9f316 drivers/opp/core.c            Viresh Kumar    2021-01-21  1073  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

             reply	other threads:[~2021-11-13 11:55 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-13 11:55 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-10-26 13:09 drivers/opp/core.c:1025:45: warning: Possible null pointer dereference: opp [nullPointer] kernel test robot
2021-10-02 22:26 kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202111131913.IJglDzlB-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.