From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752505AbdK1Odd (ORCPT ); Tue, 28 Nov 2017 09:33:33 -0500 Received: from mail-sn1nam01on0073.outbound.protection.outlook.com ([104.47.32.73]:18560 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751368AbdK1Odb (ORCPT ); Tue, 28 Nov 2017 09:33:31 -0500 Subject: Re: [PATCH] drm/amd/display: Fix potential NULL pointer dereferences in amdgpu_dm_atomic_commit_tail To: "Gustavo A. R. Silva" , Alex Deucher , =?UTF-8?Q?Christian_K=c3=b6nig?= , David Airlie References: <20171127145700.GA18395@embeddedor.com> Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org From: Andrey Grodzovsky Message-ID: Date: Tue, 28 Nov 2017 09:33:22 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <20171127145700.GA18395@embeddedor.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.55.251] X-ClientProxiedBy: MWHPR14CA0054.namprd14.prod.outlook.com (10.173.97.144) To BN6PR1201MB0098.namprd12.prod.outlook.com (10.174.114.135) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 48b42e3b-e465-4781-f882-08d5366cfe24 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603258);SRVR:BN6PR1201MB0098; X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0098;3:29zXzzBM+Wg1dqfgAXwOqNfbV9VBcyEd2Ee01gLu5Lem+LSvkKvw5a0uGTyz7bzhrRSxjzPguxGqc/W2mPFb98XyQBEKIsd0Ty9eaw+vPo96dyUHtRj3+EeV11sXBR6vB0Gb080lUkvVLsQeIGi6Ag3Pcwq0ahGZLzQLcOnq6Vk+ko01eAexZ9MQTA7GolopDZuppimlhDOoK4H7VoRmQn5tnvX/jIvMnDFSMsgKTGn9QBizkbmLTrHt954IPvFN;25:Zsbhc1IiRcL5hE1G3gygV+l+MKWQNlAlxtBlo/1NwYCMNmuv2kbNwXOUTZyxrWK7wqghYTnH+DnyOTDgJHbOocaGKqG3KDaF65bwrtclInuEMCbB+izAvFATX+iGvshwvQLBanggLtonAr/pjKcorDWXFcOmZbeNlGDaO1Pd0X+5OKOwMsBrvgXH0LpuogI2CX+XDLUyGUpueYOHphoDWjASXF3BvIhELJbrEdmWiXsTfGXpMrfDPUxydviCJXlhvqIk4Yq38tQn7a5mVU5bIQ+H+t4SEyV73iefuDWo3sZow5iVCoTXZwobhDaeluqanvj/oaPGmyZEjQq6U2TCxw==;31:nhhhq0O2XbV7QPKV1G7CrI7KtQDKQZBY0x9QzEIi5rygiMKdvkbssyJxCeBoBeDhexOzdZM87ikaId+Gyl74SWg7ogImTn83hTBz+TQLoMOoCX3UtDeUjNg1P+5HUmkp13FLAEUPBxxWTF0R8xPoE4WgCdi1GN4J2R5sQuVXpyy2Ny8Zy7dYbVA+8WIGkooux+fKBc8VOi6vcFj958Ebyrl8icwYrdBhMOnmwsdKTxM= X-MS-TrafficTypeDiagnostic: BN6PR1201MB0098: X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0098;20:KmpXppJQ2DfuOGrg7bj/NPXoN0RzDpjeB/YAx+1GMMUy852wxf1luqV9T6UFfvUtBSYjhGk+j9L1DkM4wyLpOsczzpgK7trS2HL2/20emXqD3ozGoayxNrxZPPy+nCyQvCpOood8DHEbJNEpSF1LfgD+rD1+S5kkyQk09gkq5SkkeDYRY/lcj0QfGmSr+P7BxjURBMediwMkpmoaKoDSfMhptrBycVETjZzhhwlie3FqTzIVtmRTykvJs6TK0lFxTWYnYzH/oDD3Ri8J1ZOPfT53Ddm//QSIliDSQ7mabxDjkz03vg8RzkxBB+vMuPXW71ZC6E1cEwcqy+2p1Wmy6arzjE4989Xoi5XuPoMV5Hj4KJ8ha7Bdgjn4/0sY5um3RXqGlMGErGcHJU7KKGkjhYUnDBCSfSI3z7hFxXMpGQSjIwT9yyToYqkr5ImvtPK55A0kBi2N/uMpf0qOnXAOLTWNNHPiU9ICsP+HZUueev9wOhwfYroc6EINHnuwpBKy;4:Z9q/bjFbK3v+D/UgfvjKc9m5WI0JFiUoi9kEJseKrmhNsfI37gWmUG5nnkJb4XQKL5zFEcaJBL1JhK8CPcperzKTI3PABBzol/h0Oy0ugbQ4E7N4euqE9JC4JczuZQchwxFqKtaqRAqNNZFSz5Sa5nKT2xRCCSvSV8I/0EdjpShWvT89ufNGuLBaiLfKIfz2LRiO5qhcSE6z4+WCX4Bxcfd/eZ/1W39a35lfrQ28bnkEF/1qj6iMVSC3WJB3Tion+oXaspb43M8fetsTVRv9oNb7D715yMCUoMnCNNavlSrls//4nV9hDQn7hi+Ug+bf X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041248)(20161123558100)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:BN6PR1201MB0098;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:BN6PR1201MB0098; X-Forefront-PRVS: 0505147DDB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(39860400002)(366004)(376002)(346002)(24454002)(189002)(199003)(8676002)(4326008)(6486002)(7736002)(77096006)(53546010)(54356999)(76176999)(50986999)(58126008)(16576012)(305945005)(316002)(90366009)(106356001)(8936002)(52116002)(110136005)(81156014)(81166006)(47776003)(229853002)(65806001)(65956001)(52146003)(23676004)(66066001)(6246003)(2906002)(105586002)(2486003)(2950100002)(478600001)(33646002)(97736004)(189998001)(6666003)(53936002)(68736007)(83506002)(65826007)(25786009)(50466002)(16526018)(72206003)(36756003)(31686004)(6116002)(3846002)(64126003)(230700001)(86362001)(67846002)(101416001)(31696002)(5660300001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR1201MB0098;H:[172.27.225.149];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Andrey.Grodzovsky@amd.com; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyMDFNQjAwOTg7MjM6YU5xUEVYMlJPaWtjWENQcGJmUWJOR01Q?= =?utf-8?B?c09oSVg3ejF1cTEyZkFtb1o3U1V2dHFSZW9ZY2lWQXZZNWpyaDBFUzVBQ3VN?= =?utf-8?B?YkgyMlBBUWxBdUhXdGpvRGJsV0krVHFTRGpMc1RRZXpvWDhuMytyTG9RaG02?= =?utf-8?B?N3hoVS9lWjRON01EZ1pwaHJ5OXViSDkxYXV2bU9jcUxMWVQ2ckNpYXVYMFNp?= =?utf-8?B?UlowaEcwSTFPaGdtOWIzalRsYXlRR2RPTE1vaEp4WU1sL05vajYzZWNkV1Bi?= =?utf-8?B?eklKenQyNG9VMnkzWEtTVzdFQnZmdEVhTXJScVo2cXF5VVNmb0RJTjBiMy9s?= =?utf-8?B?b0s3U3BNNVNucXBtUW80OE1WOWxyaUFNc09jbm5MRFQ4Slp1V0tHaTRkMzZh?= =?utf-8?B?UHJZNk03UTBrcG9zYlY4djlpMVpvdmdEeGxhdE1MTVpKUzByeUltY250Rkds?= =?utf-8?B?YklXK1ZCTEhyR3lMQnkzWU5mampuTjZ2YTJKVzFnQTlZb2V6U1lxOGlHUmlU?= =?utf-8?B?cWlQZmtmbzBsM3VYVnVTbm11d2tDWkFNVCtjZmZCWlhYM1NzUmwvQzY2dmI2?= =?utf-8?B?SnBod0JoTmgrUUhHNmp3MFhJS1lVcmo4enJkYzlOOVltYVU2Y0RzRnRWNmZ6?= =?utf-8?B?YkJ6M2M0RjJMZ0trcVVNN3ZLWjg0V0w5L1JRRzF4MFVqb0F3QUZ1TDNNUjJ2?= =?utf-8?B?NkJkaWpQOEFDcms5TnJTT0Z3RlhONFdPbFpwTHpwTmgwRzdZVHJUTC9sZUs4?= =?utf-8?B?SGVEZjRhR0xMKzAxazJCT2QwSS82SXVoM3gzcTFVbllFc2hPUUVncjhYM25F?= =?utf-8?B?Mks3WE4zRXhZU2xRNHd6M0xGWHFPRHNKT044WTdQaVRiMzU0MTYzUGNtU3Z5?= =?utf-8?B?VnFld0w5ZlFBS2VPUnUzdGpuTGhINEdBVTk3OEZ3MWM5cEYzMC9JMHpJbVp0?= =?utf-8?B?TDBiQnkxcHE3T3dpR1p0UW9XNFNwUUI2SGUwM3YvQjFLcGR3RVNXZnREam5i?= =?utf-8?B?Sld3ZGhMaldXYVozRlJVeVJZOTRWNFN3aUN2aytEdW9ab3VqMjJSVnNHU1JR?= =?utf-8?B?Ty92WjBJS3gwSnp6dWhYcnE0N3JNUE04NXlPRkV2WkRqM21VSDNJdnNzR2M1?= =?utf-8?B?OHhNRWRCekxqNUpUSEM4SmxCdHZKQklNWFNSWTJidG1rcFlZbUlMSFd6M2Jo?= =?utf-8?B?cEIrTGNQaTNhWEJ3aHN4TnNPVzg0cnp6UXVLWlBIY1I1ZG1EM2ZCSmI4NWk3?= =?utf-8?B?V0hHM1lsYmtxdEh6S1lxVEpwV0ZwYzNqb2x4R01OaFY1dURQM0F6VU5US1Bs?= =?utf-8?B?VDNTb0tNeWcrUjVBeEt1aGF5N25QMGdqNzdNM2J3cWFOTDk2NnptS0h4Qk1D?= =?utf-8?B?SWxBNkZqd2lRbStRTWxma3pJV2tjUnVvQW0xY2ZueWp6clBJRlkvQW1UVmkw?= =?utf-8?B?VWM1N2tMd1ZhRzlhYlN2aVZIVVBIRGFIeU45Q3h2Unc3OElxeUdoWDBEU2Np?= =?utf-8?B?Yk5UcVNOaGFHazUveDhudXF3YW1CQm1JdXdOdjB4OW5pai9vbUVDbEVzK1px?= =?utf-8?B?OFV0M3RiQ1FLd2ViZkkxdXFQVmc5MGpmREZHMUgxcjh6bk9jb0VxMzU0WHVI?= =?utf-8?B?Rk5LY1N2ajYwc2RJaGNOVE9hZ2NEdmRFWGhHb2lxSVBlcDhKQUJ1RDVCNDZt?= =?utf-8?B?NUR4OHpISllmNmhSSEVMdTJwOGNvU2VFaUFPdmp5VVMyREpQUDFIQ1VGSlBZ?= =?utf-8?B?NE94Q09qaWQ1aExhbEVaMkpOcGQxekc1VTcwQ0IrOG9Nd2dxeVdwTEx5VzVx?= =?utf-8?B?bnhBbVBqaDZHaDk5ZVlXUVNrOVVqaHYzZnZqNmVRamgvTWEvSmY1Zk15WFlH?= =?utf-8?B?V3JXb3Bvb1UzSFlGUFJDMk1LZDRIMThzLzVHR2dzc3NJTnVZQ3pEaUhaUnNx?= =?utf-8?B?Q1hleHdzWmNEY0p5SC9JaVgxSHhLN0d1NzFlY0xYd0NJV25JOENpZ1FaaXpo?= =?utf-8?B?MzJ0cnRjc3R4ZWhzZDVjc0ZGVWFaSzYrekFsSkFRPT0=?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0098;6:eH7mdeMttoFbVvsjxu7HMfMs3p9Jl/GoeCjN/QAITY54/HMIu0KjlD4N+30NoJjMkU3Mf5RjYxIDLDvBoLLSk+T0nlUVJkMhG6bmNcbns03aOs1CErKa3KO6puyHVbKtW9Q37cUM6aNOL2bdQeAjIWTaxLaNKPCJCQ5s4DY40/qUBh2sY49sfAzccSVsNghKV1W/HX53Uldo+0qbag8G7jInimYZcRexsFDtSQJvj8JozhHhlXaIKrwieOK0em+SnvsIvvdrnFeH4s1RIkGxSrQroyTq9QqiVRId+XCGRZl5k1gPCXu2WaZEl6voB0EU8m/2VafMTo/kKplBDPZL26+4xp418GboC9mhV79QeNE=;5:pkoP7OvnuapT6RPxMfAlF0d0FZzav6r5B2CL9RDO2dGbG/b8eSm3MiAlXRJ8LvFmlisqCt2bt1yDU2wbKrP91JEb/ZUFiR0lFawC0xKWeRmeZrL6rxFxymbCIw/G0xHdCyQtKCL+c1C64ZLI0dQ/Ehn/4LxSETjVnCmKC9O43h0=;24:cQJUcM6C67/E61TUuPezwVm5HvHlgEuRohheBk2E0jwqCGegbpV2J//hKp92BiP9fFVgrjownHYnhe6btzT+cF4foOoEmfxYIPPFhTv67EU=;7:5RP/j6cyYcDpTml7VfbrOncpLSDcIqbUhuXlmbybvYodRcyXe0Mao/YVnjQCXkimfaYeUQBWSMeZhgBJatR9SCH3T5gT6CttuZP2g69wrTfS4PkhJezzuGWTgFEGHgIr1woFj1YRME7qaSxFHgGtCaWNyJA3Qack2f85P2EMmbKYDQTEih4vKlF0SaWSMq6jY2gjdINSxhz9/qlJERSSd/s2lS6KPQRmMi7560U9M+Ib9AFBFUIgid6SfSBXCIUV SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0098;20:iFt8UVSAej4SRb9hrKry84fKlK1HOVmp2xZIBGwczwrvmMslqNOhmmeWY0nqiUI3/Z/JSJj9ZQ1K+PnWwcL+5m+cbn92uiTXMhXNmU6yN3fCR5s/ipGMYV5Y5DoHjrxrLEQG3D3G4dIejq0asu4oSM8tgz1PttkoaLS5/+vitPSWArQxfV935IL/piAj5U3U/PNWt6613eWTVZZENpQ8xBaYhqIGI33syZyKpXEJiOF/ci5lZPMQhy1vKMoi+5aT X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Nov 2017 14:33:27.8965 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 48b42e3b-e465-4781-f882-08d5366cfe24 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1201MB0098 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Reviewed-by: Andrey Grodzovsky Thanks, Andrey On 11/27/2017 09:57 AM, Gustavo A. R. Silva wrote: > dm_new_crtc_state->stream and disconnected_acrtc are being dereferenced > before they are null checked, hence there is a potential null pointer > dereference. > > Fix this by null checking such pointers before they are dereferenced. > > Addresses-Coverity-ID: 1423745 ("Dereference before null check") > Addresses-Coverity-ID: 1423833 ("Dereference before null check") > Fixes: e7b07ceef2a6 ("drm/amd/display: Merge amdgpu_dm_types and amdgpu_dm") > Fixes: 54d765752467 ("drm/amd/display: Unify amdgpu_dm state variable namings.") > Signed-off-by: Gustavo A. R. Silva > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index 889ed24..3bdd137 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -4190,6 +4190,9 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) > > dm_new_crtc_state = to_dm_crtc_state(new_crtc_state); > > + if (!dm_new_crtc_state->stream) > + continue; > + > update_stream_scaling_settings(&dm_new_con_state->base.crtc->mode, > dm_new_con_state, (struct dc_stream_state *)dm_new_crtc_state->stream); > > @@ -4197,9 +4200,6 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) > WARN_ON(!status); > WARN_ON(!status->plane_count); > > - if (!dm_new_crtc_state->stream) > - continue; > - > /*TODO How it works with MPO ?*/ > if (!dc_commit_planes_to_stream( > dm->dc, > @@ -4332,9 +4332,11 @@ void dm_restore_drm_connector_state(struct drm_device *dev, > return; > > disconnected_acrtc = to_amdgpu_crtc(connector->encoder->crtc); > - acrtc_state = to_dm_crtc_state(disconnected_acrtc->base.state); > + if (!disconnected_acrtc) > + return; > > - if (!disconnected_acrtc || !acrtc_state->stream) > + acrtc_state = to_dm_crtc_state(disconnected_acrtc->base.state); > + if (!acrtc_state->stream) > return; > > /*