Re: [RESEND v13 07/25] CXL/AER: Replace device_lock() in cxl_rch_handle_error_iter() with guard() lock

Jonathan Cameron
2025-11-04T18:06:03Z

On Tue, 4 Nov 2025 11:02:47 -0600
Terry Bowman <terry.bowman@amd.com> wrote:

> cxl_rch_handle_error_iter() includes a call to device_lock() using a goto
> for multiple return paths. Improve readability and maintainability by
> using the guard() lock variant.
>
> Signed-off-by: Terry Bowman <terry.bowman@amd.com>
I don't think there is any existing use of cleanup.h in here aer.c?
If not you should add

#include <linux/cleanup.h> in appropriate place.

Other than that LGTM

Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>

>
> ---
>
> Changes in v12->v13:
> - New patch
> ---
> drivers/pci/pcie/aer.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
> index 0b5ed4722ac3..cbaed65577d9 100644
> --- a/drivers/pci/pcie/aer.c
> +++ b/drivers/pci/pcie/aer.c
> @@ -1187,12 +1187,11 @@ static int cxl_rch_handle_error_iter(struct pci_dev *dev, void *data)
> if (!is_cxl_mem_dev(dev) || !cxl_error_is_native(dev))
> return 0;
>
> - /* Protect dev->driver */
> - device_lock(&dev->dev);
> + guard(device)(&dev->dev);
>
> err_handler = dev->driver ? dev->driver->err_handler : NULL;
> if (!err_handler)
> - goto out;
> + return 0;
>
> if (info->severity == AER_CORRECTABLE) {
> if (err_handler->cor_error_detected)
> @@ -1203,8 +1202,6 @@ static int cxl_rch_handle_error_iter(struct pci_dev *dev, void *data)
> else if (info->severity == AER_FATAL)
> err_handler->error_detected(dev, pci_channel_io_frozen);
> }
> -out:
> - device_unlock(&dev->dev);
> return 0;
> }
>