Lines Matching refs:buf

25 	struct tty_audit_buf *buf;  in tty_audit_buf_ref()  local
27 buf = current->signal->tty_audit_buf; in tty_audit_buf_ref()
28 WARN_ON(buf == ERR_PTR(-ESRCH)); in tty_audit_buf_ref()
29 return buf; in tty_audit_buf_ref()
34 struct tty_audit_buf *buf; in tty_audit_buf_alloc() local
36 buf = kzalloc(sizeof(*buf), GFP_KERNEL); in tty_audit_buf_alloc()
37 if (!buf) in tty_audit_buf_alloc()
40 buf->data = kmalloc(N_TTY_BUF_SIZE, GFP_KERNEL); in tty_audit_buf_alloc()
41 if (!buf->data) in tty_audit_buf_alloc()
44 mutex_init(&buf->mutex); in tty_audit_buf_alloc()
46 return buf; in tty_audit_buf_alloc()
49 kfree(buf); in tty_audit_buf_alloc()
54 static void tty_audit_buf_free(struct tty_audit_buf *buf) in tty_audit_buf_free() argument
56 WARN_ON(buf->valid != 0); in tty_audit_buf_free()
57 kfree(buf->data); in tty_audit_buf_free()
58 kfree(buf); in tty_audit_buf_free()
91 static void tty_audit_buf_push(struct tty_audit_buf *buf) in tty_audit_buf_push() argument
93 if (buf->valid == 0) in tty_audit_buf_push()
96 buf->valid = 0; in tty_audit_buf_push()
99 tty_audit_log("tty", buf->dev, buf->data, buf->valid); in tty_audit_buf_push()
100 buf->valid = 0; in tty_audit_buf_push()
114 struct tty_audit_buf *buf; in tty_audit_exit() local
116 buf = xchg(&current->signal->tty_audit_buf, ERR_PTR(-ESRCH)); in tty_audit_exit()
117 if (!buf) in tty_audit_exit()
120 tty_audit_buf_push(buf); in tty_audit_exit()
121 tty_audit_buf_free(buf); in tty_audit_exit()
156 struct tty_audit_buf *buf; in tty_audit_push() local
161 buf = tty_audit_buf_ref(); in tty_audit_push()
162 if (!IS_ERR_OR_NULL(buf)) { in tty_audit_push()
163 mutex_lock(&buf->mutex); in tty_audit_push()
164 tty_audit_buf_push(buf); in tty_audit_push()
165 mutex_unlock(&buf->mutex); in tty_audit_push()
179 struct tty_audit_buf *buf; in tty_audit_buf_get() local
181 buf = tty_audit_buf_ref(); in tty_audit_buf_get()
182 if (buf) in tty_audit_buf_get()
183 return buf; in tty_audit_buf_get()
185 buf = tty_audit_buf_alloc(); in tty_audit_buf_get()
186 if (buf == NULL) { in tty_audit_buf_get()
192 if (cmpxchg(&current->signal->tty_audit_buf, NULL, buf) != NULL) in tty_audit_buf_get()
193 tty_audit_buf_free(buf); in tty_audit_buf_get()
205 struct tty_audit_buf *buf; in tty_audit_add_data() local
224 buf = tty_audit_buf_get(); in tty_audit_add_data()
225 if (IS_ERR_OR_NULL(buf)) in tty_audit_add_data()
228 mutex_lock(&buf->mutex); in tty_audit_add_data()
230 if (buf->dev != dev || buf->icanon != icanon) { in tty_audit_add_data()
231 tty_audit_buf_push(buf); in tty_audit_add_data()
232 buf->dev = dev; in tty_audit_add_data()
233 buf->icanon = icanon; in tty_audit_add_data()
238 run = N_TTY_BUF_SIZE - buf->valid; in tty_audit_add_data()
241 memcpy(buf->data + buf->valid, data, run); in tty_audit_add_data()
242 buf->valid += run; in tty_audit_add_data()
245 if (buf->valid == N_TTY_BUF_SIZE) in tty_audit_add_data()
246 tty_audit_buf_push(buf); in tty_audit_add_data()
248 mutex_unlock(&buf->mutex); in tty_audit_add_data()