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

Commit ccf40d62 authored by Duncan Sands's avatar Duncan Sands Committed by Greg Kroah-Hartman
Browse files

usbatm: fix tiny race



If usbatm_do_heavy_init finishes before usbatm_heavy_init
writes the pid, the disconnect method could shoot down the
wrong process if the pid has been recycled.

Signed-off-by: default avatarDuncan Sands <baldrick@free.fr>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent e4a20daa
Loading
Loading
Loading
Loading
+1 −4
Original line number Original line Diff line number Diff line
@@ -1001,6 +1001,7 @@ static int usbatm_do_heavy_init(void *arg)


	daemonize(instance->driver->driver_name);
	daemonize(instance->driver->driver_name);
	allow_signal(SIGTERM);
	allow_signal(SIGTERM);
	instance->thread_pid = get_current()->pid;


	complete(&instance->thread_started);
	complete(&instance->thread_started);


@@ -1025,10 +1026,6 @@ static int usbatm_heavy_init(struct usbatm_data *instance)
		return ret;
		return ret;
	}
	}


	mutex_lock(&instance->serialize);
	instance->thread_pid = ret;
	mutex_unlock(&instance->serialize);

	wait_for_completion(&instance->thread_started);
	wait_for_completion(&instance->thread_started);


	return 0;
	return 0;