drivers/misc/mei/main.c:482:1-7: preceding lock on line 466 (fwd)
From: Julia Lawall
Date: Tue Jun 02 2026 - 02:48:23 EST
Please chek on whether the lock on line 466 needs unlocks at the end
label.
julia
---------- Forwarded message ----------
Date: Tue, 02 Jun 2026 14:32:04 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: oe-kbuild@xxxxxxxxxxxxxxx
Cc: lkp@xxxxxxxxx, Julia Lawall <julia.lawall@xxxxxxxx>
Subject: drivers/misc/mei/main.c:482:1-7: preceding lock on line 466
BCC: lkp@xxxxxxxxx
CC: oe-kbuild-all@xxxxxxxxxxxxxxx
CC: linux-kernel@xxxxxxxxxxxxxxx
TO: Alexander Usyskin <alexander.usyskin@xxxxxxxxx>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: e43ffb69e0438cddd72aaa30898b4dc446f664f8
commit: 2b5c4cb2c008f01182f87f529cb104bc5bc80418 mei: retry connect if interrupted by link reset
date: 9 months ago
:::::: branch date: 32 hours ago
:::::: commit date: 9 months ago
config: x86_64-randconfig-r053-20260602 (https://download.01.org/0day-ci/archive/20260602/202606021422.qWcbUC4Y-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
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
| Fixes: 2b5c4cb2c008 ("mei: retry connect if interrupted by link reset")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Reported-by: Julia Lawall <julia.lawall@xxxxxxxx>
| Closes: https://lore.kernel.org/r/202606021422.qWcbUC4Y-lkp@xxxxxxxxx/
cocci warnings: (new ones prefixed by >>)
>> drivers/misc/mei/main.c:482:1-7: preceding lock on line 466
vim +482 drivers/misc/mei/main.c
ab841160d907bf drivers/staging/mei/main.c Oren Weil 2011-05-15 398
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 399 /**
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 400 * mei_ioctl_connect_client - the connect to fw client IOCTL function
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 401 *
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 402 * @file: private data of the file object
aa207a05f95abc drivers/misc/mei/main.c Alexander Usyskin 2020-08-18 403 * @in_client_uuid: requested UUID for connection
aa207a05f95abc drivers/misc/mei/main.c Alexander Usyskin 2020-08-18 404 * @client: IOCTL connect data, output parameters
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 405 *
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 406 * Locking: called under "dev->device_lock" lock
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 407 *
a8605ea2c20c2b drivers/misc/mei/main.c Alexander Usyskin 2014-09-29 408 * Return: 0 on success, <0 on failure.
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 409 */
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 410 static int mei_ioctl_connect_client(struct file *file,
aa207a05f95abc drivers/misc/mei/main.c Alexander Usyskin 2020-08-18 411 const uuid_le *in_client_uuid,
aa207a05f95abc drivers/misc/mei/main.c Alexander Usyskin 2020-08-18 412 struct mei_client *client)
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 413 {
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 414 struct mei_device *dev;
d320832f646660 drivers/misc/mei/main.c Tomas Winkler 2014-08-24 415 struct mei_me_client *me_cl;
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 416 struct mei_cl *cl;
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 417 int rets;
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 418
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 419 cl = file->private_data;
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 420 dev = cl->dev;
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 421
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 422 if (cl->state != MEI_FILE_INITIALIZING &&
79563db9ddd379 drivers/misc/mei/main.c Tomas Winkler 2015-01-11 423 cl->state != MEI_FILE_DISCONNECTED)
79563db9ddd379 drivers/misc/mei/main.c Tomas Winkler 2015-01-11 424 return -EBUSY;
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 425
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 426 retry:
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 427 /* find ME client we're trying to connect to */
aa207a05f95abc drivers/misc/mei/main.c Alexander Usyskin 2020-08-18 428 me_cl = mei_me_cl_by_uuid(dev, in_client_uuid);
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 429 if (!me_cl) {
631ae0c01010ba drivers/misc/mei/main.c Alexander Usyskin 2025-07-17 430 cl_dbg(dev, cl, "Cannot connect to FW Client UUID = %pUl\n",
aa207a05f95abc drivers/misc/mei/main.c Alexander Usyskin 2020-08-18 431 in_client_uuid);
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 432 rets = -ENOTTY;
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 433 goto end;
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 434 }
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 435
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 436 if (me_cl->props.fixed_address) {
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 437 bool forbidden = dev->override_fixed_address ?
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 438 !dev->allow_fixed_address : !dev->hbm_f_fa_supported;
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 439 if (forbidden) {
631ae0c01010ba drivers/misc/mei/main.c Alexander Usyskin 2025-07-17 440 cl_dbg(dev, cl, "Connection forbidden to FW Client UUID = %pUl\n",
aa207a05f95abc drivers/misc/mei/main.c Alexander Usyskin 2020-08-18 441 in_client_uuid);
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 442 rets = -ENOTTY;
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 443 goto end;
f4e06246183f18 drivers/misc/mei/main.c Alexander Usyskin 2016-02-07 444 }
80fe6361540fd7 drivers/misc/mei/main.c Tomas Winkler 2013-05-07 445 }
80fe6361540fd7 drivers/misc/mei/main.c Tomas Winkler 2013-05-07 446
631ae0c01010ba drivers/misc/mei/main.c Alexander Usyskin 2025-07-17 447 cl_dbg(dev, cl, "Connect to FW Client ID = %d\n", me_cl->client_id);
631ae0c01010ba drivers/misc/mei/main.c Alexander Usyskin 2025-07-17 448 cl_dbg(dev, cl, "FW Client - Protocol Version = %d\n", me_cl->props.protocol_version);
631ae0c01010ba drivers/misc/mei/main.c Alexander Usyskin 2025-07-17 449 cl_dbg(dev, cl, "FW Client - Max Msg Len = %d\n", me_cl->props.max_msg_length);
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 450
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 451 /* prepare the output buffer */
d320832f646660 drivers/misc/mei/main.c Tomas Winkler 2014-08-24 452 client->max_msg_length = me_cl->props.max_msg_length;
d320832f646660 drivers/misc/mei/main.c Tomas Winkler 2014-08-24 453 client->protocol_version = me_cl->props.protocol_version;
631ae0c01010ba drivers/misc/mei/main.c Alexander Usyskin 2025-07-17 454 cl_dbg(dev, cl, "Can connect?\n");
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 455
d49ed64a6e3f73 drivers/misc/mei/main.c Alexander Usyskin 2015-05-04 456 rets = mei_cl_connect(cl, me_cl, file);
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 457
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 458 if (rets && cl->status == -EFAULT &&
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 459 (dev->dev_state == MEI_DEV_RESETTING ||
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 460 dev->dev_state == MEI_DEV_INIT_CLIENTS)) {
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 461 /* in link reset, wait for it completion */
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 462 mutex_unlock(&dev->device_lock);
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 463 rets = wait_event_interruptible_timeout(dev->wait_dev_state,
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 464 dev->dev_state == MEI_DEV_ENABLED,
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 465 dev->timeouts.link_reset_wait);
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 @466 mutex_lock(&dev->device_lock);
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 467 if (rets < 0) {
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 468 if (signal_pending(current))
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 469 rets = -EINTR;
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 470 goto end;
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 471 }
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 472 if (dev->dev_state != MEI_DEV_ENABLED) {
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 473 rets = -ETIME;
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 474 goto end;
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 475 }
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 476 mei_me_cl_put(me_cl);
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 477 goto retry;
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 478 }
2b5c4cb2c008f0 drivers/misc/mei/main.c Alexander Usyskin 2025-09-18 479
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 480 end:
79563db9ddd379 drivers/misc/mei/main.c Tomas Winkler 2015-01-11 481 mei_me_cl_put(me_cl);
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 @482 return rets;
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 483 }
9f81abdac36296 drivers/misc/mei/main.c Tomas Winkler 2013-01-08 484
:::::: The code at line 482 was first introduced by commit
:::::: 9f81abdac3629629a246fdc9e2a7c01ffd52ce8a mei: implement mei_cl_connect function
:::::: TO: Tomas Winkler <tomas.winkler@xxxxxxxxx>
:::::: CC: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki