]> git.baikalelectronics.ru Git - kernel.git/commit
devlink: Always use user_ptr[0] for devlink and simplify post_doit
authorParav Pandit <parav@mellanox.com>
Wed, 22 Jul 2020 15:57:11 +0000 (18:57 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 Jul 2020 01:06:08 +0000 (18:06 -0700)
commitc65d324343f86e4f1b68fe409177c05d71a36b1b
tree2448cd8b05ab02b0bb380e66a819b77e76f72c2e
parentd3ee1b6008f919eea631a8bdbe5ce16379ea5413
devlink: Always use user_ptr[0] for devlink and simplify post_doit

Currently devlink instance is searched on all doit() operations.
But it is optionally stored into user_ptr[0]. This requires
rediscovering devlink again doing post_doit().

Few devlink commands related to port shared buffers needs 3 pointers
(devlink, devlink_port, and devlink_sb) while executing doit commands.
Though devlink pointer can be derived from the devlink_port during
post_doit() operation when doit() callback has acquired devlink
instance lock, relying on such scheme to access devlik pointer makes
code very fragile.

Hence, to avoid ambiguity in post_doit() and to avoid searching
devlink instance again, simplify code by always storing devlink
instance in user_ptr[0] and derive devlink_sb pointer in their
respective callback routines.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/devlink.c