From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754212AbdJLD6N (ORCPT ); Wed, 11 Oct 2017 23:58:13 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:43846 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753296AbdJLD6J (ORCPT ); Wed, 11 Oct 2017 23:58:09 -0400 X-AuditID: b6c32a36-c21ff70000018158-5c-59dee84f42f2 From: Pankaj Dubey To: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Kishon Vijay Abraham I , Bjorn Helgaas , Pankaj Dubey Subject: [PATCH] PCI: endpoint: handle probable NULL pointer access Date: Thu, 12 Oct 2017 09:27:57 +0530 Message-id: <1507780677-7983-1-git-send-email-pankaj.dubey@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprKIsWRmVeSWpSXmKPExsWy7bCmga7/i3uRBpsOcVksacqwuPC0h83i 8q45bBZn5x1ns1i09Qu7A6vHgk2lHn1bVjF6HL+xncnj8ya5AJYoLpuU1JzMstQifbsEroyb rV9ZCxr5Kn6vncrSwPiGu4uRk0NCwERi1cRmFhBbSGAHo8Sdg8xdjFxA9ndGib03JzHCFO25 +Y4FIrGbUeLZtInsEM5PRonDW06DVbEJ6Eo8eT+XGcQWEbCWaHi1ihXEZhaokpjT1g5mCws4 Szx7sZMNxGYRUJW4sKcFLM4r4C5x+ssVFohtchI3z3WCnSEhcJNV4kn3WlaIhItE3+x1bBC2 sMSr41uAruAAsqUlLh21hQhXSzw5+ZoFoncCo8TGg8eZIRL2EgeuzGGBOIhP4t3XHlaIXl6J jjYhiBIPiTln70OtcpS4s6aXDRIssRKb9hxjncAouYCRYRWjWGpBcW56arFhgZFecWJucWle ul5yfu4mRnBkaZntYFx0zucQowAHoxIP7wute5FCrIllxZW5hxglOJiVRHj9dwGFeFMSK6tS i/Lji0pzUosPMUpzsCiJ84quvxYhJJCeWJKanZpakFoEk2Xi4JRqYFy/4XuJdlKplJbefDNn j0qnGRstGtauENHKr6qWeTXNoiOgNETq5bFLFxhidi6Yo7E4cTEXk7DAlp6vbFWfv/nkf/Z7 I/Dtpsf+ti+HHY+e+s4csK5swu2HMd/km+3mTgwMLz37l22j4aES44NFDFtDN9W2aO5+sbMz U7FEs7bt/J2sja/2JSqxFGckGmoxFxUnAgBQe0Q1qAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrEJMWRmVeSWpSXmKPExsVy+t9jAV2/F/ciDc518VksacqwuPC0h83i 8q45bBZn5x1ns1i09Qu7A6vHgk2lHn1bVjF6HL+xncnj8ya5AJYoLpuU1JzMstQifbsEroyb rV9ZCxr5Kn6vncrSwPiGu4uRk0NCwERiz813LF2MXBxCAjsZJc5duswK4fxklNi8s4MJpIpN QFfiyfu5zCC2iIC1RMOrVUBFHBzMAlUS225ngoSFBZwlnr3YyQZiswioSlzY08IKYvMKuEuc /nKFBWKZnMTNc53MExi5FjAyrGKUTC0ozk3PLTYqMMxLLdcrTswtLs1L10vOz93ECPT5tsNa fTsY7y+JP8QowMGoxMP7QutepBBrYllxZe4hRgkOZiURXv9dQCHelMTKqtSi/Pii0pzU4kOM 0hwsSuK8t/OORQoJpCeWpGanphakFsFkmTg4pRoYDd44TPy985RIFE+WZOEtwfm5rYbLHh7a py7yszFmzced2x1eRXPujTgSJR5w507GzqDzKlMeLm3OW5nFvGqG2lIRTjeDK30mSzbty4hQ D3Hk2ReWJzdr6yw5h6uHeTxufXJwuaLU8nDfKkEj3sg7bW2r1SIeiLK7+p27YvuCd6O1+bu4 KR/+KrEUZyQaajEXFScCANO427L1AQAA X-CMS-MailID: 20171012035806epcas1p16df484a0565cfe780416253710464a8f X-Msg-Generator: CA X-Sender-IP: 182.195.42.142 X-Local-Sender: =?UTF-8?B?7YyQ7Lm07KaIG1NTSVItRkRTIFNXG+yCvOyEseyghOyekBsu?= =?UTF-8?B?L1NlbmlvciBDaGllZiBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?UEFOS0FKIEtVTUFSIERVQkVZG1NTSVItRkRTIFNXG1NhbXN1?= =?UTF-8?B?bmcgRWxlY3Ryb25pY3MbLi9TZW5pb3IgQ2hpZWYgRW5naW5lZXI=?= X-Sender-Code: =?UTF-8?B?QzEwG1NXQUhRG0MxMElEMDdJRDAxMDk5Nw==?= CMS-TYPE: 101P X-CMS-RootMailID: 20171012035806epcas1p16df484a0565cfe780416253710464a8f X-RootMTR: 20171012035806epcas1p16df484a0565cfe780416253710464a8f References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org controller_group allocation in pci_ep_cfs_init function can fail so we should have a check while using it in pci_ep_cfs_add_epc_group for registering group, else we will hit NULL pointer access. This patch adds required check for the same and returns -EPROBE_DEFER, so that endpoint controller driver probe can be reattempted later in case controller_group is not allocated because pci_ep_cfs_init is not yet called. Signed-off-by: Pankaj Dubey --- drivers/pci/endpoint/pci-ep-cfs.c | 7 ++++++- drivers/pci/endpoint/pci-epc-core.c | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/pci/endpoint/pci-ep-cfs.c b/drivers/pci/endpoint/pci-ep-cfs.c index 424fdd6..3cac818 100644 --- a/drivers/pci/endpoint/pci-ep-cfs.c +++ b/drivers/pci/endpoint/pci-ep-cfs.c @@ -172,7 +172,12 @@ struct config_group *pci_ep_cfs_add_epc_group(const char *name) group = &epc_group->group; config_group_init_type_name(group, name, &pci_epc_type); - ret = configfs_register_group(controllers_group, group); + + if (controllers_group) + ret = configfs_register_group(controllers_group, group); + else + ret = -EPROBE_DEFER; + if (ret) { pr_err("failed to register configfs group for %s\n", name); goto err_register_group; diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci-epc-core.c index 42c2a11..d327a2a 100644 --- a/drivers/pci/endpoint/pci-epc-core.c +++ b/drivers/pci/endpoint/pci-epc-core.c @@ -518,6 +518,10 @@ __pci_epc_create(struct device *dev, const struct pci_epc_ops *ops, goto put_dev; epc->group = pci_ep_cfs_add_epc_group(dev_name(dev)); + if (IS_ERR(epc->group)) { + ret = -EPROBE_DEFER; + goto put_dev; + } return epc; -- 2.7.4