Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull locking updates from Ingo Molnar: "The main changes in this cycle were: - Continued user-access cleanups in the futex code. - percpu-rwsem rewrite that uses its own waitqueue and atomic_t instead of an embedded rwsem. This addresses a couple of weaknesses, but the primary motivation was complications on the -rt kernel. - Introduce raw lock nesting detection on lockdep (CONFIG_PROVE_RAW_LOCK_NESTING=y), document the raw_lock vs. normal lock differences. This too originates from -rt. - Reuse lockdep zapped chain_hlocks entries, to conserve RAM footprint on distro-ish kernels running into the "BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!" depletion of the lockdep chain-entries pool. - Misc cleanups, smaller fixes and enhancements - see the changelog for details" * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (55 commits) fs/buffer: Make BH_Uptodate_Lock bit_spin_lock a regular spinlock_t thermal/x86_pkg_temp: Make pkg_temp_lock a raw_spinlock_t Documentation/locking/locktypes: Minor copy editor fixes Documentation/locking/locktypes: Further clarifications and wordsmithing m68knommu: Remove mm.h include from uaccess_no.h x86: get rid of user_atomic_cmpxchg_inatomic() generic arch_futex_atomic_op_inuser() doesn't need access_ok() x86: don't reload after cmpxchg in unsafe_atomic_op2() loop x86: convert arch_futex_atomic_op_inuser() to user_access_begin/user_access_end() objtool: whitelist __sanitizer_cov_trace_switch() [parisc, s390, sparc64] no need for access_ok() in futex handling sh: no need of access_ok() in arch_futex_atomic_op_inuser() futex: arch_futex_atomic_op_inuser() calling conventions change completion: Use lockdep_assert_RT_in_threaded_ctx() in complete_all() lockdep: Add posixtimer context tracing bits lockdep: Annotate irq_work lockdep: Add hrtimer context tracing bits lockdep: Introduce wait-type checks completion: Use simple wait queues sched/swait: Prepare usage in completions ...
This commit is contained in:
@@ -365,17 +365,6 @@ static struct request_context *ezusb_alloc_ctx(struct ezusb_priv *upriv,
|
||||
return ctx;
|
||||
}
|
||||
|
||||
|
||||
/* Hopefully the real complete_all will soon be exported, in the mean
|
||||
* while this should work. */
|
||||
static inline void ezusb_complete_all(struct completion *comp)
|
||||
{
|
||||
complete(comp);
|
||||
complete(comp);
|
||||
complete(comp);
|
||||
complete(comp);
|
||||
}
|
||||
|
||||
static void ezusb_ctx_complete(struct request_context *ctx)
|
||||
{
|
||||
struct ezusb_priv *upriv = ctx->upriv;
|
||||
@@ -409,7 +398,7 @@ static void ezusb_ctx_complete(struct request_context *ctx)
|
||||
|
||||
netif_wake_queue(dev);
|
||||
}
|
||||
ezusb_complete_all(&ctx->done);
|
||||
complete_all(&ctx->done);
|
||||
ezusb_request_context_put(ctx);
|
||||
break;
|
||||
|
||||
@@ -419,7 +408,7 @@ static void ezusb_ctx_complete(struct request_context *ctx)
|
||||
/* This is normal, as all request contexts get flushed
|
||||
* when the device is disconnected */
|
||||
err("Called, CTX not terminating, but device gone");
|
||||
ezusb_complete_all(&ctx->done);
|
||||
complete_all(&ctx->done);
|
||||
ezusb_request_context_put(ctx);
|
||||
break;
|
||||
}
|
||||
@@ -690,11 +679,11 @@ static void ezusb_req_ctx_wait(struct ezusb_priv *upriv,
|
||||
* get the chance to run themselves. So we make sure
|
||||
* that we don't sleep for ever */
|
||||
int msecs = DEF_TIMEOUT * (1000 / HZ);
|
||||
while (!ctx->done.done && msecs--)
|
||||
|
||||
while (!try_wait_for_completion(&ctx->done) && msecs--)
|
||||
udelay(1000);
|
||||
} else {
|
||||
wait_event_interruptible(ctx->done.wait,
|
||||
ctx->done.done);
|
||||
wait_for_completion(&ctx->done);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
Reference in New Issue
Block a user