From patchwork Mon May 8 04:09:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takayuki 'January June' Suwa X-Patchwork-Id: 3603 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.3.129 with SMTP id 123csp676914vsd; Sun, 7 May 2017 21:10:15 -0700 (PDT) X-Received: by 10.223.150.167 with SMTP id u36mr39762969wrb.184.1494216615695; Sun, 07 May 2017 21:10:15 -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 h2si9505101wme.19.2017.05.07.21.10.14; Sun, 07 May 2017 21:10:15 -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=@gmail.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C9AA7688286; Mon, 8 May 2017 07:10:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f49.google.com (mail-pg0-f49.google.com [74.125.83.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3F1F2680AB5 for ; Mon, 8 May 2017 07:09:59 +0300 (EEST) Received: by mail-pg0-f49.google.com with SMTP id 64so4119139pgb.3 for ; Sun, 07 May 2017 21:10:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=iolPJui6O/FLV0IUgtM0v4rOk/G7GI3HUQgH4oPUOTo=; b=iWE8JQejvaZ33WFthlehFJu9sJwq5RN+xfZJKsm75X6+/3llY0OQcUJu/fZGtYba5w YVH8QNY60m6wmp5HkGXxPl011XnhUjl+HmkFa7KOqjRhZJQm9HkY2685+6ockX5PzGrc tLFg3repd1uCZzcOzu4TzBdXynGPTOX3oetrsfrVnvtpFo+jBPnNhMaCkNIMgb53W26h EBrDeHqalV/QFANVE6KCDptQvFT8WVJyL/LnfIRj+MGjxX+wkMSGPw/vuSNM+ExjLjAA Oum/81RXgEzfHnuRQvIcbBHeqm4dhxniFg7jEkQlc8uP7P+snfENjqfTDc0KTBgwgtG9 FyvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=iolPJui6O/FLV0IUgtM0v4rOk/G7GI3HUQgH4oPUOTo=; b=pSykQgCG8K995XIKkwXct8HPFt2+nLJ9PwxNxYMchxrbQG1M40A0hooOqJEummZfOo JaY/Bb5sWv7HBCMrK+hbSPs8wioYywR0CZTwLdNNJjf3L+5bPlJsYBI8jZkTnAD2vKPD N3OWTyKfGa83n0NEl3h+BCMUh+Tp8qZ6S5ybtquuUxz57Oh3tLbxkiJxO5CvfOWUtFs3 8xW9Tz2ehj8r6cA8YKP1VQGRzy3n6gZiioymkxXiBllpQhBy/wnKj5LQ/8bPCP9MUciO r7ARmiWnYNupn5NndoN29oWdrL5xYYh/Mu6MloxLAi+ZidEYJAwmJIUEBGoxReNcrXwa Z5tQ== X-Gm-Message-State: AN3rC/7QxmDcPjh61Mb6GN0YpEwsT73abQyDUKn/Dt5f4jKBVcgdVvwI Qay0YQW9m5lLaA== X-Received: by 10.98.14.13 with SMTP id w13mr23606440pfi.59.1494216603385; Sun, 07 May 2017 21:10:03 -0700 (PDT) Received: from localhost.localdomain (h175-177-005-132.catv02.itscom.jp. [175.177.5.132]) by smtp.gmail.com with ESMTPSA id y78sm2773003pfd.32.2017.05.07.21.10.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 07 May 2017 21:10:02 -0700 (PDT) From: Takayuki 'January June' Suwa To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 May 2017 13:09:54 +0900 Message-Id: <1494216594-1930-1-git-send-email-jjsuwa.sys3175@gmail.com> X-Mailer: git-send-email 2.1.4 Subject: [FFmpeg-devel] [PATCH] lavd/alsa: fixes ALSA resource leak on closing the PCM handle X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Takayuki 'January June' Suwa MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" By avoiding thread race condition (CAS-ing with null handle) --- libavdevice/alsa.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavdevice/alsa.c b/libavdevice/alsa.c index 1bbff30..81187ab 100644 --- a/libavdevice/alsa.c +++ b/libavdevice/alsa.c @@ -30,6 +30,7 @@ #include #include "avdevice.h" +#include "libavutil/atomic.h" #include "libavutil/avassert.h" #include "libavutil/channel_layout.h" @@ -299,13 +300,14 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, snd_pcm_stream_t mode, av_cold int ff_alsa_close(AVFormatContext *s1) { AlsaData *s = s1->priv_data; + snd_pcm_t *h = avpriv_atomic_ptr_cas((void* volatile *)&s->h, s->h, 0); - snd_pcm_nonblock(s->h, 0); - snd_pcm_drain(s->h); + snd_pcm_nonblock(h, 0); + snd_pcm_drain(h); av_freep(&s->reorder_buf); if (CONFIG_ALSA_INDEV) ff_timefilter_destroy(s->timefilter); - snd_pcm_close(s->h); + snd_pcm_close(h); return 0; }