CC: [email protected]
CC: [email protected]
TO: Hans de Goede <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   7fe10096c1508c7f033d34d0741809f8eecc1ed4
commit: 7b1cce760afe38b40f0989cdf10b2190dccf9815 drm/modes: parse_cmdline: 
Allow specifying stand-alone options
date:   9 months ago
:::::: branch date: 21 hours ago
:::::: commit date: 9 months ago
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


cppcheck warnings: (new ones prefixed by >>)

>> drivers/gpu/drm/drm_modes.c:1784:16: warning: Local variable len shadows 
>> outer variable [shadowVar]
     unsigned int len = strlen(mode_option);
                  ^
   drivers/gpu/drm/drm_modes.c:1716:9: note: Shadowed declaration
    int i, len, ret;
           ^
   drivers/gpu/drm/drm_modes.c:1784:16: note: Shadow variable
     unsigned int len = strlen(mode_option);
                  ^

# 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7b1cce760afe38b40f0989cdf10b2190dccf9815
git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 7b1cce760afe38b40f0989cdf10b2190dccf9815
vim +1784 drivers/gpu/drm/drm_modes.c

1794d257fa7bab Chris Wilson   2011-04-17  1722  
1794d257fa7bab Chris Wilson   2011-04-17  1723          if (!mode_option) {
1794d257fa7bab Chris Wilson   2011-04-17  1724                  mode->specified 
= false;
1794d257fa7bab Chris Wilson   2011-04-17  1725                  return false;
1794d257fa7bab Chris Wilson   2011-04-17  1726          }
1794d257fa7bab Chris Wilson   2011-04-17  1727  
1794d257fa7bab Chris Wilson   2011-04-17  1728          name = mode_option;
04fee895ef98ff Rolf Eike Beer 2011-06-15  1729  
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1730          /* Try to locate the 
bpp and refresh specifiers, if any */
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1731          bpp_ptr = strchr(name, 
'-');
6a2d163756545a Hans de Goede  2019-11-18  1732          if (bpp_ptr)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1733                  bpp_off = 
bpp_ptr - name;
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1734  
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1735          refresh_ptr = 
strchr(name, '@');
7b1cce760afe38 Hans de Goede  2019-11-18  1736          if (refresh_ptr)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1737                  refresh_off = 
refresh_ptr - name;
04fee895ef98ff Rolf Eike Beer 2011-06-15  1738  
1bf4e09227c345 Maxime Ripard  2019-06-19  1739          /* Locate the start of 
named options */
1bf4e09227c345 Maxime Ripard  2019-06-19  1740          options_ptr = 
strchr(name, ',');
1bf4e09227c345 Maxime Ripard  2019-06-19  1741          if (options_ptr)
1bf4e09227c345 Maxime Ripard  2019-06-19  1742                  options_off = 
options_ptr - name;
1bf4e09227c345 Maxime Ripard  2019-06-19  1743  
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1744          /* Locate the end of 
the name / resolution, and parse it */
1bf4e09227c345 Maxime Ripard  2019-06-19  1745          if (bpp_ptr) {
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1746                  mode_end = 
bpp_off;
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1747          } else if (refresh_ptr) 
{
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1748                  mode_end = 
refresh_off;
1bf4e09227c345 Maxime Ripard  2019-06-19  1749          } else if (options_ptr) 
{
1bf4e09227c345 Maxime Ripard  2019-06-19  1750                  mode_end = 
options_off;
cfb0881b8f621b Hans de Goede  2019-11-18  1751                  parse_extras = 
true;
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1752          } else {
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1753                  mode_end = 
strlen(name);
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1754                  parse_extras = 
true;
04fee895ef98ff Rolf Eike Beer 2011-06-15  1755          }
04fee895ef98ff Rolf Eike Beer 2011-06-15  1756  
7b1cce760afe38 Hans de Goede  2019-11-18  1757          /* First check for a 
named mode */
7b1cce760afe38 Hans de Goede  2019-11-18  1758          for (i = 0; i < 
ARRAY_SIZE(drm_named_modes_whitelist); i++) {
7b1cce760afe38 Hans de Goede  2019-11-18  1759                  ret = 
str_has_prefix(name, drm_named_modes_whitelist[i]);
7b1cce760afe38 Hans de Goede  2019-11-18  1760                  if (ret == 
mode_end) {
7b1cce760afe38 Hans de Goede  2019-11-18  1761                          if 
(refresh_ptr)
7b1cce760afe38 Hans de Goede  2019-11-18  1762                                  
return false; /* named + refresh is invalid */
3764137906a5ac Maxime Ripard  2019-08-27  1763  
7b1cce760afe38 Hans de Goede  2019-11-18  1764                          
strcpy(mode->name, drm_named_modes_whitelist[i]);
7b1cce760afe38 Hans de Goede  2019-11-18  1765                          
mode->specified = true;
7b1cce760afe38 Hans de Goede  2019-11-18  1766                          break;
7b1cce760afe38 Hans de Goede  2019-11-18  1767                  }
7b1cce760afe38 Hans de Goede  2019-11-18  1768          }
3764137906a5ac Maxime Ripard  2019-08-27  1769  
7b1cce760afe38 Hans de Goede  2019-11-18  1770          /* No named mode? Check 
for a normal mode argument, e.g. 1024x768 */
7b1cce760afe38 Hans de Goede  2019-11-18  1771          if (!mode->specified && 
isdigit(name[0])) {
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1772                  ret = 
drm_mode_parse_cmdline_res_mode(name, mode_end,
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1773                                  
                      parse_extras,
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1774                                  
                      connector,
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1775                                  
                      mode);
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1776                  if (ret)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1777                          return 
false;
7b1cce760afe38 Hans de Goede  2019-11-18  1778  
1794d257fa7bab Chris Wilson   2011-04-17  1779                  mode->specified 
= true;
7b1cce760afe38 Hans de Goede  2019-11-18  1780          }
7b1cce760afe38 Hans de Goede  2019-11-18  1781  
7b1cce760afe38 Hans de Goede  2019-11-18  1782          /* No mode? Check for 
freestanding extras and/or options */
7b1cce760afe38 Hans de Goede  2019-11-18  1783          if (!mode->specified) {
7b1cce760afe38 Hans de Goede  2019-11-18 @1784                  unsigned int 
len = strlen(mode_option);
7b1cce760afe38 Hans de Goede  2019-11-18  1785  
7b1cce760afe38 Hans de Goede  2019-11-18  1786                  if (bpp_ptr || 
refresh_ptr)
7b1cce760afe38 Hans de Goede  2019-11-18  1787                          return 
false; /* syntax error */
7b1cce760afe38 Hans de Goede  2019-11-18  1788  
7b1cce760afe38 Hans de Goede  2019-11-18  1789                  if (len == 1 || 
(len >= 2 && mode_option[1] == ','))
7b1cce760afe38 Hans de Goede  2019-11-18  1790                          
extra_ptr = mode_option;
7b1cce760afe38 Hans de Goede  2019-11-18  1791                  else
7b1cce760afe38 Hans de Goede  2019-11-18  1792                          
options_ptr = mode_option - 1;
7b1cce760afe38 Hans de Goede  2019-11-18  1793  
7b1cce760afe38 Hans de Goede  2019-11-18  1794                  freestanding = 
true;
7b1cce760afe38 Hans de Goede  2019-11-18  1795          }
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1796  
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1797          if (bpp_ptr) {
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1798                  ret = 
drm_mode_parse_cmdline_bpp(bpp_ptr, &bpp_end_ptr, mode);
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1799                  if (ret)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1800                          return 
false;
6a2d163756545a Hans de Goede  2019-11-18  1801  
6a2d163756545a Hans de Goede  2019-11-18  1802                  
mode->bpp_specified = true;
1794d257fa7bab Chris Wilson   2011-04-17  1803          }
1794d257fa7bab Chris Wilson   2011-04-17  1804  
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1805          if (refresh_ptr) {
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1806                  ret = 
drm_mode_parse_cmdline_refresh(refresh_ptr,
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1807                                  
                     &refresh_end_ptr, mode);
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1808                  if (ret)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1809                          return 
false;
6a2d163756545a Hans de Goede  2019-11-18  1810  
6a2d163756545a Hans de Goede  2019-11-18  1811                  
mode->refresh_specified = true;
1794d257fa7bab Chris Wilson   2011-04-17  1812          }
1794d257fa7bab Chris Wilson   2011-04-17  1813  
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1814          /*
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1815           * Locate the end of 
the bpp / refresh, and parse the extras
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1816           * if relevant
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1817           */
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1818          if (bpp_ptr && 
refresh_ptr)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1819                  extra_ptr = 
max(bpp_end_ptr, refresh_end_ptr);
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1820          else if (bpp_ptr)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1821                  extra_ptr = 
bpp_end_ptr;
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1822          else if (refresh_ptr)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1823                  extra_ptr = 
refresh_end_ptr;
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1824  
c2ed3e94190181 Hans de Goede  2019-11-18  1825          if (extra_ptr) {
c2ed3e94190181 Hans de Goede  2019-11-18  1826                  if (options_ptr)
c2ed3e94190181 Hans de Goede  2019-11-18  1827                          len = 
options_ptr - extra_ptr;
c2ed3e94190181 Hans de Goede  2019-11-18  1828                  else
c2ed3e94190181 Hans de Goede  2019-11-18  1829                          len = 
strlen(extra_ptr);
3aeeb13d899627 Maxime Ripard  2019-06-19  1830  
7b1cce760afe38 Hans de Goede  2019-11-18  1831                  ret = 
drm_mode_parse_cmdline_extra(extra_ptr, len, freestanding,
3aeeb13d899627 Maxime Ripard  2019-06-19  1832                                  
                   connector, mode);
3aeeb13d899627 Maxime Ripard  2019-06-19  1833                  if (ret)
3aeeb13d899627 Maxime Ripard  2019-06-19  1834                          return 
false;
1bf4e09227c345 Maxime Ripard  2019-06-19  1835          }
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1836  
1bf4e09227c345 Maxime Ripard  2019-06-19  1837          if (options_ptr) {
739b200c2edcaa Hans de Goede  2019-11-18  1838                  ret = 
drm_mode_parse_cmdline_options(options_ptr + 1,
7b1cce760afe38 Hans de Goede  2019-11-18  1839                                  
                     freestanding,
1bf4e09227c345 Maxime Ripard  2019-06-19  1840                                  
                     connector, mode);
1bf4e09227c345 Maxime Ripard  2019-06-19  1841                  if (ret)
e08ab74bd4c7a5 Maxime Ripard  2019-06-19  1842                          return 
false;
1794d257fa7bab Chris Wilson   2011-04-17  1843          }
1794d257fa7bab Chris Wilson   2011-04-17  1844  
1794d257fa7bab Chris Wilson   2011-04-17  1845          return true;
1794d257fa7bab Chris Wilson   2011-04-17  1846  }
1794d257fa7bab Chris Wilson   2011-04-17  1847  
EXPORT_SYMBOL(drm_mode_parse_command_line_for_connector);
1794d257fa7bab Chris Wilson   2011-04-17  1848  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to