All of lore.kernel.org
 help / color / mirror / Atom feed
* [asahilinux:bits/170-atcphy 4/16] drivers/phy/apple/atc.c:1589:2-8: preceding lock on line 1578 (fwd)
@ 2024-10-02 11:17 Julia Lawall
  2024-10-02 21:03 ` Janne Grunau
  0 siblings, 1 reply; 2+ messages in thread
From: Julia Lawall @ 2024-10-02 11:17 UTC (permalink / raw)
  To: Sven Peter, Janne Grunau, oe-kbuild-all

Please check whether an unlock is needed on line 1589.

julia

---------- Forwarded message ----------
Date: Wed, 2 Oct 2024 19:08:09 +0800
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Julia Lawall <julia.lawall@inria.fr>
Subject: [asahilinux:bits/170-atcphy 4/16] drivers/phy/apple/atc.c:1589:2-8:
    preceding lock on line 1578

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Sven Peter <sven@svenpeter.dev>
CC: Janne Grunau <j@jannau.net>

tree:   https://github.com/AsahiLinux/linux bits/170-atcphy
head:   819ac8ed6c5777d4b18f0c88fc4a5e55a9ab9fdd
commit: 4f5b8aa35e68a33a1d20b6ce62014794768af7ad [4/16] WIP: phy: apple: Add Apple Type-C PHY
:::::: branch date: 8 days ago
:::::: commit date: 2 weeks ago
config: arc-randconfig-r052-20241002 (https://download.01.org/0day-ci/archive/20241002/202410021851.sGmBSrDd-lkp@intel.com/config)
compiler: arc-elf-gcc (GCC) 13.2.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202410021851.sGmBSrDd-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> drivers/phy/apple/atc.c:1589:2-8: preceding lock on line 1578
   drivers/phy/apple/atc.c:1589:2-8: preceding lock on line 1584

vim +1589 drivers/phy/apple/atc.c

4f5b8aa35e68a3 Sven Peter 2022-11-30  1566
4f5b8aa35e68a3 Sven Peter 2022-11-30  1567  static int atcphy_usb3_power_on(struct phy *phy)
4f5b8aa35e68a3 Sven Peter 2022-11-30  1568  {
4f5b8aa35e68a3 Sven Peter 2022-11-30  1569  	struct apple_atcphy *atcphy = phy_get_drvdata(phy);
4f5b8aa35e68a3 Sven Peter 2022-11-30  1570  	enum atcphy_pipehandler_state state;
4f5b8aa35e68a3 Sven Peter 2022-11-30  1571  	int ret = 0;
4f5b8aa35e68a3 Sven Peter 2022-11-30  1572
4f5b8aa35e68a3 Sven Peter 2022-11-30  1573  	/*
4f5b8aa35e68a3 Sven Peter 2022-11-30  1574  	 * Both usb role switch and mux set work will be running concurrently.
4f5b8aa35e68a3 Sven Peter 2022-11-30  1575  	 * Make sure atcphy_mux_set_work is done bringing up ATCPHY before
4f5b8aa35e68a3 Sven Peter 2022-11-30  1576  	 * trying to switch dwc3 to the correct PHY.
4f5b8aa35e68a3 Sven Peter 2022-11-30  1577  	 */
4f5b8aa35e68a3 Sven Peter 2022-11-30 @1578  	mutex_lock(&atcphy->lock);
4f5b8aa35e68a3 Sven Peter 2022-11-30  1579  	if (atcphy->mode != atcphy->target_mode) {
4f5b8aa35e68a3 Sven Peter 2022-11-30  1580  		reinit_completion(&atcphy->atcphy_online_event);
4f5b8aa35e68a3 Sven Peter 2022-11-30  1581  		mutex_unlock(&atcphy->lock);
4f5b8aa35e68a3 Sven Peter 2022-11-30  1582  		wait_for_completion_timeout(&atcphy->atcphy_online_event,
4f5b8aa35e68a3 Sven Peter 2022-11-30  1583  					msecs_to_jiffies(1000));
4f5b8aa35e68a3 Sven Peter 2022-11-30  1584  		mutex_lock(&atcphy->lock);
4f5b8aa35e68a3 Sven Peter 2022-11-30  1585  	}
4f5b8aa35e68a3 Sven Peter 2022-11-30  1586
4f5b8aa35e68a3 Sven Peter 2022-11-30  1587  	if (atcphy->mode != atcphy->target_mode) {
4f5b8aa35e68a3 Sven Peter 2022-11-30  1588  		dev_err(atcphy->dev, "ATCPHY did not come up; won't allow dwc3 to come up.\n");
4f5b8aa35e68a3 Sven Peter 2022-11-30 @1589  		return -EINVAL;
4f5b8aa35e68a3 Sven Peter 2022-11-30  1590  	}
4f5b8aa35e68a3 Sven Peter 2022-11-30  1591
4f5b8aa35e68a3 Sven Peter 2022-11-30  1592  	atcphy->dwc3_online = true;
4f5b8aa35e68a3 Sven Peter 2022-11-30  1593  	state = atcphy_modes[atcphy->mode].pipehandler_state;
4f5b8aa35e68a3 Sven Peter 2022-11-30  1594  	switch (state) {
4f5b8aa35e68a3 Sven Peter 2022-11-30  1595  	case ATCPHY_PIPEHANDLER_STATE_USB2:
4f5b8aa35e68a3 Sven Peter 2022-11-30  1596  	case ATCPHY_PIPEHANDLER_STATE_USB3:
4f5b8aa35e68a3 Sven Peter 2022-11-30  1597  		ret = atcphy_configure_pipehandler(atcphy, state);
4f5b8aa35e68a3 Sven Peter 2022-11-30  1598  		break;
4f5b8aa35e68a3 Sven Peter 2022-11-30  1599
4f5b8aa35e68a3 Sven Peter 2022-11-30  1600  	case ATCPHY_PIPEHANDLER_STATE_INVALID:
4f5b8aa35e68a3 Sven Peter 2022-11-30  1601  	default:
4f5b8aa35e68a3 Sven Peter 2022-11-30  1602  		dev_warn(atcphy->dev, "Invalid state %d in usb3_set_phy\n",
4f5b8aa35e68a3 Sven Peter 2022-11-30  1603  			 state);
4f5b8aa35e68a3 Sven Peter 2022-11-30  1604  		ret = -EINVAL;
4f5b8aa35e68a3 Sven Peter 2022-11-30  1605  	}
4f5b8aa35e68a3 Sven Peter 2022-11-30  1606
4f5b8aa35e68a3 Sven Peter 2022-11-30  1607  	mutex_unlock(&atcphy->lock);
4f5b8aa35e68a3 Sven Peter 2022-11-30  1608
4f5b8aa35e68a3 Sven Peter 2022-11-30  1609  	return 0;
4f5b8aa35e68a3 Sven Peter 2022-11-30  1610  }
4f5b8aa35e68a3 Sven Peter 2022-11-30  1611

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [asahilinux:bits/170-atcphy 4/16] drivers/phy/apple/atc.c:1589:2-8: preceding lock on line 1578 (fwd)
  2024-10-02 11:17 [asahilinux:bits/170-atcphy 4/16] drivers/phy/apple/atc.c:1589:2-8: preceding lock on line 1578 (fwd) Julia Lawall
@ 2024-10-02 21:03 ` Janne Grunau
  0 siblings, 0 replies; 2+ messages in thread
