From f5072556743a43716dd25e0a0bec5db4d337498f Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Wed, 9 Sep 2009 10:23:35 +0200 Subject: [PATCH] --- yaml --- r: 165055 b: refs/heads/master c: 798199867385417ba6494472e39c016e3340758c h: refs/heads/master i: 165053: c8e0dc0e740ad05b19251d3daac9ed5035907156 165051: e8a9268740c2189ac7ed87b0f362a71efe1644a2 165047: e0761719793f768055ee7155903a285fc8957c26 165039: 2f3476f3a938bea9f636cb8010c1f1f67f752c51 165023: 61e8a60d7b849cfbe7fe912289be92fda4ec5a8d 164991: 63c47752f29571cd3edb27aa2755ac083ef0ebfa v: v3 --- [refs] | 2 +- trunk/drivers/usb/usb-skeleton.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index e11f846729bb..a14d5f315ee2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e7389cc9a7ff7c6e760e741c81a751c834f7d145 +refs/heads/master: 798199867385417ba6494472e39c016e3340758c diff --git a/trunk/drivers/usb/usb-skeleton.c b/trunk/drivers/usb/usb-skeleton.c index 5ffa3e246856..768fda9064e9 100644 --- a/trunk/drivers/usb/usb-skeleton.c +++ b/trunk/drivers/usb/usb-skeleton.c @@ -399,9 +399,16 @@ static ssize_t skel_write(struct file *file, const char *user_buffer, size_t cou goto exit; /* limit the number of URBs in flight to stop a user from using up all RAM */ - if (down_interruptible(&dev->limit_sem)) { - retval = -ERESTARTSYS; - goto exit; + if (!file->f_flags & O_NONBLOCK) { + if (down_interruptible(&dev->limit_sem)) { + retval = -ERESTARTSYS; + goto exit; + } + } else { + if (down_trylock(&dev->limit_sem)) { + retval = -EAGAIN; + goto exit; + } } spin_lock_irq(&dev->err_lock);