From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751337AbcEJJC7 (ORCPT ); Tue, 10 May 2016 05:02:59 -0400 Received: from mail-by2on0054.outbound.protection.outlook.com ([207.46.100.54]:20800 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750986AbcEJJC4 (ORCPT ); Tue, 10 May 2016 05:02:56 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.21) smtp.mailfrom=amd.com; gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=permerror action=none header.from=amd.com; From: Wan Zongshun To: Joerg Roedel , CC: , , , Wan Zongshun Subject: [PATCH] iommu/amd: Add proper error check in two functions Date: Tue, 10 May 2016 12:40:01 -0400 Message-ID: <1462898401-2917-1-git-send-email-vincent.wan@amd.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:165.204.84.21;IPV:CAL;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(979002)(6009001)(2980300002)(428002)(199003)(189002)(4326007)(2906002)(5008740100001)(6806005)(1220700001)(50986999)(47776003)(86362001)(87936001)(48376002)(50466002)(101416001)(11100500001)(5003940100001)(77096005)(229853001)(33646002)(53416004)(36756003)(105586002)(106466001)(5001770100001)(8936002)(19580405001)(19580395003)(50226002)(5003600100002)(189998001)(586003)(92566002)(5001870100001)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN4PR12MB0850;H:SATLEXCHOV01.amd.com;FPR:;SPF:None;MLV:ovrnspm;A:1;MX:1;PTR:hybridsmtp01.amd.com,hybridsmtp.amd.com;LANG:en; X-MS-Office365-Filtering-Correlation-Id: 47710e4f-c3a9-4a6c-cf6a-08d378b1decf X-Microsoft-Exchange-Diagnostics: 1;BN4PR12MB0850;2:KnRCpxld7dsygB1a2NosOl+G/IAeEaWxAIiSabwM+mcBtGmxcvktPuPPfpIYBXvpkIi9p8q2lKQ+XDpqPanZ8C9aIwfD4URYKFCmHhqpgbvnrjzjBVycUt6vnsioTrsCGYTZQUAQX+iuIegve/FI4OMSGDhrOAHyPcHkR4gAgK+h77PC2zX3shReC7w8jITF;3:d9kvQua7ezOOWTrqlImNL/lTojmGTkGWidaRnmQ5tKfVQTamN+EBlSjEZA/AIB+TXwlUp8lEk4y9D9fYKljFPf4kWw8VEDWXI2YaY+ZoIWz4Xf7hcjqtbrcDhENM0GUqctV7Hme80yexDiGqGCyw4JrRM5LsYOHTWTintrdf/5Xo0r5ZDWjTgDbFGWS1CIWdDe+KKMqyEx2DnsAbKgsjLXDsDdFKhL2o9gvHRadSVyk= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN4PR12MB0850; X-Microsoft-Exchange-Diagnostics: 1;BN4PR12MB0850;25:8UnkEo9cxDdly2gBBRMAJfcGzvCNkV+crq3o8qb+GbrqjN2/uD5M35pqhFOYBQLO8RHNi5/Rt9wEVS0j8EdYoHJmTb0hJ9I0Q8nzVEetggRP1yLjdhLawncDOJ9DpZ6DF6bNsZMNFMEF3NdVH5vFRYxOOj1y5WKSRDa2VdXafxVFrhBvHAQb0EGEmNUWvAUwMPlMoPlr+FbPdvCXWbneZy6lZzOF2MBoQYHcV4sflkUwWcDkT+a6gQL7fbppLWmr8Gk+soYZxMdR7myi6yDhJFJ1MpFKSRKHpm33oNKjuCbi/Pp4pev5f8IvcFRyLAlFUmkJlG4WnKO8LcN30Bvn1sWOynjiQQ/9VBpljfgXL5ydNprlUeELcptuaslrgrah6RpEIQUx3HKgMubL2GLsOtXUYFGNreBcPZmYk+kxhl2Fp/ID8ACrKhqHmh3ODgkuacrSudch00zxN87/REwAVEfIbGaxKCtWOpJzwr7v+v1hdv1C7OgK/+T8iNexXw8RLMS1Lte/k+AaaPSgV2/0abksCRwSjxOn4kLZOIpZJqypghPqIgM7SrUmxbqZcHSZwJ3/0e0PI7bgWZi+Z43jhvIT0IE0SvKTzIkAZQH1M9sVfHDv9sdRTcbZbjfzG3v2iQPNvQYa/Oz03DBkq2aknm20vhGahaQDXWp7iZYwXmUXMuoI5Bxys7aqxYSt4VDjxzUX/dVnpkP/8YkcBUIaIyKkaewgV/aFKxvtO2A/bJBgDgJAtn/VGJJ1RbldH3258HVHVpkimSbQZGyR03FutQ== X-Microsoft-Exchange-Diagnostics: 1;BN4PR12MB0850;20:TOzKaQUNr5gnjCE8jbb4AErVroCqD9GYUTbfNT1+3Qzsso0WBB4T57/ZwMc5h1jGXuv1+8ZfUCEY5ykV55+R/czefkbtWX1lA9RyvTHl8wjZAbkR7JPMSXv5A+c9+QFJL/FmGLVyGWYI4tm+6nIYj94YuMyRWUVQ+gDkTvjH7u6PKqL4oFwFn8Ozdk+3j6XgvjqFUhzSdoFUt4LVZvZU2AEMNWgYhAUQdu2faI0HoJogzDKrWwtHVOTiieJRVZzao9YXGK6S165mz9Glp4T3GbkLy2r4R5vwreeUQPybx/6X4TZV5KShVyie/V8ARx82MP9jd7pR4hb5dfRdB+0AQOA6eylKbT/EW6jJsw7k23ePjLp65EvXVb+RlIg+VvcKhhAiZRCsuWmfjpklA18isLd/NtY/HhmxpSy9uB1NodYdNBaTMOwQtF2NNZicidK0DTXVQhps5PKobz23gDY0bdgGRMSzubbnKdxQC2Q63vd79njS8RP6oEHcW5GWGAHg;4:sC3miOeLTPRx67/t7dT1UXMhdO3tKcsAFSznCMgQOy9g70jmKKkBpsbUFDuJLGK7z/BU8n0yyntsdAG5uspin1vFUG8TDdTf/dk8t+cM+Ehf4FRwPVHsPVN6HItlOTna4N0Uo1FgeFKC5bq9UJNMuoAn1MvUecMxxZ4DJvAiyvtc162xHXeS2LVyKOaEoWRjFzTzfZWhP7x/eAwJvikHWXn/MQa+nH9fnEGkcOQWGmvjqQEuhmrgLNqo3RgE4Ql1hV8bY4EhbJcp8GQUS0HDS/EITr0p1G0o3TriSUI9R8mfOt32vnpa2Mvh09wyb4MwnWvpLquMX3EFDOmNALkk7LekwBNlxupHczwltRJnYAgaNmH+ide4Kz49+RJ7W6Fi8lwXz2LNYA15f7Dqo/pyvXwmBhFW2VD72uxO6PkdGYOssEcYnJZ2QbSIHYfRK2J1 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13023025)(13021025)(13013025)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:BN4PR12MB0850;BCL:0;PCL:0;RULEID:;SRVR:BN4PR12MB0850; X-Forefront-PRVS: 0938781D02 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN4PR12MB0850;23:RDIHO2Sf53GnbNy1n/wLsUr8LGfA0FKvaaTahNKam?= =?us-ascii?Q?sMk1NXdDS5ISNRdnVe8Ie2LPi7SG2hy4JX+xX4X/Ov+7gmm3++N7uhc5Lfy1?= =?us-ascii?Q?8YfGuCzoUAf4ohQngvMRIP953ERwoPNkiF6kOeotwqcK9Yer4D2VzU5pvl6h?= =?us-ascii?Q?er/Kkl/I1369zHpp6yddf+Da6WgP7za7lPxXcWiNqnwR32WEQFIdXgRk+72S?= =?us-ascii?Q?CSh5L113B7SVtsHBtuy31XP2gJa4GLtJtCWia6t/vsOrpbze5blyxvdgPEeo?= =?us-ascii?Q?4TTp1RKD3lwi/M86QSsMfe5HMLsGTPDutpSpX6E3v5K+SFV5pu6dpDZPMdkC?= =?us-ascii?Q?vSTLrvWXI1sakOJjCp2v/V2rn9wOivY/ymtVDnwElovL6OL2x0DCMZBwGGSP?= =?us-ascii?Q?NF71PLPyYZdjjR12BXVbhHBQFTAg186GX1uSCS5d1hN5dhblzvRUb9q78fYW?= =?us-ascii?Q?tA7rR3bMJZHAD3McPmwEl50NjkVlrd0c9PTb/1pYDsMbaUmiVezZkGopggS9?= =?us-ascii?Q?5jHYaLOdMpuh1eIt1z88y9m1ml6vupFAe8RppMGVvHUfm0jmZuSEQ3EZ173V?= =?us-ascii?Q?iCxYnfEcjvHUkU6oamPq0FDuu+lX1kuVosE61bQvgF3v+6S17py/LOIqbVkw?= =?us-ascii?Q?VzqL3lVUKs2bKFvcDk8SJa2jtrZ6PyL4tvd5wWPqMpSlgn+JfNBMQBciJ42N?= =?us-ascii?Q?GXEMa5dFsbA7EHztK0A/ZWGj9LvYWa24kqUMJ/vIPcZRsbSNdsjzJlPyHehE?= =?us-ascii?Q?KItccmIvI3pFO9VaDD+/Jvarr4uLDjXhjIlU1yCLvRB0pB85mGb0Ar28gn1v?= =?us-ascii?Q?naYlSGHRgh6wBAINsAuTzx3TrgPRkTe3Zgq9ptqAvv8JmWOUZrsYCu6W5tmL?= =?us-ascii?Q?tyKPVszBg4BTOq9rWSkz1XXPwf3BLfpWAxPSFMSX8WsldmwbzkSVzpOdkVx9?= =?us-ascii?Q?W8Bw6KeCctfvrBv+pGB4/F12g6fi1jaH0J/UN5XRtu43MG6zLEpM4M47lwgO?= =?us-ascii?Q?JYJU7uw1lwH3ngNHRKIXQgTXazUB1bIQ5qgU99b+kxt1YTybDLt4MErLCkIc?= =?us-ascii?Q?PepfAtGuQTVVVv3XsG5bQwABzma?= X-Microsoft-Exchange-Diagnostics: 1;BN4PR12MB0850;5:uGa5hSVK2qtOWg/7903dSRnDKDzoVuneHxDU7pwANAxbrU5IBk6P+tc4WZTqRsycjJIEMQKIAh9nACXpXusPLXmHRxW7CbhIRj7DkdyfXGLo0p+EZQqXgtoqNerXTwEhoDODfXXoXHtVqbpcOJYZLA==;24:xkuecY3gt3IRXZHI0u7QKBZjAaZIKe0w7UNuQTvGS0Wu6b7ClP8QuIXJQ/W967vqW4gwh63RQknTljIoo0OwreSXFVr0IdtpCvrqyzZhr4g=;7:h7NWgVMkAAApff/1MKOwtGc+/CwIoaL9sM2ua9FbLR0IIDyUyc5FZ5omgdeTEHIJQVSb0YYEs0MnYcnv2lNqmMWrbLcsV1xuOFJniSs+MWMRNfDDV9D8HgLh0402hC+lewmlUfddNtIRMF7RYUetYxPhj+tD12ku5O5n0lsUSwB4SblNnINzIm8O9ODvlH2W;20:bg33kzO8xvEUkuoFIhpENMUr1+u6aMXmuV36ykDU4XwX023R4XfPR6cFHX5zZJdWm5JB7PMdIz49bbqLtlKxFtu6QBTXEP6AtzbevFUd0oit4EyLESRHuDoxjXAtxAyvE+1dY+OaVSieFnp8Yoy3uJREFixik1d3MvpruMr3ftmCo80/EZHxQJ0SDnYOMohYG+oawRnfN8yNUXhgxt4Z8aajfx8htNXyA3DyMbIr+NsaqbCsLcTLdeYefMBYT9vL SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2016 09:02:52.8952 (UTC) X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.21];Helo=[SATLEXCHOV01.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN4PR12MB0850 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wan Zongshun This patch is to do the following: 1. Add error check for caller of iommu_device_create. 2. Add error check for caller of iommu_device_link and move 'iommu = amd_iommu_rlookup_table[dev_data->devid]' out of iommuv2 capability condition that make iommu_device_link also use the 'iommu' to make code more clear and no more than 80 characters. Signed-off-by: Wan Zongshun --- drivers/iommu/amd_iommu.c | 12 ++++-------- drivers/iommu/amd_iommu_init.c | 2 ++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 547cdd4..232a3b9 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -414,6 +414,7 @@ out: static int iommu_init_device(struct device *dev) { struct iommu_dev_data *dev_data; + struct amd_iommu *iommu; int devid; if (dev->archdata.iommu) @@ -427,19 +428,14 @@ static int iommu_init_device(struct device *dev) if (!dev_data) return -ENOMEM; - if (dev_is_pci(dev) && pci_iommuv2_capable(to_pci_dev(dev))) { - struct amd_iommu *iommu; + iommu = amd_iommu_rlookup_table[dev_data->devid]; - iommu = amd_iommu_rlookup_table[dev_data->devid]; + if (dev_is_pci(dev) && pci_iommuv2_capable(to_pci_dev(dev))) dev_data->iommu_v2 = iommu->is_iommu_v2; - } dev->archdata.iommu = dev_data; - iommu_device_link(amd_iommu_rlookup_table[dev_data->devid]->iommu_dev, - dev); - - return 0; + return iommu_device_link(iommu->iommu_dev, dev); } static void iommu_ignore_device(struct device *dev) diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index 9e00341..73fa986 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -1526,6 +1526,8 @@ static int iommu_init_pci(struct amd_iommu *iommu) iommu->iommu_dev = iommu_device_create(&iommu->dev->dev, iommu, amd_iommu_groups, "ivhd%d", iommu->index); + if (IS_ERR(iommu->iommu_dev)) + return PTR_ERR(iommu->iommu_dev); return pci_enable_device(iommu->dev); } -- 1.9.1