CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Javier Martinez Canillas <[email protected]>
CC: Daniel Vetter <[email protected]>

tree:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
head:   6aed665f9d8368ae1e962f44339150884bb47f5b
commit: 3367aa7d74d240261de2543ddb35531ccad9d884 [1/2] fbdev: Restart 
conflicting fb removal loop when unregistering devices
:::::: branch date: 8 hours ago
:::::: commit date: 4 weeks ago
config: m68k-randconfig-c003-20220608 
(https://download.01.org/0day-ci/archive/20220609/[email protected]/config)
compiler: m68k-linux-gcc (GCC) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>
Reported-by: Julia Lawall <[email protected]>


cocci warnings: (new ones prefixed by >>)
>> drivers/video/fbdev/core/fbmem.c:1610:0-1: preceding lock on line 1598

vim +1610 drivers/video/fbdev/core/fbmem.c

712f3147aee0fb drivers/video/fbmem.c            Linus Torvalds           
2011-05-13  1551  
3b9676e7ac6eff drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1552  #define VGA_FB_PHYS 0xA0000
deb00d2785bedd drivers/video/fbdev/core/fbmem.c Daniel Vetter            
2019-05-28  1553  static void do_remove_conflicting_framebuffers(struct 
apertures_struct *a,
3b9676e7ac6eff drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1554                                              const char *name, 
bool primary)
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1555  {
deb00d2785bedd drivers/video/fbdev/core/fbmem.c Daniel Vetter            
2019-05-28  1556       int i;
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1557  
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1558  restart_removal:
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1559       /* check all firmware fbs and kick off if the base addr 
overlaps */
10ac86884b4d76 drivers/video/fbdev/core/fbmem.c Yisheng Xie              
2018-07-24  1560       for_each_registered_fb(i) {
3b9676e7ac6eff drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1561               struct apertures_struct *gen_aper;
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1562               struct device *device;
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1563  
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1564               if (!(registered_fb[i]->flags & 
FBINFO_MISC_FIRMWARE))
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1565                       continue;
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1566  
3b9676e7ac6eff drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1567               gen_aper = registered_fb[i]->apertures;
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1568               device = registered_fb[i]->device;
3b9676e7ac6eff drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1569               if (fb_do_apertures_overlap(gen_aper, a) ||
3b9676e7ac6eff drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1570                       (primary && gen_aper && gen_aper->count 
&&
3b9676e7ac6eff drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1571                        gen_aper->ranges[0].base == 
VGA_FB_PHYS)) {
3b9676e7ac6eff drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1572  
fbc42d455a2982 drivers/video/fbdev/core/fbmem.c Michał Mirosław          
2018-09-01  1573                       printk(KERN_INFO "fb%d: switching to %s 
from %s\n",
fbc42d455a2982 drivers/video/fbdev/core/fbmem.c Michał Mirosław          
2018-09-01  1574                              i, name, 
registered_fb[i]->fix.id);
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1575  
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1576                       /*
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1577                        * If we kick-out a firmware driver, we 
also want to remove
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1578                        * the underlying platform device, such 
as simple-framebuffer,
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1579                        * VESA, EFI, etc. A native driver will 
then be able to
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1580                        * allocate the memory range.
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1581                        *
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1582                        * If it's not a platform device, at 
least print a warning. A
b76ecff8317eed drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-04-19  1583                        * fix would add code to remove the 
device from the system. For
b76ecff8317eed drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-04-19  1584                        * framebuffers without any Linux 
device, print a warning as
b76ecff8317eed drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-04-19  1585                        * well.
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1586                        */
0f525289ff0dde drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-04-04  1587                       if (!device) {
b76ecff8317eed drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-04-19  1588                               pr_warn("fb%d: no device set\n", 
i);
0f525289ff0dde drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-04-04  1589                               
do_unregister_framebuffer(registered_fb[i]);
0f525289ff0dde drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-04-04  1590                       } else if (dev_is_platform(device)) {
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1591                               /*
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1592                                * Drop the lock because if the 
device is unregistered, its
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1593                                * driver will call to 
unregister_framebuffer(), that takes
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1594                                * this lock.
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1595                                */
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1596                               mutex_unlock(&registration_lock);
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1597                               
platform_device_unregister(to_platform_device(device));
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11 @1598                               mutex_lock(&registration_lock);
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1599                       } else {
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25  1600                               pr_warn("fb%d: cannot remove 
device\n", i);
deb00d2785bedd drivers/video/fbdev/core/fbmem.c Daniel Vetter            
2019-05-28  1601                               
do_unregister_framebuffer(registered_fb[i]);
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1602                       }
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1603                       /*
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1604                        * Restart the removal loop now that the 
device has been
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1605                        * unregistered and its associated 
framebuffer gone.
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1606                        */
3367aa7d74d240 drivers/video/fbdev/core/fbmem.c Javier Martinez Canillas 
2022-05-11  1607                       goto restart_removal;
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1608               }
06415c564fb985 drivers/video/fbmem.c            Marcin Slusarz           
2010-05-16  1609       }
27599aacbaefcb drivers/video/fbdev/core/fbmem.c Thomas Zimmermann        
2022-01-25 @1610  }
^1da177e4c3f41 drivers/video/fbmem.c            Linus Torvalds           
2005-04-16  1611  

:::::: The code at line 1610 was first introduced by commit
:::::: 27599aacbaefcbf2af7b06b0029459bbf682000d fbdev: Hot-unplug firmware fb 
devices on forced removal

:::::: TO: Thomas Zimmermann <[email protected]>
:::::: CC: Thomas Zimmermann <[email protected]>

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

Reply via email to