All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: m.felsch@pengutronix.de
Cc: linux-media@vger.kernel.org
Subject: [bug report] media: tvp5150: add FORMAT_TRY support for get/set selection handlers
Date: Wed, 12 Oct 2022 15:00:01 +0300	[thread overview]
Message-ID: <Y0asQSuTaFU45YFy@kili> (raw)

Hello Marco Felsch,

The patch 46fe6e7dcede: "media: tvp5150: add FORMAT_TRY support for
get/set selection handlers" from Mar 12, 2020, leads to the following
Smatch static checker warning:

	drivers/media/i2c/tvp5150.c:1153 tvp5150_set_selection()
	error: potential NULL/IS_ERR bug 'crop'

drivers/media/i2c/tvp5150.c
    1106 static int tvp5150_set_selection(struct v4l2_subdev *sd,
    1107                                  struct v4l2_subdev_state *sd_state,
    1108                                  struct v4l2_subdev_selection *sel)
    1109 {
    1110         struct tvp5150 *decoder = to_tvp5150(sd);
    1111         struct v4l2_rect *rect = &sel->r;
    1112         struct v4l2_rect *crop;
    1113         unsigned int hmax;
    1114 
    1115         if (sel->target != V4L2_SEL_TGT_CROP)
    1116                 return -EINVAL;
    1117 
    1118         dev_dbg_lvl(sd->dev, 1, debug, "%s left=%d, top=%d, width=%d, height=%d\n",
    1119                 __func__, rect->left, rect->top, rect->width, rect->height);
    1120 
    1121         /* tvp5150 has some special limits */
    1122         rect->left = clamp(rect->left, 0, TVP5150_MAX_CROP_LEFT);
    1123         rect->top = clamp(rect->top, 0, TVP5150_MAX_CROP_TOP);
    1124         hmax = tvp5150_get_hmax(sd);
    1125 
    1126         /*
    1127          * alignments:
    1128          *  - width = 2 due to UYVY colorspace
    1129          *  - height, image = no special alignment
    1130          */
    1131         v4l_bound_align_image(&rect->width,
    1132                               TVP5150_H_MAX - TVP5150_MAX_CROP_LEFT - rect->left,
    1133                               TVP5150_H_MAX - rect->left, 1, &rect->height,
    1134                               hmax - TVP5150_MAX_CROP_TOP - rect->top,
    1135                               hmax - rect->top, 0, 0);
    1136 
    1137         if (!IS_ENABLED(CONFIG_VIDEO_V4L2_SUBDEV_API) &&
    1138             sel->which == V4L2_SUBDEV_FORMAT_TRY)
    1139                 return 0;
    1140 
    1141         crop = tvp5150_get_pad_crop(decoder, sd_state, sel->pad, sel->which);

If "sd_state" is NULL then v4l2_subdev_get_try_crop() can return NULL.
It's probably best to convert tvp5150_get_pad_crop() to only return
error pointers or only return NULL on error.

    1142         if (IS_ERR(crop))
    1143                 return PTR_ERR(crop);
    1144 
    1145         /*
    1146          * Update output image size if the selection (crop) rectangle size or
    1147          * position has been modified.
    1148          */
    1149         if (sel->which == V4L2_SUBDEV_FORMAT_ACTIVE &&
    1150             !v4l2_rect_equal(rect, crop))
    1151                 tvp5150_set_hw_selection(sd, rect);
    1152 
--> 1153         *crop = *rect;
    1154 
    1155         return 0;
    1156 }

regards,
dan carpenter

                 reply	other threads:[~2022-10-12 12:01 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=Y0asQSuTaFU45YFy@kili \
    --to=dan.carpenter@oracle.com \
    --cc=linux-media@vger.kernel.org \
    --cc=m.felsch@pengutronix.de \
    /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.