From: Janne Grunau @ 2024-10-02 21:03 UTC (permalink / raw)
  To: Julia Lawall; +Cc: Sven Peter, oe-kbuild-all

On Wed, Oct 02, 2024 at 01:17:12PM +0200, Julia Lawall wrote:
> Please check whether an unlock is needed on line 1589.

it is. This seems to be an error case we seldomly or never hit. Sven is
rewriting the driver and using guard(mutex)s making this kind of error
less likely. Fixed with an explicit mutex_unlock() before the return.

Thanks for the report,

Janne
> 
> ---------- Forwarded message ----------
> Date: Wed, 2 Oct 2024 19:08:09 +0800
> From: kernel test robot <lkp@intel.com>
> To: oe-kbuild@lists.linux.dev
> Cc: lkp@intel.com, Julia Lawall <julia.lawall@inria.fr>
> Subject: [asahilinux:bits/170-atcphy 4/16] drivers/phy/apple/atc.c:1589:2-8:
>     preceding lock on line 1578
> 
> BCC: lkp@intel.com
> CC: oe-kbuild-all@lists.linux.dev
> TO: Sven Peter <sven@svenpeter.dev>
> CC: Janne Grunau <j@jannau.net>
> 
> tree:   https://github.com/AsahiLinux/linux bits/170-atcphy
> head:   819ac8ed6c5777d4b18f0c88fc4a5e55a9ab9fdd
> commit: 4f5b8aa35e68a33a1d20b6ce62014794768af7ad [4/16] WIP: phy: apple: Add Apple Type-C PHY
> :::::: branch date: 8 days ago
> :::::: commit date: 2 weeks ago
> config: arc-randconfig-r052-20241002 (https://download.01.org/0day-ci/archive/20241002/202410021851.sGmBSrDd-lkp@intel.com/config)
> compiler: arc-elf-gcc (GCC) 13.2.0
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Reported-by: Julia Lawall <julia.lawall@inria.fr>
> | Closes: https://lore.kernel.org/r/202410021851.sGmBSrDd-lkp@intel.com/
> 
> cocci warnings: (new ones prefixed by >>)
> >> drivers/phy/apple/atc.c:1589:2-8: preceding lock on line 1578
>    drivers/phy/apple/atc.c:1589:2-8: preceding lock on line 1584
> 
> vim +1589 drivers/phy/apple/atc.c
> 
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1566
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1567  static int atcphy_usb3_power_on(struct phy *phy)
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1568  {
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1569  	struct apple_atcphy *atcphy = phy_get_drvdata(phy);
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1570  	enum atcphy_pipehandler_state state;
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1571  	int ret = 0;
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1572
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1573  	/*
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1574  	 * Both usb role switch and mux set work will be running concurrently.
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1575  	 * Make sure atcphy_mux_set_work is done bringing up ATCPHY before
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1576  	 * trying to switch dwc3 to the correct PHY.
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1577  	 */
> 4f5b8aa35e68a3 Sven Peter 2022-11-30 @1578  	mutex_lock(&atcphy->lock);
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1579  	if (atcphy->mode != atcphy->target_mode) {
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1580  		reinit_completion(&atcphy->atcphy_online_event);
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1581  		mutex_unlock(&atcphy->lock);
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1582  		wait_for_completion_timeout(&atcphy->atcphy_online_event,
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1583  					msecs_to_jiffies(1000));
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1584  		mutex_lock(&atcphy->lock);
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1585  	}
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1586
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1587  	if (atcphy->mode != atcphy->target_mode) {
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1588  		dev_err(atcphy->dev, "ATCPHY did not come up; won't allow dwc3 to come up.\n");
> 4f5b8aa35e68a3 Sven Peter 2022-11-30 @1589  		return -EINVAL;
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1590  	}
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1591
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1592  	atcphy->dwc3_online = true;
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1593  	state = atcphy_modes[atcphy->mode].pipehandler_state;
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1594  	switch (state) {
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1595  	case ATCPHY_PIPEHANDLER_STATE_USB2:
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1596  	case ATCPHY_PIPEHANDLER_STATE_USB3:
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1597  		ret = atcphy_configure_pipehandler(atcphy, state);
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1598  		break;
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1599
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1600  	case ATCPHY_PIPEHANDLER_STATE_INVALID:
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1601  	default:
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1602  		dev_warn(atcphy->dev, "Invalid state %d in usb3_set_phy\n",
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1603  			 state);
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1604  		ret = -EINVAL;
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1605  	}
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1606
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1607  	mutex_unlock(&atcphy->lock);
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1608
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1609  	return 0;
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1610  }
> 4f5b8aa35e68a3 Sven Peter 2022-11-30  1611
> 
> -- 
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-10-02 21:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-02 11:17 [asahilinux:bits/170-atcphy 4/16] drivers/phy/apple/atc.c:1589:2-8: preceding lock on line 1578 (fwd) Julia Lawall
2024-10-02 21:03 ` Janne Grunau

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.