lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 27 Nov 2015 05:00:26 +0000 From: Al Viro <viro@...IV.linux.org.uk> To: Mauro Carvalho Chehab <mchehab@....samsung.com> Cc: Linus Torvalds <torvalds@...ux-foundation.org>, linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org Subject: ->poll() instances shouldn't be indefinitely blocking 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@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists