[PATCH] don't bother with aux entires for dummy context

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 5ac3a9c2 d51374ad

+16 -16
+2 -2
fs/namei.c
··· 159 #ifdef CONFIG_AUDITSYSCALL 160 void putname(const char *name) 161 { 162 - if (unlikely(current->audit_context)) 163 audit_putname(name); 164 else 165 __putname(name); ··· 1125 retval = link_path_walk(name, nd); 1126 out: 1127 if (likely(retval == 0)) { 1128 - if (unlikely(current->audit_context && nd && nd->dentry && 1129 nd->dentry->d_inode)) 1130 audit_inode(name, nd->dentry->d_inode); 1131 }
··· 159 #ifdef CONFIG_AUDITSYSCALL 160 void putname(const char *name) 161 { 162 + if (unlikely(!audit_dummy_context())) 163 audit_putname(name); 164 else 165 __putname(name); ··· 1125 retval = link_path_walk(name, nd); 1126 out: 1127 if (likely(retval == 0)) { 1128 + if (unlikely(!audit_dummy_context() && nd && nd->dentry && 1129 nd->dentry->d_inode)) 1130 audit_inode(name, nd->dentry->d_inode); 1131 }
+11 -11
include/linux/audit.h
··· 336 } 337 static inline void audit_getname(const char *name) 338 { 339 - if (unlikely(current->audit_context)) 340 __audit_getname(name); 341 } 342 static inline void audit_inode(const char *name, const struct inode *inode) { 343 - if (unlikely(current->audit_context)) 344 __audit_inode(name, inode); 345 } 346 static inline void audit_inode_child(const char *dname, 347 const struct inode *inode, 348 const struct inode *parent) { 349 - if (unlikely(current->audit_context)) 350 __audit_inode_child(dname, inode, parent); 351 } 352 static inline void audit_inode_update(const struct inode *inode) { 353 - if (unlikely(current->audit_context)) 354 __audit_inode_update(inode); 355 } 356 ··· 375 376 static inline int audit_ipc_obj(struct kern_ipc_perm *ipcp) 377 { 378 - if (unlikely(current->audit_context)) 379 return __audit_ipc_obj(ipcp); 380 return 0; 381 } 382 static inline int audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode) 383 { 384 - if (unlikely(current->audit_context)) 385 return __audit_ipc_set_perm(qbytes, uid, gid, mode); 386 return 0; 387 } 388 static inline int audit_mq_open(int oflag, mode_t mode, struct mq_attr __user *u_attr) 389 { 390 - if (unlikely(current->audit_context)) 391 return __audit_mq_open(oflag, mode, u_attr); 392 return 0; 393 } 394 static inline int audit_mq_timedsend(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec __user *u_abs_timeout) 395 { 396 - if (unlikely(current->audit_context)) 397 return __audit_mq_timedsend(mqdes, msg_len, msg_prio, u_abs_timeout); 398 return 0; 399 } 400 static inline int audit_mq_timedreceive(mqd_t mqdes, size_t msg_len, unsigned int __user *u_msg_prio, const struct timespec __user *u_abs_timeout) 401 { 402 - if (unlikely(current->audit_context)) 403 return __audit_mq_timedreceive(mqdes, msg_len, u_msg_prio, u_abs_timeout); 404 return 0; 405 } 406 static inline int audit_mq_notify(mqd_t mqdes, const struct sigevent __user *u_notification) 407 { 408 - if (unlikely(current->audit_context)) 409 return __audit_mq_notify(mqdes, u_notification); 410 return 0; 411 } 412 static inline int audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat) 413 { 414 - if (unlikely(current->audit_context)) 415 return __audit_mq_getsetattr(mqdes, mqstat); 416 return 0; 417 }
··· 336 } 337 static inline void audit_getname(const char *name) 338 { 339 + if (unlikely(!audit_dummy_context())) 340 __audit_getname(name); 341 } 342 static inline void audit_inode(const char *name, const struct inode *inode) { 343 + if (unlikely(!audit_dummy_context())) 344 __audit_inode(name, inode); 345 } 346 static inline void audit_inode_child(const char *dname, 347 const struct inode *inode, 348 const struct inode *parent) { 349 + if (unlikely(!audit_dummy_context())) 350 __audit_inode_child(dname, inode, parent); 351 } 352 static inline void audit_inode_update(const struct inode *inode) { 353 + if (unlikely(!audit_dummy_context())) 354 __audit_inode_update(inode); 355 } 356 ··· 375 376 static inline int audit_ipc_obj(struct kern_ipc_perm *ipcp) 377 { 378 + if (unlikely(!audit_dummy_context())) 379 return __audit_ipc_obj(ipcp); 380 return 0; 381 } 382 static inline int audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode) 383 { 384 + if (unlikely(!audit_dummy_context())) 385 return __audit_ipc_set_perm(qbytes, uid, gid, mode); 386 return 0; 387 } 388 static inline int audit_mq_open(int oflag, mode_t mode, struct mq_attr __user *u_attr) 389 { 390 + if (unlikely(!audit_dummy_context())) 391 return __audit_mq_open(oflag, mode, u_attr); 392 return 0; 393 } 394 static inline int audit_mq_timedsend(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec __user *u_abs_timeout) 395 { 396 + if (unlikely(!audit_dummy_context())) 397 return __audit_mq_timedsend(mqdes, msg_len, msg_prio, u_abs_timeout); 398 return 0; 399 } 400 static inline int audit_mq_timedreceive(mqd_t mqdes, size_t msg_len, unsigned int __user *u_msg_prio, const struct timespec __user *u_abs_timeout) 401 { 402 + if (unlikely(!audit_dummy_context())) 403 return __audit_mq_timedreceive(mqdes, msg_len, u_msg_prio, u_abs_timeout); 404 return 0; 405 } 406 static inline int audit_mq_notify(mqd_t mqdes, const struct sigevent __user *u_notification) 407 { 408 + if (unlikely(!audit_dummy_context())) 409 return __audit_mq_notify(mqdes, u_notification); 410 return 0; 411 } 412 static inline int audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat) 413 { 414 + if (unlikely(!audit_dummy_context())) 415 return __audit_mq_getsetattr(mqdes, mqstat); 416 return 0; 417 }
+3 -3
kernel/auditsc.c
··· 1676 unsigned long p, next; 1677 void *to; 1678 1679 - if (likely(!audit_enabled || !context)) 1680 return 0; 1681 1682 ax = kmalloc(sizeof(*ax) + PAGE_SIZE * MAX_ARG_PAGES - bprm->p, ··· 1714 struct audit_aux_data_socketcall *ax; 1715 struct audit_context *context = current->audit_context; 1716 1717 - if (likely(!context)) 1718 return 0; 1719 1720 ax = kmalloc(sizeof(*ax) + nargs * sizeof(unsigned long), GFP_KERNEL); ··· 1742 struct audit_aux_data_sockaddr *ax; 1743 struct audit_context *context = current->audit_context; 1744 1745 - if (likely(!context)) 1746 return 0; 1747 1748 ax = kmalloc(sizeof(*ax) + len, GFP_KERNEL);
··· 1676 unsigned long p, next; 1677 void *to; 1678 1679 + if (likely(!audit_enabled || !context || context->dummy)) 1680 return 0; 1681 1682 ax = kmalloc(sizeof(*ax) + PAGE_SIZE * MAX_ARG_PAGES - bprm->p, ··· 1714 struct audit_aux_data_socketcall *ax; 1715 struct audit_context *context = current->audit_context; 1716 1717 + if (likely(!context || context->dummy)) 1718 return 0; 1719 1720 ax = kmalloc(sizeof(*ax) + nargs * sizeof(unsigned long), GFP_KERNEL); ··· 1742 struct audit_aux_data_sockaddr *ax; 1743 struct audit_context *context = current->audit_context; 1744 1745 + if (likely(!context || context->dummy)) 1746 return 0; 1747 1748 ax = kmalloc(sizeof(*ax) + len, GFP_KERNEL);