mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 15:29:16 +00:00
i2c: mux: demux-pinctrl: Annotate struct i2c_demux_pinctrl_priv with __counted_by
Prepare for the coming implementation by GCC and Clang of the __counted_by attribute. Flexible array members annotated with __counted_by can have their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS (for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family functions). As found with Coccinelle[1], add __counted_by for struct i2c_demux_pinctrl_priv. Additionally, since the element count member must be set before accessing the annotated flexible array member, move its initialization earlier. [1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org> [wsa: improved blank lines] Signed-off-by: Wolfram Sang <wsa@kernel.org>
This commit is contained in:
parent
65917718fb
commit
86f8a1ef96
@ -32,7 +32,7 @@ struct i2c_demux_pinctrl_priv {
|
||||
const char *bus_name;
|
||||
struct i2c_adapter cur_adap;
|
||||
struct i2c_algorithm algo;
|
||||
struct i2c_demux_pinctrl_chan chan[];
|
||||
struct i2c_demux_pinctrl_chan chan[] __counted_by(num_chan);
|
||||
};
|
||||
|
||||
static int i2c_demux_master_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
|
||||
@ -226,6 +226,8 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev)
|
||||
if (!priv || !props)
|
||||
return -ENOMEM;
|
||||
|
||||
priv->num_chan = num_chan;
|
||||
|
||||
err = of_property_read_string(np, "i2c-bus-name", &priv->bus_name);
|
||||
if (err)
|
||||
return err;
|
||||
@ -249,9 +251,7 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev)
|
||||
of_changeset_update_property(&priv->chan[i].chgset, adap_np, &props[i]);
|
||||
}
|
||||
|
||||
priv->num_chan = num_chan;
|
||||
priv->dev = &pdev->dev;
|
||||
|
||||
platform_set_drvdata(pdev, priv);
|
||||
|
||||
pm_runtime_no_callbacks(&pdev->dev);
|
||||
|
Loading…
x
Reference in New Issue
Block a user