[ It's Gaosheng's patch which triggers the warning but I
think it's
    actually the dereference which should be changed.  I've added Richard
    to the CC list. -dan ]
 Hi Gaosheng,
 url:   
https://github.com/0day-ci/linux/commits/Gaosheng-Cui/audit-return-early-...
 base:    d3134eb5de8546a214c028fb7195e764b89da7d4
 config: x86_64-randconfig-m001-20211012 (attached as .config)
 compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
 If you fix the issue, kindly add following tag as appropriate
 Reported-by: kernel test robot <lkp(a)intel.com>
 Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
 smatch warnings:
 kernel/auditsc.c:653 audit_filter_rules() error: we previously assumed 'ctx'
could be null (see line 473)
 vim +/ctx +653 kernel/auditsc.c
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  461  static int audit_filter_rules(struct
task_struct *tsk,
 93315ed6dd12da Amy Griffis        2006-02-07  462  			      struct audit_krule *rule,
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  463  			      struct audit_context *ctx,
 f368c07d7214a7 Amy Griffis        2006-04-07  464  			      struct audit_names *name,
 f562988350361b Tony Jones         2011-04-27  465  			      enum audit_state *state,
 f562988350361b Tony Jones         2011-04-27  466  			      bool task_creation)
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  467  {
 f562988350361b Tony Jones         2011-04-27  468  	const struct cred *cred;
 5195d8e217a786 Eric Paris         2012-01-03  469  	int i, need_sid = 1;
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  470  	u32 sid;
 8fae47705685fc Richard Guy Briggs 2016-11-20  471  	unsigned int sessionid;
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  472
 046a8e46eefb9d Gaosheng Cui       2021-10-12 @473  	if (ctx && rule->prio
<= ctx->prio)
                                                              ^^^
 Checked here.
 046a8e46eefb9d Gaosheng Cui       2021-10-12  474  		return 0;
 046a8e46eefb9d Gaosheng Cui       2021-10-12  475
 f562988350361b Tony Jones         2011-04-27  476  	cred =
rcu_dereference_check(tsk->cred, tsk == current || task_creation);
 f562988350361b Tony Jones         2011-04-27  477
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  478  	for (i = 0; i <
rule->field_count; i++) {
 93315ed6dd12da Amy Griffis        2006-02-07  479  		struct audit_field *f =
&rule->fields[i];
 5195d8e217a786 Eric Paris         2012-01-03  480  		struct audit_names *n;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  481  		int result = 0;
 f1dc4867ff41b7 Richard Guy Briggs 2013-12-11  482  		pid_t pid;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  483
 93315ed6dd12da Amy Griffis        2006-02-07  484  		switch (f->type) {
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  485  		case AUDIT_PID:
 fa2bea2f5cca5b Paul Moore         2016-08-30  486  			pid = task_tgid_nr(tsk);
 f1dc4867ff41b7 Richard Guy Briggs 2013-12-11  487  			result = audit_comparator(pid,
f->op, f->val);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  488  			break;
 3c66251e573219 Al Viro            2006-05-06  489  		case AUDIT_PPID:
 419c58f11fb732 Alexander Viro     2006-09-29  490  			if (ctx) {
 419c58f11fb732 Alexander Viro     2006-09-29  491  				if (!ctx->ppid)
 c92cdeb45eea38 Richard Guy Briggs 2013-12-10  492  					ctx->ppid =
task_ppid_nr(tsk);
 3c66251e573219 Al Viro            2006-05-06  493  				result =
audit_comparator(ctx->ppid, f->op, f->val);
 419c58f11fb732 Alexander Viro     2006-09-29  494  			}
 3c66251e573219 Al Viro            2006-05-06  495  			break;
 34d99af52ad40b Richard Guy Briggs 2015-08-05  496  		case AUDIT_EXE:
 34d99af52ad40b Richard Guy Briggs 2015-08-05  497  			result = audit_exe_compare(tsk,
rule->exe);
 23bcc480dac204 Ondrej Mosnáček    2018-04-09  498  			if (f->op == Audit_not_equal)
 23bcc480dac204 Ondrej Mosnáček    2018-04-09  499  				result = !result;
 34d99af52ad40b Richard Guy Briggs 2015-08-05  500  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  501  		case AUDIT_UID:
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  502  			result =
audit_uid_comparator(cred->uid, f->op, f->uid);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  503  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  504  		case AUDIT_EUID:
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  505  			result =
audit_uid_comparator(cred->euid, f->op, f->uid);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  506  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  507  		case AUDIT_SUID:
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  508  			result =
audit_uid_comparator(cred->suid, f->op, f->uid);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  509  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  510  		case AUDIT_FSUID:
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  511  			result =
audit_uid_comparator(cred->fsuid, f->op, f->uid);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  512  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  513  		case AUDIT_GID:
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  514  			result =
audit_gid_comparator(cred->gid, f->op, f->gid);
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  515  			if (f->op == Audit_equal) {
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  516  				if (!result)
 af85d1772e31fe Ondrej Mosnáček    2018-06-05  517  					result =
groups_search(cred->group_info, f->gid);
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  518  			} else if (f->op ==
Audit_not_equal) {
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  519  				if (result)
 af85d1772e31fe Ondrej Mosnáček    2018-06-05  520  					result =
!groups_search(cred->group_info, f->gid);
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  521  			}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  522  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  523  		case AUDIT_EGID:
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  524  			result =
audit_gid_comparator(cred->egid, f->op, f->gid);
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  525  			if (f->op == Audit_equal) {
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  526  				if (!result)
 af85d1772e31fe Ondrej Mosnáček    2018-06-05  527  					result =
groups_search(cred->group_info, f->gid);
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  528  			} else if (f->op ==
Audit_not_equal) {
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  529  				if (result)
 af85d1772e31fe Ondrej Mosnáček    2018-06-05  530  					result =
!groups_search(cred->group_info, f->gid);
 37eebe39c9731a Matvejchikov Ilya  2011-12-13  531  			}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  532  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  533  		case AUDIT_SGID:
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  534  			result =
audit_gid_comparator(cred->sgid, f->op, f->gid);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  535  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  536  		case AUDIT_FSGID:
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  537  			result =
audit_gid_comparator(cred->fsgid, f->op, f->gid);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  538  			break;
 8fae47705685fc Richard Guy Briggs 2016-11-20  539  		case AUDIT_SESSIONID:
 5b71388663c092 Ondrej Mosnáček    2018-05-17  540  			sessionid =
audit_get_sessionid(tsk);
 8fae47705685fc Richard Guy Briggs 2016-11-20  541  			result =
audit_comparator(sessionid, f->op, f->val);
 8fae47705685fc Richard Guy Briggs 2016-11-20  542  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  543  		case AUDIT_PERS:
 93315ed6dd12da Amy Griffis        2006-02-07  544  			result =
audit_comparator(tsk->personality, f->op, f->val);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  545  			break;
 2fd6f58ba6efc8 David Woodhouse    2005-04-29  546  		case AUDIT_ARCH:
 2fd6f58ba6efc8 David Woodhouse    2005-04-29  547  			if (ctx)
 93315ed6dd12da Amy Griffis        2006-02-07  548  				result =
audit_comparator(ctx->arch, f->op, f->val);
 2fd6f58ba6efc8 David Woodhouse    2005-04-29  549  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  550
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  551  		case AUDIT_EXIT:
 ba59eae7238572 Alex Shi           2020-11-06  552  			if (ctx &&
ctx->return_valid != AUDITSC_INVALID)
 93315ed6dd12da Amy Griffis        2006-02-07  553  				result =
audit_comparator(ctx->return_code, f->op, f->val);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  554  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  555  		case AUDIT_SUCCESS:
 ba59eae7238572 Alex Shi           2020-11-06  556  			if (ctx &&
ctx->return_valid != AUDITSC_INVALID) {
 93315ed6dd12da Amy Griffis        2006-02-07  557  				if (f->val)
 93315ed6dd12da Amy Griffis        2006-02-07  558  					result =
audit_comparator(ctx->return_valid, f->op, AUDITSC_SUCCESS);
 b01f2cc1c37ac3 David Woodhouse    2005-08-27  559  				else
 93315ed6dd12da Amy Griffis        2006-02-07  560  					result =
audit_comparator(ctx->return_valid, f->op, AUDITSC_FAILURE);
 b01f2cc1c37ac3 David Woodhouse    2005-08-27  561  			}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  562  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  563  		case AUDIT_DEVMAJOR:
 16c174bd95cb07 Eric Paris         2012-01-03  564  			if (name) {
 16c174bd95cb07 Eric Paris         2012-01-03  565  				if
(audit_comparator(MAJOR(name->dev), f->op, f->val) ||
 16c174bd95cb07 Eric Paris         2012-01-03  566  				   
audit_comparator(MAJOR(name->rdev), f->op, f->val))
 16c174bd95cb07 Eric Paris         2012-01-03  567  					++result;
 16c174bd95cb07 Eric Paris         2012-01-03  568  			} else if (ctx) {
 5195d8e217a786 Eric Paris         2012-01-03  569  				list_for_each_entry(n,
&ctx->names_list, list) {
 16c174bd95cb07 Eric Paris         2012-01-03  570  					if
(audit_comparator(MAJOR(n->dev), f->op, f->val) ||
 16c174bd95cb07 Eric Paris         2012-01-03  571  					   
audit_comparator(MAJOR(n->rdev), f->op, f->val)) {
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  572  						++result;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  573  						break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  574  					}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  575  				}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  576  			}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  577  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  578  		case AUDIT_DEVMINOR:
 16c174bd95cb07 Eric Paris         2012-01-03  579  			if (name) {
 16c174bd95cb07 Eric Paris         2012-01-03  580  				if
(audit_comparator(MINOR(name->dev), f->op, f->val) ||
 16c174bd95cb07 Eric Paris         2012-01-03  581  				   
audit_comparator(MINOR(name->rdev), f->op, f->val))
 16c174bd95cb07 Eric Paris         2012-01-03  582  					++result;
 16c174bd95cb07 Eric Paris         2012-01-03  583  			} else if (ctx) {
 5195d8e217a786 Eric Paris         2012-01-03  584  				list_for_each_entry(n,
&ctx->names_list, list) {
 16c174bd95cb07 Eric Paris         2012-01-03  585  					if
(audit_comparator(MINOR(n->dev), f->op, f->val) ||
 16c174bd95cb07 Eric Paris         2012-01-03  586  					   
audit_comparator(MINOR(n->rdev), f->op, f->val)) {
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  587  						++result;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  588  						break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  589  					}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  590  				}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  591  			}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  592  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  593  		case AUDIT_INODE:
 f368c07d7214a7 Amy Griffis        2006-04-07  594  			if (name)
 db510fc5cd9b9d Richard Guy Briggs 2013-07-04  595  				result =
audit_comparator(name->ino, f->op, f->val);
 f368c07d7214a7 Amy Griffis        2006-04-07  596  			else if (ctx) {
 5195d8e217a786 Eric Paris         2012-01-03  597  				list_for_each_entry(n,
&ctx->names_list, list) {
 5195d8e217a786 Eric Paris         2012-01-03  598  					if (audit_comparator(n->ino,
f->op, f->val)) {
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  599  						++result;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  600  						break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  601  					}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  602  				}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  603  			}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  604  			break;
 efaffd6e441786 Eric Paris         2012-01-03  605  		case AUDIT_OBJ_UID:
 efaffd6e441786 Eric Paris         2012-01-03  606  			if (name) {
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  607  				result =
audit_uid_comparator(name->uid, f->op, f->uid);
 efaffd6e441786 Eric Paris         2012-01-03  608  			} else if (ctx) {
 efaffd6e441786 Eric Paris         2012-01-03  609  				list_for_each_entry(n,
&ctx->names_list, list) {
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  610  					if
(audit_uid_comparator(n->uid, f->op, f->uid)) {
 efaffd6e441786 Eric Paris         2012-01-03  611  						++result;
 efaffd6e441786 Eric Paris         2012-01-03  612  						break;
 efaffd6e441786 Eric Paris         2012-01-03  613  					}
 efaffd6e441786 Eric Paris         2012-01-03  614  				}
 efaffd6e441786 Eric Paris         2012-01-03  615  			}
 efaffd6e441786 Eric Paris         2012-01-03  616  			break;
 54d3218b31aee5 Eric Paris         2012-01-03  617  		case AUDIT_OBJ_GID:
 54d3218b31aee5 Eric Paris         2012-01-03  618  			if (name) {
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  619  				result =
audit_gid_comparator(name->gid, f->op, f->gid);
 54d3218b31aee5 Eric Paris         2012-01-03  620  			} else if (ctx) {
 54d3218b31aee5 Eric Paris         2012-01-03  621  				list_for_each_entry(n,
&ctx->names_list, list) {
 ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  622  					if
(audit_gid_comparator(n->gid, f->op, f->gid)) {
 54d3218b31aee5 Eric Paris         2012-01-03  623  						++result;
 54d3218b31aee5 Eric Paris         2012-01-03  624  						break;
 54d3218b31aee5 Eric Paris         2012-01-03  625  					}
 54d3218b31aee5 Eric Paris         2012-01-03  626  				}
 54d3218b31aee5 Eric Paris         2012-01-03  627  			}
 54d3218b31aee5 Eric Paris         2012-01-03  628  			break;
 f368c07d7214a7 Amy Griffis        2006-04-07  629  		case AUDIT_WATCH:
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  630  			if (name) {
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  631  				result =
audit_watch_compare(rule->watch,
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  632  							     name->ino,
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  633  							     name->dev);
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  634  				if (f->op == Audit_not_equal)
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  635  					result = !result;
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  636  			}
 f368c07d7214a7 Amy Griffis        2006-04-07  637  			break;
 74c3cbe33bc077 Al Viro            2007-07-22  638  		case AUDIT_DIR:
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  639  			if (ctx) {
 74c3cbe33bc077 Al Viro            2007-07-22  640  				result = match_tree_refs(ctx,
rule->tree);
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  641  				if (f->op == Audit_not_equal)
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  642  					result = !result;
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  643  			}
 74c3cbe33bc077 Al Viro            2007-07-22  644  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  645  		case AUDIT_LOGINUID:
 38f80590486e38 Richard Guy Briggs 2018-05-16  646  			result =
audit_uid_comparator(audit_get_loginuid(tsk),
 38f80590486e38 Richard Guy Briggs 2018-05-16  647  						      f->op, f->uid);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  648  			break;
 780a7654cee8d6 Eric W. Biederman  2013-04-09  649  		case AUDIT_LOGINUID_SET:
 780a7654cee8d6 Eric W. Biederman  2013-04-09  650  			result =
audit_comparator(audit_loginuid_set(tsk), f->op, f->val);
 780a7654cee8d6 Eric W. Biederman  2013-04-09  651  			break;
 bf361231c295d9 Richard Guy Briggs 2019-05-09  652  		case AUDIT_SADDR_FAM:
 bf361231c295d9 Richard Guy Briggs 2019-05-09 @653  			if (ctx->sockaddr)
                                                                             
^^^^^^^^^^^^^
 Everywhere else checks if "ctx" is NULL before dereferencing it.
 bf361231c295d9 Richard Guy Briggs 2019-05-09  654  				result =
audit_comparator(ctx->sockaddr->ss_family,
 bf361231c295d9 Richard Guy Briggs 2019-05-09  655  							  f->op, f->val);
 bf361231c295d9 Richard Guy Briggs 2019-05-09  656  			break;
 3a6b9f85c641a3 Darrel Goeddel     2006-06-29  657  		case AUDIT_SUBJ_USER:
 3a6b9f85c641a3 Darrel Goeddel     2006-06-29  658  		case AUDIT_SUBJ_ROLE:
 3a6b9f85c641a3 Darrel Goeddel     2006-06-29  659  		case AUDIT_SUBJ_TYPE:
 3a6b9f85c641a3 Darrel Goeddel     2006-06-29  660  		case AUDIT_SUBJ_SEN:
 3a6b9f85c641a3 Darrel Goeddel     2006-06-29  661  		case AUDIT_SUBJ_CLR:
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  662  			/* NOTE: this may return negative
values indicating
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  663  			   a temporary error.  We simply
treat this as a
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  664  			   match for now to avoid losing
information that
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  665  			   may be wanted.   An error
message will also be
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  666  			   logged upon error */
 04305e4aff8b05 Ahmed S. Darwish   2008-04-19  667  			if (f->lsm_rule) {
 2ad312d2093ae5 Steve Grubb        2006-04-11  668  				if (need_sid) {
 4ebd7651bfc899 Paul Moore         2021-02-19  669  					security_task_getsecid_subj(tsk,
&sid);
 2ad312d2093ae5 Steve Grubb        2006-04-11  670  					need_sid = 0;
 2ad312d2093ae5 Steve Grubb        2006-04-11  671  				}
 d7a96f3a1ae279 Ahmed S. Darwish   2008-03-01  672  				result =
security_audit_rule_match(sid, f->type,
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  673  								   f->op,
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  674  								   f->lsm_rule);
 2ad312d2093ae5 Steve Grubb        2006-04-11  675  			}
 3dc7e3153eddfc Darrel Goeddel     2006-03-10  676  			break;
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  677  		case AUDIT_OBJ_USER:
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  678  		case AUDIT_OBJ_ROLE:
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  679  		case AUDIT_OBJ_TYPE:
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  680  		case AUDIT_OBJ_LEV_LOW:
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  681  		case AUDIT_OBJ_LEV_HIGH:
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  682  			/* The above note for
AUDIT_SUBJ_USER...AUDIT_SUBJ_CLR
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  683  			   also applies here */
 04305e4aff8b05 Ahmed S. Darwish   2008-04-19  684  			if (f->lsm_rule) {
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  685  				/* Find files that match */
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  686  				if (name) {
 d7a96f3a1ae279 Ahmed S. Darwish   2008-03-01  687  					result =
security_audit_rule_match(
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  688  								name->osid,
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  689  								f->type,
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  690  								f->op,
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  691  								f->lsm_rule);
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  692  				} else if (ctx) {
 5195d8e217a786 Eric Paris         2012-01-03  693  					list_for_each_entry(n,
&ctx->names_list, list) {
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  694  						if (security_audit_rule_match(
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  695  								n->osid,
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  696  								f->type,
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  697  								f->op,
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  698  								f->lsm_rule)) {
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  699  							++result;
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  700  							break;
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  701  						}
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  702  					}
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  703  				}
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  704  				/* Find ipc objects that match */
 a33e6751003c5a Al Viro            2008-12-10  705  				if (!ctx || ctx->type !=
AUDIT_IPC)
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  706  					break;
 a33e6751003c5a Al Viro            2008-12-10  707  				if
(security_audit_rule_match(ctx->ipc.osid,
 a33e6751003c5a Al Viro            2008-12-10  708  							      f->type, f->op,
 90462a5bd30c6e Richard Guy Briggs 2019-01-31  709  							      f->lsm_rule))
 a33e6751003c5a Al Viro            2008-12-10  710  					++result;
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  711  			}
 6e5a2d1d325968 Darrel Goeddel     2006-06-29  712  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  713  		case AUDIT_ARG0:
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  714  		case AUDIT_ARG1:
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  715  		case AUDIT_ARG2:
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  716  		case AUDIT_ARG3:
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  717  			if (ctx)
 93315ed6dd12da Amy Griffis        2006-02-07  718  				result =
audit_comparator(ctx->argv[f->type-AUDIT_ARG0], f->op, f->val);
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  719  			break;
 5adc8a6adc91c4 Amy Griffis        2006-06-14  720  		case AUDIT_FILTERKEY:
 5adc8a6adc91c4 Amy Griffis        2006-06-14  721  			/* ignore this field for filtering
*/
 5adc8a6adc91c4 Amy Griffis        2006-06-14  722  			result = 1;
 5adc8a6adc91c4 Amy Griffis        2006-06-14  723  			break;
 55669bfa141b48 Al Viro            2006-08-31  724  		case AUDIT_PERM:
 55669bfa141b48 Al Viro            2006-08-31  725  			result = audit_match_perm(ctx,
f->val);
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  726  			if (f->op == Audit_not_equal)
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  727  				result = !result;
 55669bfa141b48 Al Viro            2006-08-31  728  			break;
 8b67dca9420474 Al Viro            2008-04-28  729  		case AUDIT_FILETYPE:
 8b67dca9420474 Al Viro            2008-04-28  730  			result = audit_match_filetype(ctx,
f->val);
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  731  			if (f->op == Audit_not_equal)
 0223fad3c98a95 Richard Guy Briggs 2019-05-22  732  				result = !result;
 8b67dca9420474 Al Viro            2008-04-28  733  			break;
 02d86a568c6d2d Eric Paris         2012-01-03  734  		case AUDIT_FIELD_COMPARE:
 02d86a568c6d2d Eric Paris         2012-01-03  735  			result = audit_field_compare(tsk,
cred, f, ctx, name);
 02d86a568c6d2d Eric Paris         2012-01-03  736  			break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  737  		}
 f562988350361b Tony Jones         2011-04-27  738  		if (!result)
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  739  			return 0;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  740  	}
 0590b9335a1c72 Al Viro            2008-12-14  741
 0590b9335a1c72 Al Viro            2008-12-14  742  	if (ctx) {
 0590b9335a1c72 Al Viro            2008-12-14  743  		if (rule->filterkey) {
 0590b9335a1c72 Al Viro            2008-12-14  744  			kfree(ctx->filterkey);
 5adc8a6adc91c4 Amy Griffis        2006-06-14  745  			ctx->filterkey =
kstrdup(rule->filterkey, GFP_ATOMIC);
 0590b9335a1c72 Al Viro            2008-12-14  746  		}
 0590b9335a1c72 Al Viro            2008-12-14  747  		ctx->prio = rule->prio;
 0590b9335a1c72 Al Viro            2008-12-14  748  	}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  749  	switch (rule->action) {
 66b12abc846d31 Paul Moore         2016-06-16  750  	case AUDIT_NEVER:
 619ed58ac4e2fb Sergey Nazarov     2021-06-08  751  		*state = AUDIT_STATE_DISABLED;
 66b12abc846d31 Paul Moore         2016-06-16  752  		break;
 66b12abc846d31 Paul Moore         2016-06-16  753  	case AUDIT_ALWAYS:
 619ed58ac4e2fb Sergey Nazarov     2021-06-08  754  		*state = AUDIT_STATE_RECORD;
 66b12abc846d31 Paul Moore         2016-06-16  755  		break;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  756  	}
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  757  	return 1;
 ^1da177e4c3f41 Linus Torvalds     2005-04-16  758  }
 ---
 0-DAY CI Kernel Test Service, Intel Corporation
 
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
 .