Fix sema_init() to manually initialise the semaphore rather than using __SEMAPHORE_INITIALIZER() as that doesn't seem to work on C++.
Signed-off-by: David Howells <dhowe...@redhat.com> --- include/linux/semaphore.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h index 11c86fbfeb98..364fb4721db5 100644 --- a/include/linux/semaphore.h +++ b/include/linux/semaphore.h @@ -32,7 +32,10 @@ struct semaphore { static inline void sema_init(struct semaphore *sem, int val) { static struct lock_class_key __key; - *sem = (struct semaphore) __SEMAPHORE_INITIALIZER(*sem, val); + + sem->count = val; + INIT_LIST_HEAD(&sem->wait_list); + raw_spin_lock_init(&sem->lock); lockdep_init_map(&sem->lock.dep_map, "semaphore->lock", &__key, 0); }