Received: by 2002:a05:6a10:6006:0:0:0:0 with SMTP id w6csp1275195pxa; Fri, 28 Aug 2020 08:20:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUivyxocgnTRpBJhj/o+hxnlVJjF4CVtjwC/mrd0mXntMXvtcvASIV721oBKHyii9V31fx X-Received: by 2002:a17:906:3647:: with SMTP id r7mr2440127ejb.336.1598628051854; Fri, 28 Aug 2020 08:20:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598628051; cv=none; d=google.com; s=arc-20160816; b=PDTle5Ncdy7+TqNTkEcqbQ1fCMGY2Vz/ICs5kNGHzIW9fEcBBwdUzG0Poi+K86uAZc MbloSplJKJYicSmRGZ0Yb/kxgSMGI096VFHSDT5//Y11i7ZWvlQ+Iz2UQQkWFlRRN5rc 9xF5dn5hX9uNqS2zjrhe4pIv6EyRozmVT3tvD1P4Oo+XV7j3xNK1PhVxy4VPkh50sPAo nuPiOKFAMXPVukRxgun395k4lsmjNPs28fEqO33JWDNdrLn3W724ynHaR7jJ3YgLl9hI yi95FLwrVp49QfNDaXEkwnlHnw5gzCRuPVRoj9e7yIMMfE6HQhLlNdjq4RO/nDYiPxI2 i7fA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=G2HuvEUb+cEO2pHupijluoyfGx/fDLghw4ohpb9DBko=; b=ldkqUzbwnedE6vr85w0VMPpIn6m305eadaImrXu/KBeWIm6kqsZFUvGb5LQ7dk791d 4f0rfdka7i546u/nLQf+EpvnCF0lKEAoBP6TF7B/wbhRABhHDi9U54FMOPHpHQv1ydpC As1Uzaw3sAu0PabpT1xGPlJB0v0gDcA36htKpTThqA+YN6vFZAfI2jc10SNlgzyAoGRh 6VcefsLgDfSuMr1BA96QpxMWRBIurrHahxlcFdKFL3F2t969+f0gsChxjebrrNym9sp8 BrZAw+1j463HY47QsJQbkCjgXXwZjrKXlr3CkhYYtjK3eMKn/cTYIEMHSO9zScNM8HAO 2T9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vanguardiasur-com-ar.20150623.gappssmtp.com header.s=20150623 header.b=jb1ijdCL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z1si845400eju.231.2020.08.28.08.20.29; Fri, 28 Aug 2020 08:20:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@vanguardiasur-com-ar.20150623.gappssmtp.com header.s=20150623 header.b=jb1ijdCL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726798AbgH1PSK (ORCPT + 99 others); Fri, 28 Aug 2020 11:18:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728022AbgH1PSH (ORCPT ); Fri, 28 Aug 2020 11:18:07 -0400 Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DAF97C06121B for ; Fri, 28 Aug 2020 08:18:05 -0700 (PDT) Received: by mail-ed1-x543.google.com with SMTP id ba12so1500305edb.2 for ; Fri, 28 Aug 2020 08:18:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vanguardiasur-com-ar.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=G2HuvEUb+cEO2pHupijluoyfGx/fDLghw4ohpb9DBko=; b=jb1ijdCLU2VqGTwpN0GkyjHGqUuflN+HR4/BGcjzb66XSRn+Ytp+o5R+uI9jaVI4R2 9RSEibzSDz8xdJwlnB6hpPPjORRY4PJRzwTILSIhD4w6UICFhZBHtSIIJBjVR9zoW2PM uZ+/mOvzkFskzNseT4NqsTQS3dg354P+vZfeRHx4PgO1Y2sC1mqGwQEeCNy7jHWt8tYn mx8V56Z9DirO+jQxU0NDk6XqjPP38w78n8Fpv4tHgCzZS/vOvEldVaKC677Ub2Uj9lXD 0MGzJULi8fc6gdkSnt90+vIumP9L7xRnjouVx3J77tQhFF3F58cH3RiT+dzQ9XGSCOGk 1j7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=G2HuvEUb+cEO2pHupijluoyfGx/fDLghw4ohpb9DBko=; b=kCm+KnVEp8gCTkDRak6usaboV1x8B9kfU+8RjzGMucOMG162PFv0OmIRbl390FHKfb WwNMz4yjPfKAlVgoTIIAEcwT+DZqu7HfIBvyoXzvxWFnJ5lLeuI8RbZ7Th+WB5+GVvZH Wbe0KR/EAeEsviVubjEG6Hj5MnrEbZ/aBGqGTBSfgDTKxz9YhMocbnhsPbthAb71TJ4P FEHlArX3+iZeQqACjBcfHtgcGclvKSDs0SGhwrDqL8qa0iPPbJ30P/4aT7kWN2yN3KMK lTF7GGFZDAGFt6poJxVOMFE1DWNG4ukwd7En6yKlfRY75sGsmhIe+8asQqIMKMfxTrWG dkpQ== X-Gm-Message-State: AOAM533tOXFoYdwxlGW5s+LmxD2XLmifBQ8R9q573iCJ9phHkZjFqijc XGUd4+t61vA7e34cZYfKOAexjBBRyX2qr/knqFALaw== X-Received: by 2002:a50:cd15:: with SMTP id z21mr2430176edi.362.1598627884419; Fri, 28 Aug 2020 08:18:04 -0700 (PDT) MIME-Version: 1.0 References: <20200827124946.328700-1-gnurou@gmail.com> <20200827124946.328700-2-gnurou@gmail.com> In-Reply-To: <20200827124946.328700-2-gnurou@gmail.com> From: Ezequiel Garcia Date: Fri, 28 Aug 2020 12:17:53 -0300 Message-ID: Subject: Re: [PATCH v2 1/2] media: v4l2-mem2mem: always consider OUTPUT queue during poll To: Alexandre Courbot Cc: Mauro Carvalho Chehab , Hans Verkuil , Nicolas Dufresne , linux-media , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 27 Aug 2020 at 09:50, Alexandre Courbot wrote: > > If poll() is called on a m2m device with the EPOLLOUT event after the > last buffer of the CAPTURE queue is dequeued, any buffer available on > OUTPUT queue will never be signaled because v4l2_m2m_poll_for_data() > starts by checking whether dst_q->last_buffer_dequeued is set and > returns EPOLLIN in this case, without looking at the state of the OUTPUT > queue. > > Fix this by not early returning so we keep checking the state of the > OUTPUT queue afterwards. > > Signed-off-by: Alexandre Courbot Reviewed-by: Ezequiel Garcia > --- > drivers/media/v4l2-core/v4l2-mem2mem.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c > index 95a8f2dc5341d..fe90c3c0e4128 100644 > --- a/drivers/media/v4l2-core/v4l2-mem2mem.c > +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c > @@ -868,10 +868,8 @@ static __poll_t v4l2_m2m_poll_for_data(struct file *file, > * If the last buffer was dequeued from the capture queue, > * return immediately. DQBUF will return -EPIPE. > */ > - if (dst_q->last_buffer_dequeued) { > - spin_unlock_irqrestore(&dst_q->done_lock, flags); > - return EPOLLIN | EPOLLRDNORM; > - } > + if (dst_q->last_buffer_dequeued) > + rc |= EPOLLIN | EPOLLRDNORM; > } > spin_unlock_irqrestore(&dst_q->done_lock, flags); > > -- > 2.28.0 >