Commit ca510ead authored by Laura Abbott's avatar Laura Abbott Committed by Daniel Vetter

drm/i2c: tda998x: Remove VLA usage

There's an ongoing effort to remove VLAs[1] from the kernel to eventually
turn on -Wvla. The vla in reg_write_range is based on the length of data
passed. The one use of a non-constant size for this range is bounded by
the size buffer passed to hdmi_infoframe_pack which is a fixed size.
Switch to this upper bound.

[1] https://lkml.org/lkml/2018/3/7/621Signed-off-by: default avatarLaura Abbott <labbott@redhat.com>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20180411010330.17866-1-labbott@redhat.com
parent 520ea934
...@@ -466,13 +466,22 @@ reg_read_range(struct tda998x_priv *priv, u16 reg, char *buf, int cnt) ...@@ -466,13 +466,22 @@ reg_read_range(struct tda998x_priv *priv, u16 reg, char *buf, int cnt)
return ret; return ret;
} }
#define MAX_WRITE_RANGE_BUF 32
static void static void
reg_write_range(struct tda998x_priv *priv, u16 reg, u8 *p, int cnt) reg_write_range(struct tda998x_priv *priv, u16 reg, u8 *p, int cnt)
{ {
struct i2c_client *client = priv->hdmi; struct i2c_client *client = priv->hdmi;
u8 buf[cnt+1]; /* This is the maximum size of the buffer passed in */
u8 buf[MAX_WRITE_RANGE_BUF + 1];
int ret; int ret;
if (cnt > MAX_WRITE_RANGE_BUF) {
dev_err(&client->dev, "Fixed write buffer too small (%d)\n",
MAX_WRITE_RANGE_BUF);
return;
}
buf[0] = REG2ADDR(reg); buf[0] = REG2ADDR(reg);
memcpy(&buf[1], p, cnt); memcpy(&buf[1], p, cnt);
...@@ -679,7 +688,7 @@ static void ...@@ -679,7 +688,7 @@ static void
tda998x_write_if(struct tda998x_priv *priv, u8 bit, u16 addr, tda998x_write_if(struct tda998x_priv *priv, u8 bit, u16 addr,
union hdmi_infoframe *frame) union hdmi_infoframe *frame)
{ {
u8 buf[32]; u8 buf[MAX_WRITE_RANGE_BUF];
ssize_t len; ssize_t len;
len = hdmi_infoframe_pack(frame, buf, sizeof(buf)); len = hdmi_infoframe_pack(frame, buf, sizeof(buf));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment