Lines Matching refs:buf

27 	struct tty_audit_buf *buf;  in tty_audit_buf_ref()  local
29 buf = current->signal->tty_audit_buf; in tty_audit_buf_ref()
30 WARN_ON(buf == ERR_PTR(-ESRCH)); in tty_audit_buf_ref()
31 return buf; in tty_audit_buf_ref()
36 struct tty_audit_buf *buf; in tty_audit_buf_alloc() local
38 buf = kzalloc(sizeof(*buf), GFP_KERNEL); in tty_audit_buf_alloc()
39 if (!buf) in tty_audit_buf_alloc()
42 buf->data = kmalloc(TTY_AUDIT_BUF_SIZE, GFP_KERNEL); in tty_audit_buf_alloc()
43 if (!buf->data) in tty_audit_buf_alloc()
46 mutex_init(&buf->mutex); in tty_audit_buf_alloc()
48 return buf; in tty_audit_buf_alloc()
51 kfree(buf); in tty_audit_buf_alloc()
56 static void tty_audit_buf_free(struct tty_audit_buf *buf) in tty_audit_buf_free() argument
58 WARN_ON(buf->valid != 0); in tty_audit_buf_free()
59 kfree(buf->data); in tty_audit_buf_free()
60 kfree(buf); in tty_audit_buf_free()
93 static void tty_audit_buf_push(struct tty_audit_buf *buf) in tty_audit_buf_push() argument
95 if (buf->valid == 0) in tty_audit_buf_push()
98 buf->valid = 0; in tty_audit_buf_push()
101 tty_audit_log("tty", buf->dev, buf->data, buf->valid); in tty_audit_buf_push()
102 buf->valid = 0; in tty_audit_buf_push()
116 struct tty_audit_buf *buf; in tty_audit_exit() local
118 buf = xchg(&current->signal->tty_audit_buf, ERR_PTR(-ESRCH)); in tty_audit_exit()
119 if (!buf) in tty_audit_exit()
122 tty_audit_buf_push(buf); in tty_audit_exit()
123 tty_audit_buf_free(buf); in tty_audit_exit()
158 struct tty_audit_buf *buf; in tty_audit_push() local
163 buf = tty_audit_buf_ref(); in tty_audit_push()
164 if (!IS_ERR_OR_NULL(buf)) { in tty_audit_push()
165 mutex_lock(&buf->mutex); in tty_audit_push()
166 tty_audit_buf_push(buf); in tty_audit_push()
167 mutex_unlock(&buf->mutex); in tty_audit_push()
181 struct tty_audit_buf *buf; in tty_audit_buf_get() local
183 buf = tty_audit_buf_ref(); in tty_audit_buf_get()
184 if (buf) in tty_audit_buf_get()
185 return buf; in tty_audit_buf_get()
187 buf = tty_audit_buf_alloc(); in tty_audit_buf_get()
188 if (buf == NULL) { in tty_audit_buf_get()
194 if (cmpxchg(&current->signal->tty_audit_buf, NULL, buf) != NULL) in tty_audit_buf_get()
195 tty_audit_buf_free(buf); in tty_audit_buf_get()
207 struct tty_audit_buf *buf; in tty_audit_add_data() local
226 buf = tty_audit_buf_get(); in tty_audit_add_data()
227 if (IS_ERR_OR_NULL(buf)) in tty_audit_add_data()
230 mutex_lock(&buf->mutex); in tty_audit_add_data()
232 if (buf->dev != dev || buf->icanon != icanon) { in tty_audit_add_data()
233 tty_audit_buf_push(buf); in tty_audit_add_data()
234 buf->dev = dev; in tty_audit_add_data()
235 buf->icanon = icanon; in tty_audit_add_data()
240 run = TTY_AUDIT_BUF_SIZE - buf->valid; in tty_audit_add_data()
243 memcpy(buf->data + buf->valid, data, run); in tty_audit_add_data()
244 buf->valid += run; in tty_audit_add_data()
247 if (buf->valid == TTY_AUDIT_BUF_SIZE) in tty_audit_add_data()
248 tty_audit_buf_push(buf); in tty_audit_add_data()
250 mutex_unlock(&buf->mutex); in tty_audit_add_data()