mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Henri Roosen <henri.roosen@ginzinger.com>
To: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: <linux-remoteproc@vger.kernel.org>,
	Ohad Ben-Cohen <ohad@wizery.com>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] rpmsg: rpmsg_core: fix null-ptr dereference for devices without ops
Date: Mon, 26 Jun 2017 11:04:40 +0200	[thread overview]
Message-ID: <75ec91fa-270b-862a-6e7e-15839dff3fc8@ginzinger.com> (raw)
In-Reply-To: <20170625215148.GJ26155@builder>

On 06/25/2017 11:51 PM, Bjorn Andersson wrote:
> On Fri 02 Jun 04:35 PDT 2017, Henri Roosen wrote:
>
>> A device might not have an ops structure registered. This
>> patch fixes a null-prt dereference by checking ops before dereferencing
>> it.
>>
>
> In what scenario do you end up with a rpdev without ops defined?
>
> You need at least create_ept defined in your ops to be able to do any
> form of communication. So it would probably make more sense to add a
> sanity check in rpmsg_register_device(), but perhaps I'm missing
> something.

I was trying to add support for the generic rpmsg-char driver for
virtio_rpmsg_bus.

The rpmsg-char driver gets registered using 
rpmsg_chrdev_register_device(), and IMHO this device should not have any
.ops. The chrdev is not used for communication, only for creating 
devices. The devices which should have the .ops are the ones created 
using the rpmsg-char device.

So actually having .ops for the device passed to 
rpmsg_chrdev_register_device() in drivers/rpmsg/qcom_smd.c seems wrong 
to me too and should be cleaned up.

>
>
> (If this is not true there are a bunch of other places where this needs
> to be checked as well)

If you agree to my opinion above, then I think this comes down to a 
design decision: a possibility might be to split off the chrdev code to 
a different implementation as the code for the communication devices. 
Else we need to identify the other places for the check.

Best regards,
Henri

>
> Regards,
> Bjorn
>
>> Signed-off-by: Henri Roosen <henri.roosen@ginzinger.com>
>> ---
>>  drivers/rpmsg/rpmsg_core.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/rpmsg/rpmsg_core.c b/drivers/rpmsg/rpmsg_core.c
>> index 600f5f9..0c48452 100644
>> --- a/drivers/rpmsg/rpmsg_core.c
>> +++ b/drivers/rpmsg/rpmsg_core.c
>> @@ -429,7 +429,7 @@ static int rpmsg_dev_probe(struct device *dev)
>>  		goto out;
>>  	}
>>
>> -	if (rpdev->ops->announce_create)
>> +	if (rpdev->ops && rpdev->ops->announce_create)
>>  		err = rpdev->ops->announce_create(rpdev);
>>  out:
>>  	return err;
>> --
>> 2.1.4
>>

  reply	other threads:[~2017-06-26  9:04 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-02 11:35 Henri Roosen
2017-06-02 21:47 ` Suman Anna
2017-06-25 21:51 ` Bjorn Andersson
2017-06-26  9:04   ` Henri Roosen [this message]
2017-06-28 19:24     ` Bjorn Andersson

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=75ec91fa-270b-862a-6e7e-15839dff3fc8@ginzinger.com \
    --to=henri.roosen@ginzinger.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=ohad@wizery.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®