From b95f5c534f2ca5c2dfd341732afadce10b306ecd Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Wed, 20 Nov 2013 14:02:09 -0800 Subject: [PATCH 1/5] video: adf: remove PAGE_SIZE from userspace-facing header Systems may define PAGE_SIZE in userspace limits.h but don't have to. PAGE_SIZE was picked as an arbitrary "reasonable" limit so just use 4096 instead. Change-Id: I9555e39aba64a3a70f61eb6ded2a4129ab236ce0 Signed-off-by: Greg Hackmann --- include/uapi/video/adf.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/uapi/video/adf.h b/include/uapi/video/adf.h index 2ba345ca458b..73cb936e0da9 100644 --- a/include/uapi/video/adf.h +++ b/include/uapi/video/adf.h @@ -22,7 +22,7 @@ #include #define ADF_NAME_LEN 32 -#define ADF_MAX_CUSTOM_DATA_SIZE PAGE_SIZE +#define ADF_MAX_CUSTOM_DATA_SIZE 4096 enum adf_interface_type { ADF_INTF_DSI = 0, @@ -126,7 +126,7 @@ struct adf_buffer_config { __s64 acquire_fence; }; -#define ADF_MAX_BUFFERS (PAGE_SIZE / sizeof(struct adf_buffer_config)) +#define ADF_MAX_BUFFERS (4096 / sizeof(struct adf_buffer_config)) /** * struct adf_post_config - request to flip to a new set of buffers @@ -152,7 +152,7 @@ struct adf_post_config { __s64 complete_fence; }; -#define ADF_MAX_INTERFACES (PAGE_SIZE / sizeof(__u32)) +#define ADF_MAX_INTERFACES (4096 / sizeof(__u32)) /** * struct adf_simple_buffer_allocate - request to allocate a "simple" buffer @@ -233,7 +233,7 @@ struct adf_device_data { size_t custom_data_size; void __user *custom_data; }; -#define ADF_MAX_ATTACHMENTS (PAGE_SIZE / sizeof(struct adf_attachment)) +#define ADF_MAX_ATTACHMENTS (4096 / sizeof(struct adf_attachment)) /** * struct adf_device_data - describes a display interface @@ -273,7 +273,7 @@ struct adf_interface_data { size_t custom_data_size; void __user *custom_data; }; -#define ADF_MAX_MODES (PAGE_SIZE / sizeof(struct drm_mode_modeinfo)) +#define ADF_MAX_MODES (4096 / sizeof(struct drm_mode_modeinfo)) /** * struct adf_overlay_engine_data - describes an overlay engine @@ -293,7 +293,7 @@ struct adf_overlay_engine_data { size_t custom_data_size; void __user *custom_data; }; -#define ADF_MAX_SUPPORTED_FORMATS (PAGE_SIZE / sizeof(__u32)) +#define ADF_MAX_SUPPORTED_FORMATS (4096 / sizeof(__u32)) #define ADF_SET_EVENT _IOW('D', 0, struct adf_set_event) #define ADF_BLANK _IOW('D', 1, __u8) From ccf0b45b743f5075143beccf8beca8fd9e988ef1 Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Mon, 11 Nov 2013 14:31:12 -0800 Subject: [PATCH 2/5] video: adf: fix ADF_MAX_ATTACHMENTS declaration Userspace-facing ADF_MAX_ATTACHMENTS must be in terms of userspace-facing struct adf_attachment_config Change-Id: Iaaddcd6366f13b3e52eb3911efcfff8a61e0b225 Signed-off-by: Greg Hackmann --- include/uapi/video/adf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/uapi/video/adf.h b/include/uapi/video/adf.h index 73cb936e0da9..38458f6428b5 100644 --- a/include/uapi/video/adf.h +++ b/include/uapi/video/adf.h @@ -233,7 +233,7 @@ struct adf_device_data { size_t custom_data_size; void __user *custom_data; }; -#define ADF_MAX_ATTACHMENTS (4096 / sizeof(struct adf_attachment)) +#define ADF_MAX_ATTACHMENTS (4096 / sizeof(struct adf_attachment_config)) /** * struct adf_device_data - describes a display interface From 55fefddeea4afb286f1c6fafa3a05ce4dea541a1 Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Wed, 20 Nov 2013 12:10:35 -0800 Subject: [PATCH 3/5] video: adf: validate dpms state passed to blank Change-Id: I3a4228d50fc4a2553b3e92e5675a94cbc6e71b8a Signed-off-by: Greg Hackmann --- drivers/video/adf/adf_client.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/video/adf/adf_client.c b/drivers/video/adf/adf_client.c index e4a792135072..bba873d34bbb 100644 --- a/drivers/video/adf/adf_client.c +++ b/drivers/video/adf/adf_client.c @@ -49,6 +49,9 @@ int adf_interface_blank(struct adf_interface *intf, u8 state) if (!intf->ops || !intf->ops->blank) return -EOPNOTSUPP; + if (state > DRM_MODE_DPMS_OFF) + return -EINVAL; + mutex_lock(&dev->client_lock); if (state != DRM_MODE_DPMS_ON) flush_kthread_worker(&dev->post_worker); From f2ec29aa62924e6b1ce5edb3bfc7dcd206023740 Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Fri, 22 Nov 2013 13:50:24 -0800 Subject: [PATCH 4/5] video: adf: fix fbdev blank -> dpms state mapping Change-Id: I96132a1b7275d389a6d0ba8899c6be838b63c422 Signed-off-by: Greg Hackmann --- drivers/video/adf/adf_fbdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/video/adf/adf_fbdev.c b/drivers/video/adf/adf_fbdev.c index 477abd63ccc2..cac34d14cbc2 100644 --- a/drivers/video/adf/adf_fbdev.c +++ b/drivers/video/adf/adf_fbdev.c @@ -519,10 +519,10 @@ int adf_fbdev_blank(int blank, struct fb_info *info) dpms_state = DRM_MODE_DPMS_STANDBY; break; case FB_BLANK_VSYNC_SUSPEND: - dpms_state = DRM_MODE_DPMS_STANDBY; + dpms_state = DRM_MODE_DPMS_SUSPEND; break; case FB_BLANK_HSYNC_SUSPEND: - dpms_state = DRM_MODE_DPMS_SUSPEND; + dpms_state = DRM_MODE_DPMS_STANDBY; break; case FB_BLANK_POWERDOWN: dpms_state = DRM_MODE_DPMS_OFF; From 2c06cb20454795a38876be5bd93dd6a8ddcc9d98 Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Wed, 4 Dec 2013 17:39:27 -0800 Subject: [PATCH 5/5] netfilter: xt_qtaguid: fix memory leak in seq_file handlers Change-Id: I15b21230d52479d008a00d9e2191dda020f00925 Signed-off-by: Greg Hackmann --- net/netfilter/xt_qtaguid.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/netfilter/xt_qtaguid.c b/net/netfilter/xt_qtaguid.c index e476b88f9d68..4a16829969a6 100644 --- a/net/netfilter/xt_qtaguid.c +++ b/net/netfilter/xt_qtaguid.c @@ -1496,7 +1496,7 @@ static const struct file_operations proc_iface_stat_fmt_fops = { .open = proc_iface_stat_fmt_open, .read = seq_read, .llseek = seq_lseek, - .release = seq_release, + .release = seq_release_private, }; static int __init iface_stat_init(struct proc_dir_entry *parent_procdir) @@ -2904,7 +2904,7 @@ static const struct file_operations proc_qtaguid_ctrl_fops = { .read = seq_read, .write = qtaguid_ctrl_proc_write, .llseek = seq_lseek, - .release = seq_release, + .release = seq_release_private, }; static const struct seq_operations proc_qtaguid_stats_seqops = {