can: netlink: avoid call to do_set_data_bittiming callback with stale can_priv::ctrlmode
authorStefan Mätje <stefan.maetje@esd.eu>
Thu, 8 Aug 2024 16:42:24 +0000 (18:42 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 30 Aug 2024 20:40:23 +0000 (22:40 +0200)
commit2423cc20087ae9a7b7af575aa62304ef67cad7b6
tree55f1e37a19d5c49ff900d9668f896c2261ca44cd
parentdc2ddcd136fe9b6196a7dd01f75f824beb02d43f
can: netlink: avoid call to do_set_data_bittiming callback with stale can_priv::ctrlmode

This patch moves the evaluation of data[IFLA_CAN_CTRLMODE] in function
can_changelink in front of the evaluation of data[IFLA_CAN_BITTIMING].

This avoids a call to do_set_data_bittiming providing a stale
can_priv::ctrlmode with a CAN_CTRLMODE_FD flag not matching the
requested state when switching between a CAN Classic and CAN-FD bitrate.

In the same manner the evaluation of data[IFLA_CAN_CTRLMODE] in function
can_validate is also moved in front of the evaluation of
data[IFLA_CAN_BITTIMING].

This is a preparation for patches where the nominal and data bittiming
may have interdependencies on the driver side depending on the
CAN_CTRLMODE_FD flag state.

Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
Link: https://patch.msgid.link/20240808164224.213522-1-stefan.maetje@esd.eu
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/dev/netlink.c