From patchwork Thu Aug 26 13:26:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: YE Chengfeng X-Patchwork-Id: 29786 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp488613iov; Thu, 26 Aug 2021 06:27:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwE0pvUKDnIhhExsCNUHNqTfIhR/+IYkghqpYefGuok8/+Hem3iH8rPUuzGxFI9BzzQRzIn X-Received: by 2002:a05:6402:1d33:: with SMTP id dh19mr4418643edb.10.1629984470861; Thu, 26 Aug 2021 06:27:50 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u10si2695006ejc.522.2021.08.26.06.27.27; Thu, 26 Aug 2021 06:27:50 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@connect.ust.hk header.s=selector2 header.b=RZkaSvyQ; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 62F2F68A0F0; Thu, 26 Aug 2021 16:27:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from JPN01-TY1-obe.outbound.protection.outlook.com (unknown [40.107.140.98]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9B2F76807AA for ; Thu, 26 Aug 2021 16:27:15 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j7Q1h1d5fAZFH4kHRFmpANXSMnsKiaaDfyPVKjNBNhkY8YlTk/lH1cuqwwbooW7KWUyn8MG95FZx99yKRGfzfHF4B8kkyxrpqTAAJACKKjHLTwaibM493f2oClSNu4ZITS/FLAdBA+xULr4GU1DK6JbfXiULu4gyXg2oV3rTKmXlUdWYsJUkcVB+zg7icAcc6z8Tt2WM5qUCtnvi+dv9Q+Oib9Y/biX6gwh/EgER52/NjYRNh9HptL7M0SNNTVk+93xIi+L+0FCY18J841PuvQWbklWwhZbmWwqERPUz/YOrprUleY1nPrEHuRxcHNqETAnbdbP8zyfD+moDZAEvaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BnIVXCkR7W0+WSV7ckLBRlV9Gz24SYrDKPL3pg1sxFE=; b=UjBCbQi1rWa7ddD78rZthmo4osCnR4j0V/vIowSGbRxrBE9USA4zec5v0EoKSP5IgfF8GrvusbTdAa9rYyOG2RWa+hoxPDqxArqRumPE/LLur4YoxaLujMs31ignDnY4OLtPSiaATxFUEg+6qBDCbeExBHMVopdhVEYMSjGoo5Aqlxky49iZynEZ81Sujwqbt4Dp9JC2t2W2QCaQVo+EHY6cdeGOg4qWpi6JXTT8iBlFc8q4P8lLz+jBogA1i684yx4pkivpRHuM9RbNCBMoZxqOU1ncCgUZLTEcHvzLEX1mN0BTbQUXslmbsQbP81bLtRvmSlCsrtgBLCaNWCtx5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=connect.ust.hk; dmarc=pass action=none header.from=connect.ust.hk; dkim=pass header.d=connect.ust.hk; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=connect.ust.hk; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BnIVXCkR7W0+WSV7ckLBRlV9Gz24SYrDKPL3pg1sxFE=; b=RZkaSvyQyGu+RnA/BDSh9Xh8GwGdFqxnsdyiXAD1jOQ2CQ0tpw82YBLHM4rr8jHijm1Aerra6WVcVqr1vhRsS6NWBmM3M2uLSE7G9mXyfi3L+bD7gOtyZZbdtQUu0VFdQcXNiLiRH8xxpiYrEBzXcltqm1V02m7fJiK7MKhwRww= Authentication-Results: ffmpeg.org; dkim=none (message not signed) header.d=none;ffmpeg.org; dmarc=none action=none header.from=connect.ust.hk; Received: from TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:b7::8) by TYCP286MB0846.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:7a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.17; Thu, 26 Aug 2021 13:27:11 +0000 Received: from TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM ([fe80::b9cf:11ff:5f5a:32c1]) by TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM ([fe80::b9cf:11ff:5f5a:32c1%6]) with mapi id 15.20.4436.027; Thu, 26 Aug 2021 13:27:11 +0000 From: Chengfeng Ye To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Aug 2021 06:26:57 -0700 Message-Id: <20210826132657.91732-1-cyeaa@connect.ust.hk> X-Mailer: git-send-email 2.17.1 X-ClientProxiedBy: HKAPR04CA0005.apcprd04.prod.outlook.com (2603:1096:203:d0::15) To TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:b7::8) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from ubuntu.localdomain (218.253.253.162) by HKAPR04CA0005.apcprd04.prod.outlook.com (2603:1096:203:d0::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.19 via Frontend Transport; Thu, 26 Aug 2021 13:27:11 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9bb3f7f8-b28b-4152-9a8f-08d9689535ed X-MS-TrafficTypeDiagnostic: TYCP286MB0846: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:256; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u2DPfJ3HyjI/8fOCH/P6W42M3/wYJoQ2b+0vpc4ZttX0zpbWdTJiL1a0LdmsKqGzo6+k9w7bLm3jmQYuxQbKLTU2QFsXrLyGwp55SVV9ZidDkwZRJpY8KTNNJ2CIDoYBOmpdxY9Kin2HiLSolxIamJloISL45C8pWiid418OF/7UuPtxzTeYc6cN+6UVetrSr2FFfumfJo+htkwo3F8hreqHRMMJ+yBc69o7h0oSdss/ew4OGk2jigfURVCLhWLdeLlWytCwGVPgB7wUEbulq28DrF747krMn6Fh6Amku3dSbhhg1sECJIj+Xh5cRkAxXA3mnB/J/uvelT+/8b3XCEF6Sla51dTIudE7l2xTVivzBi+jFYNJcIQZe5+EaTJWjn9ZftmobHAZ3UE+1qN1W5O/yXhzpKuvf7SdBAM6GjhC3+mGyhT/kUMOhUZ9QZ+YHNd5pOOLqbrD82WJkfWDltwrJjWThV55HvpW8yVAxIICXDiirfBCWgTiq7cFC+uIoEeiYp2W5gcBnQAVxVgXyh2jLdd4kpQqel2n0hbYeXzXXJ+/mWHznWhA/uXp2i53KVnfVCPFIPQ+KNXUd00AW9nu60MFMLm3pBTK1wq9HDZm3Iq//QCWV5uve2i/Mt1+0bCtZsDeKIyynaY/Pidxf9gDgC0SLfHkZWDswmFt0/Rygz1XVLHWTcSvEdC/8hzRDlWhSLNAshdc2Ig25LH70DNfdscBgsxbXSxnmr8LJOq9oIB4n8+Hur2MJ8GAlfFYfQ6fR/euueXKErW1vuvT/w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(396003)(346002)(136003)(39850400004)(376002)(366004)(186003)(786003)(316002)(107886003)(6486002)(1076003)(2906002)(83380400001)(6666004)(4326008)(5660300002)(86362001)(66556008)(6512007)(66476007)(66946007)(8936002)(38100700002)(38350700002)(478600001)(2616005)(956004)(8676002)(6506007)(6916009)(26005)(36756003)(52116002)(966005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 01oFLtBB1MS8Ri1tQgDQobvndXTppQs94DbIwAzQYF6Ri7io3Y0vlJdPQ/OJZg+aCEp5rcm50/m/elgYrx26+ZLKtWRj6IOILN0my+UvAlVYCyG35dMM/hRWpxvKrfSiOGdo1VLK82EQA2oEHpO8xTklofM1Vm++7cHQSIAQihwejYxJc7bNLMslG3mhNEQPu/ySLL282bD+p5RIiDV4eqjrUVg0yqFIrzjfWQz0SUOaE4BtfMfXSRemhsoTgPGvQpoF/r1gS2dycybNHsWSh2I5l6fLTD8B48KWoI+XDY6num7Fk2oGm31Yn/dRlnuuXy/VFhamnTIGCPFXx5I5j9iFVm5aFdKp1d7fzdWz/cNNYt6OTXbI9JRRJSr8ONo4BQ/SFgxyjD8YUqGTkMzsktWVgQy96yb4HwdBsEV7+tBDgNQj2IWKGl1yRrkSW0TgecxObkzc8XTZXws5QW5AqTDacGr1ob/e/V2xTzHpYzMxJh9WaDjGPhb0kRCk2oK9xlnDgBqq9q6fwygTA9HqjE9hLG7kOdUwNLK+bYgJmCNyiBQwrHlEdk7De7Hvlx27Qs/70VCJC1OEEEYDCF8y2xSbfeU97KPieQymRDi5vEqAYwiWCHDGbPRNQSAFUGqZ7Ah76z+7FeauA1C0dFZirKRBHUgSRE5IM+c0/SAhZWgDmkHZ+kqKB3rlQl+4TargMN/FojtASitMdoqWd8V+VWvPrAg7kzcml9RW7jg4subzzNbo7QCYRtYglsvyGS5RPxS8XgTuwSdcIwuq286c6gGfuzjYl2YBISGRbY+jk8SZjhqcYHCQ3OmN6xqC5p32SucFMulkaIuhMPrcjX2w3lfpN1+R5hl68olpf+N9Lz2ETJ5SFC6rr8+LPymqAJe9FddTTJrX9h6PWmyCmuT0Izf/47/SG6LSdluZYXZoKDjQFe+JXu/r2mlagDE0S9jrDD+jhGmGOTRj2RleGSho50pBJhxEvh2BznpJVNGf0sRP6HNeMA9BT6hd12toHM2fJ+DcOKWX5NyRRj4mW4R3wqG7yM1mM3j5VO0OlDAKndzf1YuF8aAUoAvxi0TVcAsOCql55Ts3e/lu8dDPz4m+Vr4CIdJv8qQzn+URkjV2ozS5qziE3HlYsMtAt8ZGOv2OTIQY51xfXXI/5BQ5advt6jLJk3/u3XgIlkqMO4opZh7wktzdsFJzvrBwV69B7HdjVfoM+dDeHEaLlFb2g7LVPue1FSZGCOw3QwC07/fKjH1XZVvvkSu0z7DchPMpv6O6NVN417enbyEnNJ3RiRENODvo+B8z2hiIa216s9OmrSwfaCyJWfNNshwtPRWau6XP X-OriginatorOrg: connect.ust.hk X-MS-Exchange-CrossTenant-Network-Message-Id: 9bb3f7f8-b28b-4152-9a8f-08d9689535ed X-MS-Exchange-CrossTenant-AuthSource: TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2021 13:27:11.5558 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 6c1d4152-39d0-44ca-88d9-b8d6ddca0708 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0J8sFb5+TUVNdHcfIhOBL8dB255OL6e5FvEf7pbNStiX4vhfJhXRYgTK4lJbWXxgd+XyqOH7oQxJcKQ4qFQLNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCP286MB0846 Subject: [FFmpeg-devel] [PATCH 1/2] libavdevice: Fix a potential deadlock issue on the lock ctx->frame_lock in function get_audio_config X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Chengfeng Ye Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +MZjpt7yJwAr The problem here is that the lock ctx->frame_lock will become an unreleased lock if the program returns at line 697, line 735 and line744 Cc: cyeaa@connect.ust.hk Bug tracker link: https://trac.ffmpeg.org/ticket/9385\#ticket Signed-off-by: Chengfeng Ye --- libavdevice/avfoundation.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m index 1d108417be..0953a8b11e 100644 --- a/libavdevice/avfoundation.m +++ b/libavdevice/avfoundation.m @@ -694,6 +694,7 @@ static int get_audio_config(AVFormatContext *s) if (!basic_desc) { av_log(s, AV_LOG_ERROR, "audio format not available\n"); + unlock_frames(ctx); return 1; } @@ -732,6 +733,7 @@ static int get_audio_config(AVFormatContext *s) stream->codecpar->codec_id = ctx->audio_be ? AV_CODEC_ID_PCM_S32BE : AV_CODEC_ID_PCM_S32LE; } else { av_log(s, AV_LOG_ERROR, "audio format is not supported\n"); + unlock_frames(ctx); return 1; } @@ -741,6 +743,7 @@ static int get_audio_config(AVFormatContext *s) ctx->audio_buffer = av_malloc(ctx->audio_buffer_size); if (!ctx->audio_buffer) { av_log(s, AV_LOG_ERROR, "error allocating audio buffer\n"); + unlock_frames(ctx); return 1; } } From patchwork Thu Aug 26 13:29:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: YE Chengfeng X-Patchwork-Id: 29787 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp490639iov; Thu, 26 Aug 2021 06:30:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRZXXXEfuvALg77EbqUdiNRp7ovoAQZWZp0ytWkMqoTRXUTpAhCCreuwTGlW35282w864J X-Received: by 2002:a17:906:4bd6:: with SMTP id x22mr4424975ejv.270.1629984616628; Thu, 26 Aug 2021 06:30:16 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i18si4015022edc.336.2021.08.26.06.30.15; Thu, 26 Aug 2021 06:30:16 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@connect.ust.hk header.s=selector2 header.b=zzIbwTqA; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B72BC68A13C; Thu, 26 Aug 2021 16:30:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from JPN01-OS2-obe.outbound.protection.outlook.com (mail-eopbgr1410132.outbound.protection.outlook.com [40.107.141.132]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 595FF680867 for ; Thu, 26 Aug 2021 16:30:05 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VdF9tCROlZf3/KH28G3nPfYu72yLka7Sma3mYqKWcp8r61337+rVXHm2zJCrX8IT4Q/gpi2zj+xTiIws9g+ma8CykXxISBmP2VLAFcesvAP/L8NLsPbxnauW6arYBx5EunYwgNvCV0/X6J4luBqEsmE0hUf0AQnjdp/5iBw094EyInW5A4lSB8f4wvzS1gbsOeicEN9PsLiOi0NHAFKgOqNZ8ElWo9y2ZksROREQAbqQQorBypQcZTadHUL/7Vj7Qbh48oWjvOSzSxtZ6xcX8IQkdY3NPB1UuJlvEpFwj4wkoZW91HbaqWoNbSLyxrLCZs6CWtd0++uzcbkU8ppAXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o1RxQr59ux2t2fyO5BJZFy5Ff7Zmj4K7AMGY1lSszQk=; b=bUc0IU7Nobg/C83KLNi55SAp8OUpjAtE2b6L5DcfMWLf7rHWZFI90gdzA/sux0UY8K96KjuPJczR9Y/3CyrFj2wy2UIRTGj7j3YQcJ0u4PVvDkaof9gaWiBinGdk1J8b5/n93Qind/NkuEDx7q3xhu3G2Xy47FlGWxTqdiA4b96EowLeMAWPNkQl+lzl7WoUvxfHjEH2bB9QovqmEMCBnwrxR+rDUyOHo6wWYvWuZrR+9VHaA0PTc/ddDLPlsh3i8fFN7E7eE/JH5lOQ213brf/5DFay27jiLX3CwvUxkAT4Zh2i1M25y+y3/Qcy2sdiH90XKoIxrD+QhtzftyE83g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=connect.ust.hk; dmarc=pass action=none header.from=connect.ust.hk; dkim=pass header.d=connect.ust.hk; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=connect.ust.hk; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o1RxQr59ux2t2fyO5BJZFy5Ff7Zmj4K7AMGY1lSszQk=; b=zzIbwTqAaCY9FGbzh47MwXcEq+FOWCoTx7NpyBBkQC5GYRU1kLBCtBvWXFr0F0rA9HEQX6h6biWZEqtKvX1xdvydNM3Mi3yP8YNB8g9O4VaEg+Rm6oHqX0udiyGP/hELWTidseHorFjwviRNBI8mM7EW4vAJX+Dv4WoRI4I5OTQ= Authentication-Results: ffmpeg.org; dkim=none (message not signed) header.d=none;ffmpeg.org; dmarc=none action=none header.from=connect.ust.hk; Received: from TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:b7::8) by TYBP286MB0400.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:801f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.17; Thu, 26 Aug 2021 13:30:02 +0000 Received: from TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM ([fe80::b9cf:11ff:5f5a:32c1]) by TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM ([fe80::b9cf:11ff:5f5a:32c1%6]) with mapi id 15.20.4436.027; Thu, 26 Aug 2021 13:30:01 +0000 From: Chengfeng Ye To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Aug 2021 06:29:53 -0700 Message-Id: <20210826132953.91955-1-cyeaa@connect.ust.hk> X-Mailer: git-send-email 2.17.1 X-ClientProxiedBy: HK2P15301CA0010.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::20) To TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:b7::8) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from ubuntu.localdomain (218.253.253.162) by HK2P15301CA0010.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.0 via Frontend Transport; Thu, 26 Aug 2021 13:30:01 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f6b3429d-d07a-4921-6c90-08d968959b53 X-MS-TrafficTypeDiagnostic: TYBP286MB0400: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:418; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K3Mt+TQWea8S3chKgXh7pouY4qoXQkKVE4AMzrNocr22sjjpcJU4m0PLXkRsTQIMD2NKvFr52dBZ48eHcabX7B+Drju+KiCJdqbkJo6Uu6kg0+EsITookAymuWBJE2mCoAON1F5sQTRfS621XKKydDIQskgJ3U63Y5PmG3YTPxMDqkWZTlOhhBrl7PFAMqjCS2SRiwBkNYvcFj4u48Z1sSknhmeB4ngSUKx2PP0KskG/hdSHJsh/wy8PTVTf/SRAsbuNie2vtLjDU7Te9YJMKobsVeaf3kJRelm/Cicgybc3H7wdvMNg0mqrZQLLj4UkLndx3DdjC81B+PLDbFY1kmSdqrzBLO6NgN8o/YgHc5PuCCuqOxfYluGF3IhVURW5FouqErPW2MgmiyTgUIeHynmrOWrOUQAiaB5MjGGM7ePqcqq792X6SNhOtzCKhzQcOIkMGUOac+SmXwo7EjA5HccX1wQdPf0+3lUHaHet8JeAimv66sajAYkb9+vq7Z9879AoCw3OFRsQ19MuXHauG6PeIE0uL+4V86Af8E+GJZCGTQeBWRYxUI4WSIo1pRDYWb/NKh7D4f1oZ/1AqBe6dEokwGzhfAi+1osJJLA7cCTnR2FYn0lDMPrGEkK1qgnEEVE22+aQFsQySJWZSl7QMILSzefW84E2JrOU3VsDknej2dMiYZqkMk58OKgL/Lqp2kVN80SXx+Lz18ZirT1a8xlgboxOLESbC7awWqnhSkovVezab6gVTNSH0q07J8fDNN+FlveBFdplfIstc5UiOA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(396003)(346002)(366004)(376002)(136003)(39850400004)(786003)(86362001)(316002)(6512007)(186003)(6666004)(966005)(107886003)(26005)(38100700002)(38350700002)(6486002)(66476007)(66556008)(6506007)(66946007)(52116002)(8936002)(8676002)(4326008)(478600001)(83380400001)(6916009)(36756003)(2906002)(2616005)(5660300002)(1076003)(956004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Er70M8LaaqRr9Sjn9rMGisk5CNqW5BnAdXZzUfgVcUrAVKq+EIodApyrIIAoThQctDQa+Lp+d+KogYx2uL8rPMoT//SEmwzYsT5TP7X2M1SXbZ/Sey6RQaFhPMNrEP0sJUl5cvws68PXj1J2CYK/17+Mkz1+lheQrvm7MIO6VrH1T7SoLGaadFjkV1qumHD1PJgyeIoHSxaXgQDvBjKto7t/fzkzeVizjoY9NAd2VzEURZzZoa9jORiUerRA54unHHNusTxHoBc8DdCz97CbvRoIhJcR12RtEFMH6LYFW3QF8THzU6Hd4YJcMtwGH6/RU0T67q08LCV5fht24qBSMjPFzwmqFWB+AJVSiNZ1kD+uCA2bgdo7eP6MU1ght6uJixYRZ8EhyfinhDzFqpaINyTM700opQcFmOBX9mowGURk364gfHw5pyj5syOzJBC+4rHVYQqV33VFNncO0iOiBN3y3463kPeJkMgShG4Ssz3VZPzw7KW8UCVdkKg9dczSRpiTcspqh7ra8Xv20iN/apttnecJIe67DQRiAYrTUuJJhkFLailmWlGGOd+rCkyAJtTozaJdqzBRcgUSJCj+Rvdb9e+HjCJmbIdB/Acj0+e+TRj2rOWpjfxa6EAdr+n5OtUldk8TS8FP7y9MQdlX5nJBhV1HY8+Fzn/19tZ0Ikknx3JiDo732CpcoJAFTJ7W8S6lgViI5ZdLZttL5mxl9VfbVn/iT/i6pjWVYaTy0JKz6ffV/o6RpPyCmjqmzzL4ssfGsS7oozxgJXrI7jOUqKMcCgM7hK2yEIG6pZcmuhaUC6m60661LZVMsnL2vMFg8aOKaTkHFgloGSszqTGqcVQPZ8LZZaCcFcPuDWF/RqkJNSUKD1fZ1NbFfHeplzzMtGCam+eHUiJL4B1vRX/L7wk4ynLP0X6cMVp++RdsTOjKrd26jjTsYiSA8oco8E/WMjL5LjZCNLkXi06vPyMLg3UqIhH5afMTUV68RKom5zWASpizkaxsbR/2CG6iZE+eWeZXBmMRLedEuBLpavgWxTMhCFSwxyjkjECF2gyskC3VlGHgRy9iPa7+THKKQoQDNrT7XEnN/0ESXR7vG5fSSh6DPWeRoNmPbnDDMAsdHI3HDEe8kDUXjq8I5FnxH7QxKCQ4Qe3UTUgYXv/LD5J2PSrASHwT2AhjfU5w6rcFTNN/cJ7FSL5FbE3ZC3A0MClrlxyuC4Jv5S02hQuz37LP4MsV3PxrcuMANK0fnK4bpKyKAZkU5Ace07PnxnTi72zOIgBTEc1dFde6pMIyAwka2wI1H4yLv7kv7W19tNij4so9yXWpGE2YddH4uBYVJ8ez X-OriginatorOrg: connect.ust.hk X-MS-Exchange-CrossTenant-Network-Message-Id: f6b3429d-d07a-4921-6c90-08d968959b53 X-MS-Exchange-CrossTenant-AuthSource: TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2021 13:30:01.7108 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 6c1d4152-39d0-44ca-88d9-b8d6ddca0708 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WLUQ6x/65WTdtUKMkYmiCPtTIQuvzWFf0xp2fjrgs/5emKB7CbJSRozQg/13+HoeURYR+gZHoup6a657qLhAeQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYBP286MB0400 Subject: [FFmpeg-devel] [PATCH 2/2] libavdevice: Fix a potential deadlock issue on the lock ctx->frame_lock in function avf_read_packet X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Chengfeng Ye Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: m9y8OTFzDH8t The problem here is that the lock ctx->frame_lock will become an unreleased lock if the program returns at line 1067, line 1071, line 1098, line 1104, line 1108, line 1112, line 1131, line 1142 and line 1162. Depends-on: series-0001 (libavdevice: Fix a potential deadlock issue on the lock ctx->frame_lock in function get_audio_config) Cc: cyeaa@connect.ust.hk Bug tracker link: https://trac.ffmpeg.org/ticket/9386\#ticket Signed-off-by: Chengfeng Ye --- libavdevice/avfoundation.m | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/libavdevice/avfoundation.m b/libavdevice/avfoundation.m index 0953a8b11e..a461cf7d3b 100644 --- a/libavdevice/avfoundation.m +++ b/libavdevice/avfoundation.m @@ -1067,10 +1067,12 @@ static int avf_read_packet(AVFormatContext *s, AVPacket *pkt) } else if (block_buffer != nil) { length = (int)CMBlockBufferGetDataLength(block_buffer); } else { + unlock_frames(ctx); return AVERROR(EINVAL); } if (av_new_packet(pkt, length) < 0) { + unlock_frames(ctx); return AVERROR(EIO); } @@ -1097,21 +1099,26 @@ static int avf_read_packet(AVFormatContext *s, AVPacket *pkt) CFRelease(ctx->current_frame); ctx->current_frame = nil; - if (status < 0) + if (status < 0) { + unlock_frames(ctx); return status; + } } else if (ctx->current_audio_frame != nil) { CMBlockBufferRef block_buffer = CMSampleBufferGetDataBuffer(ctx->current_audio_frame); int block_buffer_size = CMBlockBufferGetDataLength(block_buffer); if (!block_buffer || !block_buffer_size) { + unlock_frames(ctx); return AVERROR(EIO); } if (ctx->audio_non_interleaved && block_buffer_size > ctx->audio_buffer_size) { + unlock_frames(ctx); return AVERROR_BUFFER_TOO_SMALL; } if (av_new_packet(pkt, block_buffer_size) < 0) { + unlock_frames(ctx); return AVERROR(EIO); } @@ -1131,6 +1138,7 @@ static int avf_read_packet(AVFormatContext *s, AVPacket *pkt) OSStatus ret = CMBlockBufferCopyDataBytes(block_buffer, 0, pkt->size, ctx->audio_buffer); if (ret != kCMBlockBufferNoErr) { + unlock_frames(ctx); return AVERROR(EIO); } @@ -1140,9 +1148,12 @@ static int avf_read_packet(AVFormatContext *s, AVPacket *pkt) #define INTERLEAVE_OUTPUT(bps) \ { \ int##bps##_t **src; \ - int##bps##_t *dest; \ + int##bps##_t *dest; \ src = av_malloc(ctx->audio_channels * sizeof(int##bps##_t*)); \ - if (!src) return AVERROR(EIO); \ + if (!src) { \ + unlock_frames(ctx); \ + return AVERROR(EIO); \ + } \ for (c = 0; c < ctx->audio_channels; c++) { \ src[c] = ((int##bps##_t*)ctx->audio_buffer) + c * num_samples; \ } \ @@ -1162,6 +1173,7 @@ static int avf_read_packet(AVFormatContext *s, AVPacket *pkt) } else { OSStatus ret = CMBlockBufferCopyDataBytes(block_buffer, 0, pkt->size, pkt->data); if (ret != kCMBlockBufferNoErr) { + unlock_frames(ctx); return AVERROR(EIO); } }