Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750858AbbK0FAe (ORCPT ); Fri, 27 Nov 2015 00:00:34 -0500 Received: from zeniv.linux.org.uk ([195.92.253.2]:52833 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750727AbbK0FAa (ORCPT ); Fri, 27 Nov 2015 00:00:30 -0500 Date: Fri, 27 Nov 2015 05:00:26 +0000 From: Al Viro To: Mauro Carvalho Chehab Cc: Linus Torvalds , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: ->poll() instances shouldn't be indefinitely blocking Message-ID: <20151127050026.GX22011@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1240 Lines: 35 Take a look at this: static unsigned int gsc_m2m_poll(struct file *file, struct poll_table_struct *wait) { struct gsc_ctx *ctx = fh_to_ctx(file->private_data); struct gsc_dev *gsc = ctx->gsc_dev; int ret; if (mutex_lock_interruptible(&gsc->lock)) return -ERESTARTSYS; ret = v4l2_m2m_poll(file, ctx->m2m_ctx, wait); mutex_unlock(&gsc->lock); return ret; } a) ->poll() should not return -E...; callers expect just a bitmap of POLL... values. b) sure, it's nice that if this thing hangs, we'll be able to kill it. However, if one's ->poll() can hang indefinitely, it means bad things for poll(2), select(2), etc. semantics. What the hell had been intended there? c) a bunch of v4l2_m2m_poll() callers are also taking some kind of mutex; AFAICS, all of those appear bogus (the rest of them do not play wiht ERESTARTSYS, just plain mutex_lock() for those). What's going on there? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/