From: Joonyoung Shim <jy0922.shim@samsung.com>
To: Andrzej Hajda <a.hajda@samsung.com>, Inki Dae <inki.dae@samsung.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
Seung-Woo Kim <sw0312.kim@samsung.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
dri-devel@lists.freedesktop.org,
open list <linux-kernel@vger.kernel.org>,
"moderated list:ARM/S5P EXYNOS AR..."
<linux-samsung-soc@vger.kernel.org>,
Joonyoung Shim <jy0922.shim@samsung.com>
Subject: Re: [PATCH v2 17/17] drm/exynos/ipp: add file checks for ioctls
Date: Fri, 29 Aug 2014 16:11:49 +0900 [thread overview]
Message-ID: <540027B5.5070704@samsung.com> (raw)
In-Reply-To: <1409216861-12452-18-git-send-email-a.hajda@samsung.com>
Hi Andrzej,
On 08/28/2014 06:07 PM, Andrzej Hajda wrote:
> Process should not have access to ipp nodes created by another
> process. The patch adds necessary checks.
>
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_ipp.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> index fc8bb67..d233cfc 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
> @@ -318,7 +318,8 @@ static void ipp_print_property(struct drm_exynos_ipp_property *property,
> sz->hsize, sz->vsize, config->flip, config->degree);
> }
>
> -static int ipp_find_and_set_property(struct drm_exynos_ipp_property *property)
> +static int ipp_find_and_set_property(struct drm_exynos_ipp_property *property,
> + struct drm_file *file)
This is ok, but i think ipp_find_and_set_property function is some
duplicated. If we add function to get c_node from struct
exynos_drm_ippdrv, it's easy to remove ipp_find_and_set_property.
Thanks.
> {
> struct exynos_drm_ippdrv *ippdrv;
> struct drm_exynos_ipp_cmd_node *c_node;
> @@ -339,8 +340,12 @@ static int ipp_find_and_set_property(struct drm_exynos_ipp_property *property)
> */
> mutex_lock(&ippdrv->cmd_lock);
> list_for_each_entry(c_node, &ippdrv->cmd_list, list) {
> - if ((c_node->property.prop_id == prop_id) &&
> - (c_node->state == IPP_STATE_STOP)) {
> + if (c_node->property.prop_id == prop_id) {
> + if (c_node->filp != file)
> + break;
> + if (c_node->state != IPP_STATE_STOP)
> + break;
> +
> mutex_unlock(&ippdrv->cmd_lock);
> DRM_DEBUG_KMS("found cmd[%d]ippdrv[0x%x]\n",
> property->cmd, (int)ippdrv);
> @@ -418,7 +423,7 @@ int exynos_drm_ipp_set_property(struct drm_device *drm_dev, void *data,
> */
> if (property->prop_id) {
> DRM_DEBUG_KMS("prop_id[%d]\n", property->prop_id);
> - return ipp_find_and_set_property(property);
> + return ipp_find_and_set_property(property, file);
> }
>
> /* find ipp driver using ipp id */
> @@ -1032,7 +1037,7 @@ int exynos_drm_ipp_cmd_ctrl(struct drm_device *drm_dev, void *data,
>
> c_node = ipp_find_obj(&ctx->prop_idr, &ctx->prop_lock,
> cmd_ctrl->prop_id);
> - if (!c_node) {
> + if (!c_node || c_node->filp != file) {
> DRM_ERROR("invalid command node list.\n");
> return -ENODEV;
> }
>
next prev parent reply other threads:[~2014-08-29 7:11 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-28 9:07 [PATCH v2 00/17] drm/exynos/ipp: image post processing fixes and improvements, part four Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 01/17] drm/exynos/ipp: remove fake pm callbacks Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 02/17] drm/exynos/ipp: cancel works before command node clean Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 03/17] drm/exynos/ipp: move file reference from memory to command node Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 04/17] drm/exynos/ipp: remove only related commands on file close Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 05/17] drm/exynos/ipp: remove unused field in command node Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 06/17] drm/exynos/ipp: free partially allocated resources on error Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 07/17] drm/exynos/ipp: move nodes cleaning to separate function Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 08/17] drm/exynos/ipp: clean memory nodes on command node cleaning Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 09/17] drm/exynos/ipp: replace work_struct casting with better constructs Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 10/17] drm/exynos/ipp: stop hardware before freeing memory Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 11/17] drm/exynos/ipp: remove events during command cleaning Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 12/17] drm/exynos/fimc: avoid clearing overflow bits Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 13/17] drm/exynos/fimc: do not enable fimc twice Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 14/17] drm/exynos/fimc: simplify buffer queuing Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 15/17] drm/exynos/fimc: fix source buffer registers Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-28 9:07 ` [PATCH v2 16/17] drm/exynos/ipp: remove file argument from node related functions Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-29 7:03 ` Joonyoung Shim
2014-09-02 12:55 ` [PATCH v3 " Andrzej Hajda
2014-09-02 12:55 ` Andrzej Hajda
2014-09-03 1:42 ` Joonyoung Shim
2014-08-28 9:07 ` [PATCH v2 17/17] drm/exynos/ipp: add file checks for ioctls Andrzej Hajda
2014-08-28 9:07 ` Andrzej Hajda
2014-08-29 7:11 ` Joonyoung Shim [this message]
2014-09-02 12:56 ` [PATCH v3 " Andrzej Hajda
2014-09-02 12:56 ` Andrzej Hajda
2014-09-11 12:50 ` [PATCH v2 00/17] drm/exynos/ipp: image post processing fixes and improvements, part four Inki Dae
2014-09-11 12:50 ` Inki Dae
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=540027B5.5070704@samsung.com \
--to=jy0922.shim@samsung.com \
--cc=a.hajda@samsung.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=inki.dae@samsung.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=sw0312.kim@samsung.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.