From: badari <pbadari@us.ibm.com>
I ran into an ipc hang while trying to shutdown a database. The problem is
due to missing sem_unlock() in find_undo().
if(sma==NULL)
goto out;
un = ERR_PTR(-EIDRM);
- if (sem_checkid(sma,semid))
- goto out_unlock;
+ if (sem_checkid(sma,semid)) {
+ sem_unlock(sma);
+ goto out;
+ }
nsems = sma->sem_nsems;
sem_unlock(sma);
sma->undo = new;
sem_unlock(sma);
un = new;
-out_unlock:
unlock_semundo();
out:
return un;