Linux IOMMU Development
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger@linaro.org>
To: Baptiste Reynal <b.reynal@virtualopensystems.com>,
	kvmarm@lists.cs.columbia.edu, iommu@lists.linux-foundation.org,
	alex.williamson@redhat.com
Cc: list@lists.cs.columbia.edu, VFIO DRIVER <kvm@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>,
	open@lists.cs.columbia.edu, tech@virtualopensystems.com
Subject: Re: [RFC PATCH v3 2/3] vfio: platform: access device property as a list of strings
Date: Thu, 03 Sep 2015 18:49:08 +0200	[thread overview]
Message-ID: <55E87A04.4020508@linaro.org> (raw)
In-Reply-To: <1419024032-1269-3-git-send-email-a.motakis@virtualopensystems.com>

On 12/19/2014 10:20 PM, Antonios Motakis wrote:
> Certain device properties (e.g. the device node name, the compatible
> string), are available as a list of strings (separated by the null
> terminating character). Let the VFIO user query this type of properties.
> 
> Signed-off-by: Antonios Motakis <a.motakis@virtualopensystems.com>
> ---
>  drivers/vfio/platform/properties.c | 43 +++++++++++++++++++++++++++++++++++++-
>  1 file changed, 42 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/vfio/platform/properties.c b/drivers/vfio/platform/properties.c
> index 8b90465..39c6342 100644
> --- a/drivers/vfio/platform/properties.c
> +++ b/drivers/vfio/platform/properties.c
> @@ -7,7 +7,48 @@ static int dev_property_get_strings(struct device *dev,
>  				    char *name, unsigned *lenp,
>  				    void __user *datap, unsigned long datasz)
>  {
> -	return -EINVAL;
> +	const char **val;
> +	int n, i, ret;
> +
> +	*lenp = 0;
> +
> +	n = device_property_read_string_array(dev, name, NULL, 0);
> +	if (n < 0)
don't know if n==0 can happen? property found but not value?
> +		return n;
> +
> +	val = kcalloc(n, sizeof(char*), GFP_KERNEL);
char *, checkpatch error.
> +	if (!val)
> +		return -ENOMEM;
> +
> +	ret = device_property_read_string_array(dev, name, val, n);
> +	if (ret < 0)
> +		goto out;
> +
> +	ret = 0;
why not initializing ret at declaration time?
> +
> +	for (i = 0; i < n; i++) {
> +		size_t len = strlen(val[i]) + 1;
> +
> +		if (datasz < len) {
> +			ret = -EOVERFLOW;
> +			while (i < n)
> +				*lenp += strlen(val[i++]) + 1;
why do you set *lenp to the length of all strings even if they can't be
copied?
> +			goto out;
> +		}
> +
> +		if (copy_to_user(datap, val[i], len)) {
> +			ret = -EFAULT;
so in that case *lenp is not incremented?
> +			goto out;
> +		}
Can't you have a similar implementation as for uxx, see next patch
comments. Can't you copy to user in one shot. Can't that code be simplified.
> +
> +		*lenp += len;
> +		datap += len;
> +		datasz -= len;
> +	}
> +
> +out:
> +	kfree(val);
> +	return ret;
>  }
>  
>  static int dev_property_get_uint(struct device *dev, char *name,
> 

  reply	other threads:[~2015-09-03 16:49 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-19 21:20 [RFC PATCH v3 0/3] vfio: platform: return device properties for a platform device Antonios Motakis
     [not found] ` <1419024032-1269-1-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-12-19 21:20   ` [RFC PATCH v3 1/3] vfio: platform: add device properties skeleton and user API Antonios Motakis
     [not found]     ` <1419024032-1269-2-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2015-09-03 16:48       ` Eric Auger
2014-12-19 21:20   ` [RFC PATCH v3 2/3] vfio: platform: access device property as a list of strings Antonios Motakis
2015-09-03 16:49     ` Eric Auger [this message]
2014-12-19 21:20   ` [RFC PATCH v3 3/3] vfio: platform: return device properties as arrays of unsigned integers Antonios Motakis
     [not found]     ` <1419024032-1269-4-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2015-09-03 16:49       ` Eric Auger
2015-08-27 12:52   ` [RFC PATCH v3 0/3] vfio: platform: return device properties for a platform device Eric Auger
2015-08-27 13:36     ` Antonios Motakis
     [not found]       ` <55DF124F.8020801-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2015-08-27 13:49         ` Eric Auger
     [not found]     ` <55DF07F0.3070405-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-08-27 14:27       ` Christian Pinto
     [not found]         ` <55DF1E4B.6040604-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2015-08-27 14:55           ` Eric Auger
2015-08-27 16:11       ` Alex Williamson
2015-08-27 17:16         ` Eric Auger
     [not found]           ` <55DF45D0.5040704-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-08-30 14:06             ` Christoffer Dall
2015-08-31 17:02               ` Eric Auger
     [not found]                 ` <55E48897.4090907-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-08-31 17:33                   ` Christoffer Dall
2015-09-01  7:31                     ` Eric Auger
2015-09-01  9:28                       ` Christoffer Dall
2015-09-01 15:29                         ` Building assigned device guest dt node from host device tree Eric Auger
2015-09-01 15:49                           ` Peter Maydell
2015-09-01 17:00                           ` Alexander Graf
     [not found]                             ` <83D37F6C-FFE9-4C3C-AA1C-F12603954C2A-l3A5Bk7waGM@public.gmane.org>
2015-09-01 17:16                               ` Eric Auger
2015-09-01 15:32                         ` [RFC PATCH v3 0/3] vfio: platform: return device properties for a platform device Baptiste Reynal
     [not found]                           ` <CAN9JPjGfuv_YOBEdZA_AD13oHej7wMCR50=zQTZmgzHx-jBj_A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-01 15:52                             ` Christoffer Dall
2015-09-02  7:21                               ` Baptiste Reynal
     [not found]                                 ` <CAN9JPjFwsiYzR6RtDA-5UZYoNALGu8crXVyA+m6ptsWv=qJi5A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-02  9:21                                   ` Christoffer Dall
2015-09-02  9:49                                     ` Baptiste Reynal
2015-09-02 10:32                                       ` Christoffer Dall
2015-09-02 13:42                                         ` Baptiste Reynal
2015-09-02 16:52                                       ` Alex Williamson
     [not found]                                         ` <1441212724.20355.306.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-03  7:42                                           ` Baptiste Reynal
     [not found]                                             ` <CAN9JPjF0Lex2wD=_iiriTaYdukva+rxhdwPTQnGqC5kQFCEYGg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-03  8:49                                               ` Christoffer Dall
2015-09-03 14:18                                                 ` Alex Williamson
2015-09-03 16:46                                             ` Eric Auger

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=55E87A04.4020508@linaro.org \
    --to=eric.auger@linaro.org \
    --cc=alex.williamson@redhat.com \
    --cc=b.reynal@virtualopensystems.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=list@lists.cs.columbia.edu \
    --cc=open@lists.cs.columbia.edu \
    --cc=tech@virtualopensystems.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