Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9e346820 authored by Ralf Baechle's avatar Ralf Baechle
Browse files

[MIPS] RTLX: Don't use volatile; it's fragile.

parent 080e948c
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -146,7 +146,7 @@ static void stopping(int vpe)

int rtlx_open(int index, int can_sleep)
{
	volatile struct rtlx_info **p;
	struct rtlx_info **p;
	struct rtlx_channel *chan;
	enum rtlx_state state;
	int ret = 0;
@@ -179,13 +179,24 @@ int rtlx_open(int index, int can_sleep)
			}
		}

		smp_rmb();
		if (*p == NULL) {
			if (can_sleep) {
				__wait_event_interruptible(channel_wqs[index].lx_queue,
				                           *p != NULL,
				                           ret);
				if (ret)
				DEFINE_WAIT(wait);

				for (;;) {
					prepare_to_wait(&channel_wqs[index].lx_queue, &wait, TASK_INTERRUPTIBLE);
					smp_rmb();
					if (*p != NULL)
						break;
					if (!signal_pending(current)) {
						schedule();
						continue;
					}
					ret = -ERESTARTSYS;
					goto out_fail;
				}
				finish_wait(&channel_wqs[index].lx_queue, &wait);
			} else {
				printk(" *vpe_get_shared is NULL. "
				       "Has an SP program been loaded?\n");