mirror of https://gitee.com/openkylin/linux.git
sgi-xp: open-code interruptible_sleep_on_timeout
interruptible_sleep_on_timeout is deprecated and going away soon. The use in the sgi-xp driver leaves me puzzled, so I'd prefer not to touch it. This patch replaces it with an open-coded prepare_to_wait and finish_wait pair, which should be completely equivalent, so it doesn't fix an existing race, but lets us get away with removing the function so we can not get any new users. In order to remove the typical sleep_on race, one would have to replace the call with wait_event_interruptible_timeout and add a condition to wait for. The fact that there is a one-jiffy timeout suggests that we don't actually expect to get woken up properly and the caller just uses this as a short sleeping function if it doesn't wake up properly. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Cliff Whickman <cpw@sgi.com> Acked-by: Robin Holt <robinmholt@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a45a0258d1
commit
11d5ceb646
|
@ -828,6 +828,7 @@ enum xp_retval
|
|||
xpc_allocate_msg_wait(struct xpc_channel *ch)
|
||||
{
|
||||
enum xp_retval ret;
|
||||
DEFINE_WAIT(wait);
|
||||
|
||||
if (ch->flags & XPC_C_DISCONNECTING) {
|
||||
DBUG_ON(ch->reason == xpInterrupted);
|
||||
|
@ -835,7 +836,9 @@ xpc_allocate_msg_wait(struct xpc_channel *ch)
|
|||
}
|
||||
|
||||
atomic_inc(&ch->n_on_msg_allocate_wq);
|
||||
ret = interruptible_sleep_on_timeout(&ch->msg_allocate_wq, 1);
|
||||
prepare_to_wait(&ch->msg_allocate_wq, &wait, TASK_INTERRUPTIBLE);
|
||||
ret = schedule_timeout(1);
|
||||
finish_wait(&ch->msg_allocate_wq, &wait);
|
||||
atomic_dec(&ch->n_on_msg_allocate_wq);
|
||||
|
||||
if (ch->flags & XPC_C_DISCONNECTING) {
|
||||
|
|
Loading…
Reference in New Issue