From: Antonios Motakis <a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
To: kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: "open list:VFIO DRIVER"
<kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
open list <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Antonios Motakis
<a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>,
tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org,
christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org
Subject: [RFC PATCH v3 2/3] vfio: platform: access device property as a list of strings
Date: Fri, 19 Dec 2014 22:20:30 +0100 [thread overview]
Message-ID: <1419024032-1269-3-git-send-email-a.motakis@virtualopensystems.com> (raw)
In-Reply-To: <1419024032-1269-1-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
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-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
---
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)
+ return n;
+
+ val = kcalloc(n, sizeof(char*), GFP_KERNEL);
+ if (!val)
+ return -ENOMEM;
+
+ ret = device_property_read_string_array(dev, name, val, n);
+ if (ret < 0)
+ goto out;
+
+ ret = 0;
+
+ 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;
+ goto out;
+ }
+
+ if (copy_to_user(datap, val[i], len)) {
+ ret = -EFAULT;
+ goto out;
+ }
+
+ *lenp += len;
+ datap += len;
+ datasz -= len;
+ }
+
+out:
+ kfree(val);
+ return ret;
}
static int dev_property_get_uint(struct device *dev, char *name,
--
2.1.3
next prev parent reply other threads:[~2014-12-19 21:20 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 ` Antonios Motakis [this message]
2015-09-03 16:49 ` [RFC PATCH v3 2/3] vfio: platform: access device property as a list of strings Eric Auger
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=1419024032-1269-3-git-send-email-a.motakis@virtualopensystems.com \
--to=a.motakis-lrhrjnjw1ufhk3s98ze1ajgjjy/sre9j@public.gmane.org \
--cc=alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org \
/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