From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1765721AbcLVJwa (ORCPT ); Thu, 22 Dec 2016 04:52:30 -0500 Received: from mailout3.samsung.com ([203.254.224.33]:42319 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750792AbcLVJw2 (ORCPT ); Thu, 22 Dec 2016 04:52:28 -0500 X-AuditID: b6c32a35-f799b6d0000016fb-37-585ba00161c2 From: Jaehoon Chung To: linux-kernel@vger.kernel.org Cc: kishon@ti.com, Jaehoon Chung Subject: [PATCH] phy: core: check whether ops callback function is assigned Date: Thu, 22 Dec 2016 18:42:22 +0900 Message-id: <20161222094222.6871-1-jh80.chung@samsung.com> X-Mailer: git-send-email 2.10.2 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGKsWRmVeSWpSXmKPExsWy7bCmri7jgugIg952AYsbv9pYLS487WGz uLxrDpsDs0ffllWMHsdvbGfy+LxJLoA5KtUmIzUxJbVIITUvOT8lMy/dVsk7ON453tTMwFDX 0NLCXEkhLzE31VbJxSdA1y0zB2iRkkJZYk4pUCggsbhYSd/Opii/tCRVISO/uMRWKdrQ0EjP 0MBcz8jISM/EONbKyBSoJCE148fjDywFOzkrfvS3szcwbmbvYuTkkBAwkfh3+iUzhC0mceHe erYuRi4OIYEdjBLzFrcxQzjtTBJTd15lg+nYv2M+K0RiOaPEpnP/WSCcH4wSk+/vYAWpYhPQ kdj+7TgTiC0ioCCxufcZUJyDg1nAUuJ2UwVIWFjAW2Jaxz2wEhYBVYn3XUdYQGxeASuJv9Nu Qy2Tl1h4/ggTyHwJgTVsEm1X1zGCzJEQkJXYdADqbBeJN0fXskLYwhKvjm+Bek1aYtW/W1C9 3YwS/75sZINwehglbm1dzQRRZSxx/8E9sEnMAnwS7772sEIs4JXoaBOCKPGQON47hQXCdpS4 tnYvWKuQQKzEi6MTWCYwSi9gZFjFKJZaUJybnlpsWGCoV5yYW1yal66XnJ+7iRGcJrRMdzBO OedziFGAg1GJh9dhSlSEEGtiWXFl7iFGCQ5mJRFexXnREUK8KYmVValF+fFFpTmpxYcYTYFh M5FZSjQ5H5jC8kriDU3MDE2MTAwNzY0MjJTEeRc3WkcICaQnlqRmp6YWpBbB9DFxcEo1MLYU eb6d/2L629yHlfOqQ22TE55orEjwmsjDu+d+q2/PJqd5vS5+x35peHC9+xDaqqn+tp/x+s7Y xq5bmpUva43tblRtzZxcJWWc8IE7SPijUIjQpekt3kdKvcVtPMWnzrqg9Eb57Da5S5O3XWXJ bXi8X1V03zethTPZjbtOLAkIflRje/YvtxJLcUaioRZzUXEiACCsUakpAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGLMWRmVeSWpSXmKPExsVy+t9jAV2GBdERBvv79Cxu/GpjtbjwtIfN 4vKuOWwOzB59W1Yxehy/sZ3J4/MmuQDmKDebjNTElNQihdS85PyUzLx0W6XQEDddCyWFvMTc VFulCF3fkCAlhbLEnFIgz8gADTg4B7gHK+nbJbhl/Hj8gaVgJ2fFj/529gbGzexdjJwcEgIm Evt3zGeFsMUkLtxbz9bFyMUhJLCUUWLK4t3sEM4PRomns68wgVSxCehIbP92HMwWEVCQ2Nz7 DKibg4NZwFLidlMFSFhYwFtiWsc9sBIWAVWJ911HWEBsXgErib/TbrNBLJOXWHj+CNMERu4F jAyrGCVSC5ILipPScw3zUsv1ihNzi0vz0vWS83M3MYLD7JnUDsaDu9wPMQpwMCrx8P54FRUh xJpYVlyZe4hRgoNZSYRXcV50hBBvSmJlVWpRfnxRaU5q8SFGU6ADJjJLiSbnA2MgryTe0MTc xNzYwMLc0tLESEmct3H2s3AhgfTEktTs1NSC1CKYPiYOTqkGxr5+w0v/SniDGPKfvIoJaNfZ /qD/2gvZ/W/3aZ068WFquoaV7p5lsx0PJx2X9TVZYmu6nvOMxub56atE766x+Wc+J4/bl4G3 Mlcx5N71NRLKr+reH/u1cvKWQhf31JRJHw0Ztik3cJb+kiguNX669tLH1kvX/q5qT0vebxfX mLxO8/8PuQoxZyWW4oxEQy3mouJEAFflJhVJAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161222094224epcas1p49349afba1cf8468d350b66ca29e8590e X-Msg-Generator: CA X-Sender-IP: 203.254.230.26 X-Local-Sender: =?UTF-8?B?7KCV7J6s7ZuIG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbUzUo7LGF7J6EKS/ssYXsnoQ=?= X-Global-Sender: =?UTF-8?B?SmFlaG9vbiBDaHVuZxtUaXplbiBQbGF0Zm9ybSBMYWIuG1Nh?= =?UTF-8?B?bXN1bmcgRWxlY3Ryb25pY3MbUzUvU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG1NUQUYbQzEwVjgxMTE=?= CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-HopCount: 7 X-CMS-RootMailID: 20161222094224epcas1p49349afba1cf8468d350b66ca29e8590e X-RootMTR: 20161222094224epcas1p49349afba1cf8468d350b66ca29e8590e References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If some ops-> callback function are not assigend, then it should do the unexpect behavior. To prevent the potential NULL pointer dereference, check the each callback functions before doing operation. Signed-off-by: Jaehoon Chung --- drivers/phy/phy-core.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c index a268f4d6f3e9..e4eb4431c8a4 100644 --- a/drivers/phy/phy-core.c +++ b/drivers/phy/phy-core.c @@ -219,7 +219,7 @@ int phy_init(struct phy *phy) { int ret; - if (!phy) + if (!phy || !phy->ops->init) return 0; ret = phy_pm_runtime_get_sync(phy); @@ -248,7 +248,7 @@ int phy_exit(struct phy *phy) { int ret; - if (!phy) + if (!phy || !phy->ops->exit) return 0; ret = phy_pm_runtime_get_sync(phy); @@ -277,7 +277,7 @@ int phy_power_on(struct phy *phy) { int ret = 0; - if (!phy) + if (!phy || !phy->ops->power_on) goto out; if (phy->pwr) { @@ -319,7 +319,7 @@ int phy_power_off(struct phy *phy) { int ret; - if (!phy) + if (!phy || !phy->ops->power_off) return 0; mutex_lock(&phy->mutex); -- 2.11.0