All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Neuling <mikey@neuling.org>
To: Daniel Axtens <dja@axtens.net>
Cc: linuxppc-dev@ozlabs.org, mpe@ellerman.id.au,
	benh@kernel.crashing.org, imunsie@au.ibm.com
Subject: Re: [PATCH] cxl: Check if afu is not null in cxl_slbia
Date: Fri, 10 Jul 2015 09:50:02 +1000	[thread overview]
Message-ID: <1436485802.10184.15.camel@neuling.org> (raw)
In-Reply-To: <1436483065-9202-1-git-send-email-dja@axtens.net>

On Fri, 2015-07-10 at 09:04 +1000, Daniel Axtens wrote:
> The pointer to an AFU in the adapter's list of AFUs can be null
> if we're in the process of removing AFUs. The afu_list_lock
> doesn't guard against this.
>=20
> Say we have 2 slices, and we're in the process of removing cxl.
>  - We remove the AFUs in order (see cxl_remove). In cxl_remove_afu
>    for AFU 0, we take the lock, set adapter->afu[0] =3D NULL, and
>    release the lock.
>  - Then we get an slbia. In cxl_slbia we take the lock, and set
>    afu =3D adapter->afu[0], which is NULL.
>  - Therefore our attempt to check afu->enabled will blow up.
>=20
> Therefore, check if afu is a null pointer before dereferencing it.
>=20
> cc: STABLE

FYI This needs to be (see Documentation/stable_kernel_rules.txt):
Cc: stable@vger.kernel.org

Other than that, looks good.  Thanks.

Acked-by: Michael Neuling <mikey@neuling.org>

> Signed-off-by: Daniel Axtens <dja@axtens.net>
> ---
>  drivers/misc/cxl/main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>=20
> diff --git a/drivers/misc/cxl/main.c b/drivers/misc/cxl/main.c
> index 11a2044d6b0f..5bcd676bfd59 100644
> --- a/drivers/misc/cxl/main.c
> +++ b/drivers/misc/cxl/main.c
> @@ -86,7 +86,7 @@ static inline void cxl_slbia_core(struct mm_struct *mm)
>  		spin_lock(&adapter->afu_list_lock);
>  		for (slice =3D 0; slice < adapter->slices; slice++) {
>  			afu =3D adapter->afu[slice];
> -			if (!afu->enabled)
> +			if (!afu || !afu->enabled)
>  				continue;
>  			rcu_read_lock();
>  			idr_for_each_entry(&afu->contexts_idr, ctx, id)

  reply	other threads:[~2015-07-09 23:50 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-09 23:04 [PATCH] cxl: Check if afu is not null in cxl_slbia Daniel Axtens
2015-07-09 23:50 ` Michael Neuling [this message]
2015-07-10  0:09 ` Ian Munsie
2015-07-10  6:55 ` Michael Ellerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1436485802.10184.15.camel@neuling.org \
    --to=mikey@neuling.org \
    --cc=benh@kernel.crashing.org \
    --cc=dja@axtens.net \
    --cc=imunsie@au.ibm.com \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mpe@ellerman.id.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.