| From be442399a8072a8e65efa84f4884b5a6d0ef5bb8 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 17 Jun 2021 15:57:12 +0800 |
| Subject: crypto: nx - Fix RCU warning in nx842_OF_upd_status |
| |
| From: Herbert Xu <herbert@gondor.apana.org.au> |
| |
| [ Upstream commit 2a96726bd0ccde4f12b9b9a9f61f7b1ac5af7e10 ] |
| |
| The function nx842_OF_upd_status triggers a sparse RCU warning when |
| it directly dereferences the RCU-protected devdata. This appears |
| to be an accident as there was another variable of the same name |
| that was passed in from the caller. |
| |
| After it was removed (because the main purpose of using it, to |
| update the status member was itself removed) the global variable |
| unintenionally stood in as its replacement. |
| |
| This patch restores the devdata parameter. |
| |
| Fixes: 90fd73f912f0 ("crypto: nx - remove pSeries NX 'status' field") |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/crypto/nx/nx-842-pseries.c | 8 +++++--- |
| 1 file changed, 5 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/crypto/nx/nx-842-pseries.c b/drivers/crypto/nx/nx-842-pseries.c |
| index 258c5e38a551..c5ec50a28f30 100644 |
| --- a/drivers/crypto/nx/nx-842-pseries.c |
| +++ b/drivers/crypto/nx/nx-842-pseries.c |
| @@ -538,13 +538,15 @@ static int nx842_OF_set_defaults(struct nx842_devdata *devdata) |
| * The status field indicates if the device is enabled when the status |
| * is 'okay'. Otherwise the device driver will be disabled. |
| * |
| - * @prop - struct property point containing the maxsyncop for the update |
| + * @devdata: struct nx842_devdata to use for dev_info |
| + * @prop: struct property point containing the maxsyncop for the update |
| * |
| * Returns: |
| * 0 - Device is available |
| * -ENODEV - Device is not available |
| */ |
| -static int nx842_OF_upd_status(struct property *prop) |
| +static int nx842_OF_upd_status(struct nx842_devdata *devdata, |
| + struct property *prop) |
| { |
| const char *status = (const char *)prop->value; |
| |
| @@ -758,7 +760,7 @@ static int nx842_OF_upd(struct property *new_prop) |
| goto out; |
| |
| /* Perform property updates */ |
| - ret = nx842_OF_upd_status(status); |
| + ret = nx842_OF_upd_status(new_devdata, status); |
| if (ret) |
| goto error_out; |
| |
| -- |
| 2.30.2 |
| |