diff options
Diffstat (limited to 'ipc/util.h')
| -rw-r--r-- | ipc/util.h | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/ipc/util.h b/ipc/util.h index 2b0bdd5d92ce..b6a6a88f3002 100644 --- a/ipc/util.h +++ b/ipc/util.h | |||
| @@ -159,21 +159,31 @@ static inline int ipc_checkid(struct kern_ipc_perm *ipcp, int uid) | |||
| 159 | return uid / SEQ_MULTIPLIER != ipcp->seq; | 159 | return uid / SEQ_MULTIPLIER != ipcp->seq; |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | static inline void ipc_lock_by_ptr(struct kern_ipc_perm *perm) | 162 | static inline void ipc_lock_object(struct kern_ipc_perm *perm) |
| 163 | { | 163 | { |
| 164 | rcu_read_lock(); | ||
| 165 | spin_lock(&perm->lock); | 164 | spin_lock(&perm->lock); |
| 166 | } | 165 | } |
| 167 | 166 | ||
| 168 | static inline void ipc_unlock(struct kern_ipc_perm *perm) | 167 | static inline void ipc_unlock_object(struct kern_ipc_perm *perm) |
| 169 | { | 168 | { |
| 170 | spin_unlock(&perm->lock); | 169 | spin_unlock(&perm->lock); |
| 171 | rcu_read_unlock(); | ||
| 172 | } | 170 | } |
| 173 | 171 | ||
| 174 | static inline void ipc_lock_object(struct kern_ipc_perm *perm) | 172 | static inline void ipc_assert_locked_object(struct kern_ipc_perm *perm) |
| 175 | { | 173 | { |
| 176 | spin_lock(&perm->lock); | 174 | assert_spin_locked(&perm->lock); |
| 175 | } | ||
| 176 | |||
| 177 | static inline void ipc_lock_by_ptr(struct kern_ipc_perm *perm) | ||
| 178 | { | ||
| 179 | rcu_read_lock(); | ||
| 180 | ipc_lock_object(perm); | ||
| 181 | } | ||
| 182 | |||
| 183 | static inline void ipc_unlock(struct kern_ipc_perm *perm) | ||
| 184 | { | ||
| 185 | ipc_unlock_object(perm); | ||
| 186 | rcu_read_unlock(); | ||
| 177 | } | 187 | } |
| 178 | 188 | ||
| 179 | struct kern_ipc_perm *ipc_lock_check(struct ipc_ids *ids, int id); | 189 | struct kern_ipc_perm *ipc_lock_check(struct ipc_ids *ids, int id); |
