Lines Matching refs:buf
24 struct tty_audit_buf *buf; in tty_audit_buf_ref() local
26 buf = current->signal->tty_audit_buf; in tty_audit_buf_ref()
27 WARN_ON(buf == ERR_PTR(-ESRCH)); in tty_audit_buf_ref()
28 return buf; in tty_audit_buf_ref()
33 struct tty_audit_buf *buf; in tty_audit_buf_alloc() local
35 buf = kmalloc(sizeof(*buf), GFP_KERNEL); in tty_audit_buf_alloc()
36 if (!buf) in tty_audit_buf_alloc()
38 buf->data = kmalloc(N_TTY_BUF_SIZE, GFP_KERNEL); in tty_audit_buf_alloc()
39 if (!buf->data) in tty_audit_buf_alloc()
41 mutex_init(&buf->mutex); in tty_audit_buf_alloc()
42 buf->dev = MKDEV(0, 0); in tty_audit_buf_alloc()
43 buf->icanon = 0; in tty_audit_buf_alloc()
44 buf->valid = 0; in tty_audit_buf_alloc()
45 return buf; in tty_audit_buf_alloc()
48 kfree(buf); in tty_audit_buf_alloc()
53 static void tty_audit_buf_free(struct tty_audit_buf *buf) in tty_audit_buf_free() argument
55 WARN_ON(buf->valid != 0); in tty_audit_buf_free()
56 kfree(buf->data); in tty_audit_buf_free()
57 kfree(buf); in tty_audit_buf_free()
90 static void tty_audit_buf_push(struct tty_audit_buf *buf) in tty_audit_buf_push() argument
92 if (buf->valid == 0) in tty_audit_buf_push()
95 buf->valid = 0; in tty_audit_buf_push()
98 tty_audit_log("tty", buf->dev, buf->data, buf->valid); in tty_audit_buf_push()
99 buf->valid = 0; in tty_audit_buf_push()
113 struct tty_audit_buf *buf; in tty_audit_exit() local
115 buf = xchg(¤t->signal->tty_audit_buf, ERR_PTR(-ESRCH)); in tty_audit_exit()
116 if (!buf) in tty_audit_exit()
119 tty_audit_buf_push(buf); in tty_audit_exit()
120 tty_audit_buf_free(buf); in tty_audit_exit()
155 struct tty_audit_buf *buf; in tty_audit_push() local
160 buf = tty_audit_buf_ref(); in tty_audit_push()
161 if (!IS_ERR_OR_NULL(buf)) { in tty_audit_push()
162 mutex_lock(&buf->mutex); in tty_audit_push()
163 tty_audit_buf_push(buf); in tty_audit_push()
164 mutex_unlock(&buf->mutex); in tty_audit_push()
178 struct tty_audit_buf *buf; in tty_audit_buf_get() local
180 buf = tty_audit_buf_ref(); in tty_audit_buf_get()
181 if (buf) in tty_audit_buf_get()
182 return buf; in tty_audit_buf_get()
184 buf = tty_audit_buf_alloc(); in tty_audit_buf_get()
185 if (buf == NULL) { in tty_audit_buf_get()
191 if (cmpxchg(¤t->signal->tty_audit_buf, NULL, buf) != NULL) in tty_audit_buf_get()
192 tty_audit_buf_free(buf); in tty_audit_buf_get()
203 struct tty_audit_buf *buf; in tty_audit_add_data() local
222 buf = tty_audit_buf_get(); in tty_audit_add_data()
223 if (IS_ERR_OR_NULL(buf)) in tty_audit_add_data()
226 mutex_lock(&buf->mutex); in tty_audit_add_data()
228 if (buf->dev != dev || buf->icanon != icanon) { in tty_audit_add_data()
229 tty_audit_buf_push(buf); in tty_audit_add_data()
230 buf->dev = dev; in tty_audit_add_data()
231 buf->icanon = icanon; in tty_audit_add_data()
236 run = N_TTY_BUF_SIZE - buf->valid; in tty_audit_add_data()
239 memcpy(buf->data + buf->valid, data, run); in tty_audit_add_data()
240 buf->valid += run; in tty_audit_add_data()
243 if (buf->valid == N_TTY_BUF_SIZE) in tty_audit_add_data()
244 tty_audit_buf_push(buf); in tty_audit_add_data()
246 mutex_unlock(&buf->mutex); in tty_audit_add_data()