From 3f0dc404f16af58d20b4489b0daafcf87555dfb7 Mon Sep 17 00:00:00 2001 From: Mounesh Sutar Date: Tue, 10 Jan 2017 12:03:17 +0530 Subject: [PATCH] pcm: direct: returning semop error code for semaphore up/down failures Signed-off-by: Mounesh Sutar Signed-off-by: Takashi Iwai --- src/pcm/pcm_direct.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pcm/pcm_direct.h b/src/pcm/pcm_direct.h index 91e816cc..aee38c5e 100644 --- a/src/pcm/pcm_direct.h +++ b/src/pcm/pcm_direct.h @@ -263,7 +263,10 @@ static inline int snd_pcm_direct_semaphore_down(snd_pcm_direct_t *dmix, int sem_ { struct sembuf op[2] = { { sem_num, 0, 0 }, { sem_num, 1, SEM_UNDO } }; int err = semop(dmix->semid, op, 2); - if (err == 0) dmix->locked[sem_num]++; + if (err == 0) + dmix->locked[sem_num]++; + else if (err == -1) + err = -errno; return err; } @@ -271,7 +274,10 @@ static inline int snd_pcm_direct_semaphore_up(snd_pcm_direct_t *dmix, int sem_nu { struct sembuf op = { sem_num, -1, SEM_UNDO | IPC_NOWAIT }; int err = semop(dmix->semid, &op, 1); - if (err == 0) dmix->locked[sem_num]--; + if (err == 0) + dmix->locked[sem_num]--; + else if (err == -1) + err = -errno; return err; } -- 2.47.1