* [PATCH 0/3] drm/qxl: sparse fixes.
@ 2017-06-20 11:39 Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 1/3] drm/qxl: fix __user annotations Gerd Hoffmann
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2017-06-20 11:39 UTC (permalink / raw)
To: dri-devel; +Cc: Gerd Hoffmann
Fix qxl __user annotations in uapi include.
Also some more sparse easy warnings.
Some iomem address space issues left for another day.
Gerd Hoffmann (3):
drm/qxl: fix __user annotations
drm/qxl: declare a bunch of functions as static
drm/qxl: move extern variable declaration header file
drivers/gpu/drm/qxl/qxl_drv.h | 1 +
include/uapi/drm/qxl_drm.h | 6 +++---
drivers/gpu/drm/qxl/qxl_display.c | 18 +++++++++---------
drivers/gpu/drm/qxl/qxl_drv.c | 1 -
drivers/gpu/drm/qxl/qxl_ioctl.c | 17 +++++++++--------
drivers/gpu/drm/qxl/qxl_object.c | 4 ++--
6 files changed, 24 insertions(+), 23 deletions(-)
--
2.9.3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] drm/qxl: fix __user annotations
2017-06-20 11:39 [PATCH 0/3] drm/qxl: sparse fixes Gerd Hoffmann
@ 2017-06-20 11:39 ` Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 2/3] drm/qxl: declare a bunch of functions as static Gerd Hoffmann
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2017-06-20 11:39 UTC (permalink / raw)
To: dri-devel; +Cc: Gerd Hoffmann
Drop them from u64 fields, tag local variables correctly instead.
While being at it switch the code to use u64_to_user_ptr().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Daniel Vetter <daniel@ffwll.ch>
---
include/uapi/drm/qxl_drm.h | 6 +++---
drivers/gpu/drm/qxl/qxl_ioctl.c | 17 +++++++++--------
2 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/include/uapi/drm/qxl_drm.h b/include/uapi/drm/qxl_drm.h
index 7eef422130..880999d2d8 100644
--- a/include/uapi/drm/qxl_drm.h
+++ b/include/uapi/drm/qxl_drm.h
@@ -80,8 +80,8 @@ struct drm_qxl_reloc {
};
struct drm_qxl_command {
- __u64 __user command; /* void* */
- __u64 __user relocs; /* struct drm_qxl_reloc* */
+ __u64 command; /* void* */
+ __u64 relocs; /* struct drm_qxl_reloc* */
__u32 type;
__u32 command_size;
__u32 relocs_num;
@@ -91,7 +91,7 @@ struct drm_qxl_command {
struct drm_qxl_execbuffer {
__u32 flags; /* for future use */
__u32 commands_num;
- __u64 __user commands; /* struct drm_qxl_command* */
+ __u64 commands; /* struct drm_qxl_command* */
};
struct drm_qxl_update_area {
diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c
index 0b82a87916..31effed4a3 100644
--- a/drivers/gpu/drm/qxl/qxl_ioctl.c
+++ b/drivers/gpu/drm/qxl/qxl_ioctl.c
@@ -163,7 +163,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
return -EINVAL;
if (!access_ok(VERIFY_READ,
- (void *)(unsigned long)cmd->command,
+ u64_to_user_ptr(cmd->command),
cmd->command_size))
return -EFAULT;
@@ -183,7 +183,9 @@ static int qxl_process_single_command(struct qxl_device *qdev,
/* TODO copy slow path code from i915 */
fb_cmd = qxl_bo_kmap_atomic_page(qdev, cmd_bo, (release->release_offset & PAGE_SIZE));
- unwritten = __copy_from_user_inatomic_nocache(fb_cmd + sizeof(union qxl_release_info) + (release->release_offset & ~PAGE_SIZE), (void *)(unsigned long)cmd->command, cmd->command_size);
+ unwritten = __copy_from_user_inatomic_nocache
+ (fb_cmd + sizeof(union qxl_release_info) + (release->release_offset & ~PAGE_SIZE),
+ u64_to_user_ptr(cmd->command), cmd->command_size);
{
struct qxl_drawable *draw = fb_cmd;
@@ -201,10 +203,9 @@ static int qxl_process_single_command(struct qxl_device *qdev,
num_relocs = 0;
for (i = 0; i < cmd->relocs_num; ++i) {
struct drm_qxl_reloc reloc;
+ struct drm_qxl_reloc __user *u = u64_to_user_ptr(cmd->relocs);
- if (copy_from_user(&reloc,
- &((struct drm_qxl_reloc *)(uintptr_t)cmd->relocs)[i],
- sizeof(reloc))) {
+ if (copy_from_user(&reloc, u + i, sizeof(reloc))) {
ret = -EFAULT;
goto out_free_bos;
}
@@ -282,10 +283,10 @@ static int qxl_execbuffer_ioctl(struct drm_device *dev, void *data,
for (cmd_num = 0; cmd_num < execbuffer->commands_num; ++cmd_num) {
- struct drm_qxl_command *commands =
- (struct drm_qxl_command *)(uintptr_t)execbuffer->commands;
+ struct drm_qxl_command __user *commands =
+ u64_to_user_ptr(execbuffer->commands);
- if (copy_from_user(&user_cmd, &commands[cmd_num],
+ if (copy_from_user(&user_cmd, commands + cmd_num,
sizeof(user_cmd)))
return -EFAULT;
--
2.9.3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] drm/qxl: declare a bunch of functions as static
2017-06-20 11:39 [PATCH 0/3] drm/qxl: sparse fixes Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 1/3] drm/qxl: fix __user annotations Gerd Hoffmann
@ 2017-06-20 11:39 ` Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 3/3] drm/qxl: move extern variable declaration header file Gerd Hoffmann
2017-06-20 15:07 ` [PATCH 0/3] drm/qxl: sparse fixes Daniel Vetter
3 siblings, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2017-06-20 11:39 UTC (permalink / raw)
To: dri-devel; +Cc: Gerd Hoffmann
Flagged by sparse.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/gpu/drm/qxl/qxl_display.c | 18 +++++++++---------
drivers/gpu/drm/qxl/qxl_object.c | 4 ++--
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index f5ef81595f..0059ea4273 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -437,7 +437,7 @@ static void qxl_monitors_config_set(struct qxl_device *qdev,
}
-void qxl_mode_set_nofb(struct drm_crtc *crtc)
+static void qxl_mode_set_nofb(struct drm_crtc *crtc)
{
struct qxl_device *qdev = crtc->dev->dev_private;
struct qxl_crtc *qcrtc = to_qxl_crtc(crtc);
@@ -475,8 +475,8 @@ static const struct drm_crtc_helper_funcs qxl_crtc_helper_funcs = {
.atomic_flush = qxl_crtc_atomic_flush,
};
-int qxl_primary_atomic_check(struct drm_plane *plane,
- struct drm_plane_state *state)
+static int qxl_primary_atomic_check(struct drm_plane *plane,
+ struct drm_plane_state *state)
{
struct qxl_device *qdev = plane->dev->dev_private;
struct qxl_framebuffer *qfb;
@@ -547,8 +547,8 @@ static void qxl_primary_atomic_disable(struct drm_plane *plane,
}
}
-int qxl_plane_atomic_check(struct drm_plane *plane,
- struct drm_plane_state *state)
+static int qxl_plane_atomic_check(struct drm_plane *plane,
+ struct drm_plane_state *state)
{
return 0;
}
@@ -647,8 +647,8 @@ static void qxl_cursor_atomic_update(struct drm_plane *plane,
}
-void qxl_cursor_atomic_disable(struct drm_plane *plane,
- struct drm_plane_state *old_state)
+static void qxl_cursor_atomic_disable(struct drm_plane *plane,
+ struct drm_plane_state *old_state)
{
struct qxl_device *qdev = plane->dev->dev_private;
struct qxl_release *release;
@@ -675,8 +675,8 @@ void qxl_cursor_atomic_disable(struct drm_plane *plane,
qxl_release_fence_buffer_objects(release);
}
-int qxl_plane_prepare_fb(struct drm_plane *plane,
- struct drm_plane_state *new_state)
+static int qxl_plane_prepare_fb(struct drm_plane *plane,
+ struct drm_plane_state *new_state)
{
struct drm_gem_object *obj;
struct qxl_bo *user_bo;
diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c
index 9a7eef7dd6..0a67ddf19c 100644
--- a/drivers/gpu/drm/qxl/qxl_object.c
+++ b/drivers/gpu/drm/qxl/qxl_object.c
@@ -221,7 +221,7 @@ struct qxl_bo *qxl_bo_ref(struct qxl_bo *bo)
return bo;
}
-int __qxl_bo_pin(struct qxl_bo *bo, u32 domain, u64 *gpu_addr)
+static int __qxl_bo_pin(struct qxl_bo *bo, u32 domain, u64 *gpu_addr)
{
struct drm_device *ddev = bo->gem_base.dev;
int r;
@@ -244,7 +244,7 @@ int __qxl_bo_pin(struct qxl_bo *bo, u32 domain, u64 *gpu_addr)
return r;
}
-int __qxl_bo_unpin(struct qxl_bo *bo)
+static int __qxl_bo_unpin(struct qxl_bo *bo)
{
struct drm_device *ddev = bo->gem_base.dev;
int r, i;
--
2.9.3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] drm/qxl: move extern variable declaration header file
2017-06-20 11:39 [PATCH 0/3] drm/qxl: sparse fixes Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 1/3] drm/qxl: fix __user annotations Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 2/3] drm/qxl: declare a bunch of functions as static Gerd Hoffmann
@ 2017-06-20 11:39 ` Gerd Hoffmann
2017-06-20 15:07 ` [PATCH 0/3] drm/qxl: sparse fixes Daniel Vetter
3 siblings, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2017-06-20 11:39 UTC (permalink / raw)
To: dri-devel; +Cc: Gerd Hoffmann
Flagged by sparse.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/gpu/drm/qxl/qxl_drv.h | 1 +
drivers/gpu/drm/qxl/qxl_drv.c | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
index 3591d2330a..3397a19073 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.h
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
@@ -64,6 +64,7 @@
extern int qxl_log_level;
extern int qxl_num_crtc;
+extern int qxl_max_ioctls;
enum {
QXL_INFO_LEVEL = 1,
diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
index c2fc201d9e..bb5014aeee 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.c
+++ b/drivers/gpu/drm/qxl/qxl_drv.c
@@ -37,7 +37,6 @@
#include "qxl_drv.h"
#include "qxl_object.h"
-extern int qxl_max_ioctls;
static const struct pci_device_id pciidlist[] = {
{ 0x1b36, 0x100, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8,
0xffff00, 0 },
--
2.9.3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] drm/qxl: sparse fixes.
2017-06-20 11:39 [PATCH 0/3] drm/qxl: sparse fixes Gerd Hoffmann
` (2 preceding siblings ...)
2017-06-20 11:39 ` [PATCH 3/3] drm/qxl: move extern variable declaration header file Gerd Hoffmann
@ 2017-06-20 15:07 ` Daniel Vetter
3 siblings, 0 replies; 5+ messages in thread
From: Daniel Vetter @ 2017-06-20 15:07 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: dri-devel
On Tue, Jun 20, 2017 at 01:39:13PM +0200, Gerd Hoffmann wrote:
> Fix qxl __user annotations in uapi include.
> Also some more sparse easy warnings.
> Some iomem address space issues left for another day.
>
> Gerd Hoffmann (3):
> drm/qxl: fix __user annotations
> drm/qxl: declare a bunch of functions as static
> drm/qxl: move extern variable declaration header file
on the series: Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
> drivers/gpu/drm/qxl/qxl_drv.h | 1 +
> include/uapi/drm/qxl_drm.h | 6 +++---
> drivers/gpu/drm/qxl/qxl_display.c | 18 +++++++++---------
> drivers/gpu/drm/qxl/qxl_drv.c | 1 -
> drivers/gpu/drm/qxl/qxl_ioctl.c | 17 +++++++++--------
> drivers/gpu/drm/qxl/qxl_object.c | 4 ++--
> 6 files changed, 24 insertions(+), 23 deletions(-)
>
> --
> 2.9.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-06-20 15:07 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-20 11:39 [PATCH 0/3] drm/qxl: sparse fixes Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 1/3] drm/qxl: fix __user annotations Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 2/3] drm/qxl: declare a bunch of functions as static Gerd Hoffmann
2017-06-20 11:39 ` [PATCH 3/3] drm/qxl: move extern variable declaration header file Gerd Hoffmann
2017-06-20 15:07 ` [PATCH 0/3] drm/qxl: sparse fixes Daniel Vetter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox