From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: YueHaibing <yuehaibing@huawei.com>, Oliver Hartkopp <socketcan@hartkopp.net>, Marc Kleine-Budde <mkl@pengutronix.de>, Sasha Levin <sashal@kernel.org>, linux-can@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH AUTOSEL 4.14 16/35] can: af_can: Fix error path of can_init() Date: Wed, 26 Jun 2019 20:39:04 -0400 Message-ID: <20190627003925.21330-16-sashal@kernel.org> (raw) In-Reply-To: <20190627003925.21330-1-sashal@kernel.org> From: YueHaibing <yuehaibing@huawei.com> [ Upstream commit c5a3aed1cd3152429348ee1fe5cdcca65fe901ce ] This patch add error path for can_init() to avoid possible crash if some error occurs. Fixes: 0d66548a10cb ("[CAN]: Add PF_CAN core module") Signed-off-by: YueHaibing <yuehaibing@huawei.com> Acked-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sasha Levin <sashal@kernel.org> --- net/can/af_can.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/net/can/af_can.c b/net/can/af_can.c index e3626e8500c2..97fc0e5ec5f3 100644 --- a/net/can/af_can.c +++ b/net/can/af_can.c @@ -958,6 +958,8 @@ static struct pernet_operations can_pernet_ops __read_mostly = { static __init int can_init(void) { + int err; + /* check for correct padding to be able to use the structs similarly */ BUILD_BUG_ON(offsetof(struct can_frame, can_dlc) != offsetof(struct canfd_frame, len) || @@ -971,15 +973,31 @@ static __init int can_init(void) if (!rcv_cache) return -ENOMEM; - register_pernet_subsys(&can_pernet_ops); + err = register_pernet_subsys(&can_pernet_ops); + if (err) + goto out_pernet; /* protocol register */ - sock_register(&can_family_ops); - register_netdevice_notifier(&can_netdev_notifier); + err = sock_register(&can_family_ops); + if (err) + goto out_sock; + err = register_netdevice_notifier(&can_netdev_notifier); + if (err) + goto out_notifier; + dev_add_pack(&can_packet); dev_add_pack(&canfd_packet); return 0; + +out_notifier: + sock_unregister(PF_CAN); +out_sock: + unregister_pernet_subsys(&can_pernet_ops); +out_pernet: + kmem_cache_destroy(rcv_cache); + + return err; } static __exit void can_exit(void) -- 2.20.1
next prev parent reply index Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <20190627003925.21330-1-sashal@kernel.org> 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 02/35] samples, bpf: fix to change the buffer size for read() Sasha Levin 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 03/35] bpf: sockmap, fix use after free from sleep in psock backlog workqueue Sasha Levin 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 05/35] mac80211: mesh: fix RCU warning Sasha Levin 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 06/35] mac80211: free peer keys before vif down in mesh Sasha Levin 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 07/35] mwifiex: Fix possible buffer overflows at parsing bss descriptor Sasha Levin 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 08/35] mwifiex: Abort at too short BSS descriptor element Sasha Levin 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 09/35] iwlwifi: Fix double-free problems in iwl_req_fw_callback() Sasha Levin 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 10/35] bpf: udp: Avoid calling reuseport's bpf_prog from udp_gro Sasha Levin 2019-06-27 0:38 ` [PATCH AUTOSEL 4.14 11/35] netfilter: ipv6: nf_defrag: fix leakage of unqueued fragments Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 12/35] netfilter: ipv6: nf_defrag: accept duplicate fragments again Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 13/35] dt-bindings: can: mcp251x: add mcp25625 support Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 14/35] can: mcp251x: add support for mcp25625 Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 15/35] can: m_can: implement errata "Needless activation of MRAF irq" Sasha Levin 2019-06-27 0:39 ` Sasha Levin [this message] 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 17/35] ibmvnic: Refresh device multicast list after reset Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 21/35] mlxsw: spectrum: Disallow prio-tagged packets when PVID is removed Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 24/35] mac80211: only warn once on chanctx_conf being NULL Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 25/35] qmi_wwan: add support for QMAP padding in the RX path Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 26/35] qmi_wwan: avoid RCU stalls on device disconnect when in QMAP mode Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 27/35] qmi_wwan: extend permitted QMAP mux_id value range Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 29/35] bnx2x: Check if transceiver implements DDM before access Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 31/35] ip6_tunnel: allow not to count pkts on tstats by passing dev as NULL Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 32/35] net: lio_core: fix potential sign-extension overflow on large shift Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 34/35] net: dsa: mv88e6xxx: fix shift of FID bits in mv88e6185_g1_vtu_loadpurge() Sasha Levin 2019-06-27 0:39 ` [PATCH AUTOSEL 4.14 35/35] net :sunrpc :clnt :Fix xps refcount imbalance on the error path Sasha Levin
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=20190627003925.21330-16-sashal@kernel.org \ --to=sashal@kernel.org \ --cc=linux-can@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mkl@pengutronix.de \ --cc=netdev@vger.kernel.org \ --cc=socketcan@hartkopp.net \ --cc=stable@vger.kernel.org \ --cc=yuehaibing@huawei.com \ /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
Netdev Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/netdev/0 netdev/git/0.git git clone --mirror https://lore.kernel.org/netdev/1 netdev/git/1.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 netdev netdev/ https://lore.kernel.org/netdev \ netdev@vger.kernel.org public-inbox-index netdev Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.netdev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git