Lines Matching refs:buf
28 struct tty_audit_buf *buf; in tty_audit_buf_alloc() local
30 buf = kmalloc(sizeof(*buf), GFP_KERNEL); in tty_audit_buf_alloc()
31 if (!buf) in tty_audit_buf_alloc()
33 buf->data = kmalloc(N_TTY_BUF_SIZE, GFP_KERNEL); in tty_audit_buf_alloc()
34 if (!buf->data) in tty_audit_buf_alloc()
36 atomic_set(&buf->count, 1); in tty_audit_buf_alloc()
37 mutex_init(&buf->mutex); in tty_audit_buf_alloc()
38 buf->major = major; in tty_audit_buf_alloc()
39 buf->minor = minor; in tty_audit_buf_alloc()
40 buf->icanon = icanon; in tty_audit_buf_alloc()
41 buf->valid = 0; in tty_audit_buf_alloc()
42 return buf; in tty_audit_buf_alloc()
45 kfree(buf); in tty_audit_buf_alloc()
50 static void tty_audit_buf_free(struct tty_audit_buf *buf) in tty_audit_buf_free() argument
52 WARN_ON(buf->valid != 0); in tty_audit_buf_free()
53 kfree(buf->data); in tty_audit_buf_free()
54 kfree(buf); in tty_audit_buf_free()
57 static void tty_audit_buf_put(struct tty_audit_buf *buf) in tty_audit_buf_put() argument
59 if (atomic_dec_and_test(&buf->count)) in tty_audit_buf_put()
60 tty_audit_buf_free(buf); in tty_audit_buf_put()
94 static void tty_audit_buf_push(struct tty_audit_buf *buf) in tty_audit_buf_push() argument
96 if (buf->valid == 0) in tty_audit_buf_push()
99 buf->valid = 0; in tty_audit_buf_push()
102 tty_audit_log("tty", buf->major, buf->minor, buf->data, buf->valid); in tty_audit_buf_push()
103 buf->valid = 0; in tty_audit_buf_push()
114 struct tty_audit_buf *buf; in tty_audit_exit() local
116 buf = current->signal->tty_audit_buf; in tty_audit_exit()
118 if (!buf) in tty_audit_exit()
121 mutex_lock(&buf->mutex); in tty_audit_exit()
122 tty_audit_buf_push(buf); in tty_audit_exit()
123 mutex_unlock(&buf->mutex); in tty_audit_exit()
125 tty_audit_buf_put(buf); in tty_audit_exit()
144 struct tty_audit_buf *buf; in tty_audit_tiocsti() local
150 buf = current->signal->tty_audit_buf; in tty_audit_tiocsti()
151 if (buf) in tty_audit_tiocsti()
152 atomic_inc(&buf->count); in tty_audit_tiocsti()
157 if (buf) { in tty_audit_tiocsti()
158 mutex_lock(&buf->mutex); in tty_audit_tiocsti()
159 if (buf->major == major && buf->minor == minor) in tty_audit_tiocsti()
160 tty_audit_buf_push(buf); in tty_audit_tiocsti()
161 mutex_unlock(&buf->mutex); in tty_audit_tiocsti()
162 tty_audit_buf_put(buf); in tty_audit_tiocsti()
183 struct tty_audit_buf *buf = ERR_PTR(-EPERM); in tty_audit_push_current() local
191 buf = tsk->signal->tty_audit_buf; in tty_audit_push_current()
192 if (buf) in tty_audit_push_current()
193 atomic_inc(&buf->count); in tty_audit_push_current()
201 if (!buf || IS_ERR(buf)) in tty_audit_push_current()
202 return PTR_ERR(buf); in tty_audit_push_current()
204 mutex_lock(&buf->mutex); in tty_audit_push_current()
205 tty_audit_buf_push(buf); in tty_audit_push_current()
206 mutex_unlock(&buf->mutex); in tty_audit_push_current()
208 tty_audit_buf_put(buf); in tty_audit_push_current()
222 struct tty_audit_buf *buf, *buf2; in tty_audit_buf_get() local
225 buf = NULL; in tty_audit_buf_get()
230 buf = current->signal->tty_audit_buf; in tty_audit_buf_get()
231 if (buf) { in tty_audit_buf_get()
232 atomic_inc(&buf->count); in tty_audit_buf_get()
248 buf = current->signal->tty_audit_buf; in tty_audit_buf_get()
249 if (!buf) { in tty_audit_buf_get()
251 buf = buf2; in tty_audit_buf_get()
254 atomic_inc(&buf->count); in tty_audit_buf_get()
260 return buf; in tty_audit_buf_get()
271 struct tty_audit_buf *buf; in tty_audit_add_data() local
289 buf = tty_audit_buf_get(tty, icanon); in tty_audit_add_data()
290 if (!buf) in tty_audit_add_data()
293 mutex_lock(&buf->mutex); in tty_audit_add_data()
296 if (buf->major != major || buf->minor != minor in tty_audit_add_data()
297 || buf->icanon != icanon) { in tty_audit_add_data()
298 tty_audit_buf_push(buf); in tty_audit_add_data()
299 buf->major = major; in tty_audit_add_data()
300 buf->minor = minor; in tty_audit_add_data()
301 buf->icanon = icanon; in tty_audit_add_data()
306 run = N_TTY_BUF_SIZE - buf->valid; in tty_audit_add_data()
309 memcpy(buf->data + buf->valid, data, run); in tty_audit_add_data()
310 buf->valid += run; in tty_audit_add_data()
313 if (buf->valid == N_TTY_BUF_SIZE) in tty_audit_add_data()
314 tty_audit_buf_push(buf); in tty_audit_add_data()
316 mutex_unlock(&buf->mutex); in tty_audit_add_data()
317 tty_audit_buf_put(buf); in tty_audit_add_data()
327 struct tty_audit_buf *buf; in tty_audit_push() local
335 buf = current->signal->tty_audit_buf; in tty_audit_push()
336 if (buf) in tty_audit_push()
337 atomic_inc(&buf->count); in tty_audit_push()
340 if (buf) { in tty_audit_push()
345 mutex_lock(&buf->mutex); in tty_audit_push()
346 if (buf->major == major && buf->minor == minor) in tty_audit_push()
347 tty_audit_buf_push(buf); in tty_audit_push()
348 mutex_unlock(&buf->mutex); in tty_audit_push()
349 tty_audit_buf_put(buf); in tty_audit_push()