From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4811064238563497449==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: [intel-linux-intel-lts:4.19/android_r 19120/22631] security/security.c:381:5: warning: no previous prototype for 'lsm_file_alloc' Date: Sat, 10 Apr 2021 15:02:51 +0800 Message-ID: <202104101544.XYcHUX95-lkp@intel.com> List-Id: --===============4811064238563497449== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable tree: https://github.com/intel/linux-intel-lts.git 4.19/android_r head: 072f407465e8e25a3c2c22590e1ab72ccf335151 commit: b652a52d36a85d1b731921ba08e701d7150ce200 [19120/22631] Merge branch= 'aosp/android-4.19-stable' into android_r config: m68k-randconfig-r036-20210409 (attached as .config) compiler: m68k-linux-gcc (GCC) 9.3.0 reproduce (this is a W=3D1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/= make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel/linux-intel-lts/commit/b652a52d36a85d1b7= 31921ba08e701d7150ce200 git remote add intel-linux-intel-lts https://github.com/intel/linux= -intel-lts.git git fetch --no-tags intel-linux-intel-lts 4.19/android_r git checkout b652a52d36a85d1b731921ba08e701d7150ce200 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dgcc-9.3.0 make.cross = ARCH=3Dm68k = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): In file included from arch/m68k/include/asm/bug.h:32, from include/linux/bug.h:5, from include/linux/thread_info.h:12, from include/asm-generic/preempt.h:5, from ./arch/m68k/include/generated/asm/preempt.h:1, from include/linux/preempt.h:81, from include/linux/spinlock.h:51, from include/linux/seqlock.h:36, from include/linux/time.h:6, from include/linux/ktime.h:24, from include/linux/timer.h:6, from include/linux/workqueue.h:9, from include/linux/bpf.h:12, from security/security.c:15: include/linux/scatterlist.h: In function 'sg_set_buf': arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of p= ointer with null pointer [-Wextra] 169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >=3D (void *)PAG= E_OFFSET && (void *)(kaddr) < high_memory) | ^~ include/asm-generic/bug.h:188:36: note: in definition of macro 'BUG_ON' 188 | #define BUG_ON(condition) do { if (condition) BUG(); } while (0) | ^~~~~~~~~ include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_ad= dr_valid' 143 | BUG_ON(!virt_addr_valid(buf)); | ^~~~~~~~~~~~~~~ include/linux/dma-mapping.h: In function 'dma_map_resource': arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of p= ointer with null pointer [-Wextra] 169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >=3D (void *)PAG= E_OFFSET && (void *)(kaddr) < high_memory) | ^~ include/asm-generic/bug.h:188:36: note: in definition of macro 'BUG_ON' 188 | #define BUG_ON(condition) do { if (condition) BUG(); } while (0) | ^~~~~~~~~ arch/m68k/include/asm/page_mm.h:170:25: note: in expansion of macro 'vir= t_addr_valid' 170 | #define pfn_valid(pfn) virt_addr_valid(pfn_to_virt(pfn)) | ^~~~~~~~~~~~~~~ include/linux/dma-mapping.h:392:9: note: in expansion of macro 'pfn_vali= d' 392 | BUG_ON(pfn_valid(PHYS_PFN(phys_addr))); | ^~~~~~~~~ security/security.c: At top level: >> security/security.c:381:5: warning: no previous prototype for 'lsm_file_= alloc' [-Wmissing-prototypes] 381 | int lsm_file_alloc(struct file *file) | ^~~~~~~~~~~~~~ >> security/security.c:402:5: warning: no previous prototype for 'lsm_task_= alloc' [-Wmissing-prototypes] 402 | int lsm_task_alloc(struct task_struct *task) | ^~~~~~~~~~~~~~ >> security/security.c:482:5: warning: no previous prototype for 'lsm_ipc_a= lloc' [-Wmissing-prototypes] 482 | int lsm_ipc_alloc(struct kern_ipc_perm *kip) | ^~~~~~~~~~~~~ >> security/security.c:504:5: warning: no previous prototype for 'lsm_key_a= lloc' [-Wmissing-prototypes] 504 | int lsm_key_alloc(struct key *key) | ^~~~~~~~~~~~~ >> security/security.c:526:5: warning: no previous prototype for 'lsm_msg_m= sg_alloc' [-Wmissing-prototypes] 526 | int lsm_msg_msg_alloc(struct msg_msg *mp) | ^~~~~~~~~~~~~~~~~ >> security/security.c:548:5: warning: no previous prototype for 'lsm_sock_= alloc' [-Wmissing-prototypes] 548 | int lsm_sock_alloc(struct sock *sock, gfp_t priority) | ^~~~~~~~~~~~~~ >> security/security.c:569:5: warning: no previous prototype for 'lsm_super= block_alloc' [-Wmissing-prototypes] 569 | int lsm_superblock_alloc(struct super_block *sb) | ^~~~~~~~~~~~~~~~~~~~ security/security.c:220: warning: Function parameter or member 'lsm' not= described in 'security_module_enable' security/security.c:220: warning: Excess function parameter 'module' des= cription in 'security_module_enable' -- security/integrity/ima/ima_policy.c: In function 'ima_lsm_update_rules': security/integrity/ima/ima_policy.c:253:6: warning: variable 'result' se= t but not used [-Wunused-but-set-variable] 253 | int result; | ^~~~~~ security/integrity/ima/ima_policy.c: In function 'ima_match_rules': >> security/integrity/ima/ima_policy.c:332:36: warning: passing argument 1 = of 'security_filter_rule_match' makes integer from pointer without a cast [= -Wint-conversion] 332 | rc =3D security_filter_rule_match(&osid, | ^~~~~ | | | struct secids * In file included from security/integrity/ima/ima_policy.c:24: security/integrity/ima/ima.h:313:50: note: expected 'u32' {aka 'unsigned= int'} but argument is of type 'struct secids *' 313 | static inline int security_filter_rule_match(u32 secid, u32 fiel= d, u32 op, | ~~~~^~~~~ security/integrity/ima/ima_policy.c:341:36: warning: passing argument 1 = of 'security_filter_rule_match' makes integer from pointer without a cast [= -Wint-conversion] 341 | rc =3D security_filter_rule_match(secid, | ^~~~~ | | | struct secids * In file included from security/integrity/ima/ima_policy.c:24: security/integrity/ima/ima.h:313:50: note: expected 'u32' {aka 'unsigned= int'} but argument is of type 'struct secids *' 313 | static inline int security_filter_rule_match(u32 secid, u32 fiel= d, u32 op, | ~~~~^~~~~ security/integrity/ima/ima_policy.c: In function 'ima_init_policy': security/integrity/ima/ima_policy.c:526:16: warning: comparison of unsig= ned expression < 0 is always false [-Wtype-limits] 526 | for (i =3D 0; i < ARRAY_SIZE(build_appraise_rules); i++) { | ^ security/integrity/ima/ima_policy.c: In function 'ima_parse_rule': security/integrity/ima/ima_policy.c:855:18: warning: this statement may = fall through [-Wimplicit-fallthrough=3D] 855 | entry->uid_op =3D &uid_gt; | ~~~~~~~~~~~~~~^~~~~~~~~ security/integrity/ima/ima_policy.c:856:3: note: here 856 | case Opt_uid_lt: | ^~~~ security/integrity/ima/ima_policy.c:858:7: warning: this statement may f= all through [-Wimplicit-fallthrough=3D] 858 | if ((token =3D=3D Opt_uid_lt) || (token =3D=3D Opt_euid_lt)) | ^ security/integrity/ima/ima_policy.c:860:3: note: here 860 | case Opt_uid_eq: | ^~~~ security/integrity/ima/ima_policy.c:887:21: warning: this statement may = fall through [-Wimplicit-fallthrough=3D] 887 | entry->fowner_op =3D &uid_gt; | ~~~~~~~~~~~~~~~~~^~~~~~~~~ security/integrity/ima/ima_policy.c:888:3: note: here 888 | case Opt_fowner_lt: | ^~~~ security/integrity/ima/ima_policy.c:889:7: warning: this statement may f= all through [-Wimplicit-fallthrough=3D] 889 | if (token =3D=3D Opt_fowner_lt) | ^ security/integrity/ima/ima_policy.c:891:3: note: here 891 | case Opt_fowner_eq: | ^~~~ security/integrity/ima/ima_policy.c:405: warning: Function parameter or = member 'flags' not described in 'ima_match_policy' security/integrity/ima/ima_policy.c:998: warning: Function parameter or = member 'rule' not described in 'ima_parse_add_rule' vim +/lsm_file_alloc +381 security/security.c d082cff47912b9 Casey Schaufler 2018-05-10 372 = d082cff47912b9 Casey Schaufler 2018-05-10 373 /** d082cff47912b9 Casey Schaufler 2018-05-10 374 * lsm_file_alloc - allocat= e a composite file blob d082cff47912b9 Casey Schaufler 2018-05-10 375 * @file: the file that nee= ds a blob d082cff47912b9 Casey Schaufler 2018-05-10 376 * d082cff47912b9 Casey Schaufler 2018-05-10 377 * Allocate the file blob f= or all the modules d082cff47912b9 Casey Schaufler 2018-05-10 378 * d082cff47912b9 Casey Schaufler 2018-05-10 379 * Returns 0, or -ENOMEM if= memory can't be allocated. d082cff47912b9 Casey Schaufler 2018-05-10 380 */ d082cff47912b9 Casey Schaufler 2018-05-10 @381 int lsm_file_alloc(struct f= ile *file) d082cff47912b9 Casey Schaufler 2018-05-10 382 { d082cff47912b9 Casey Schaufler 2018-05-10 383 if (!lsm_file_cache) { d082cff47912b9 Casey Schaufler 2018-05-10 384 file->f_security =3D NULL; d082cff47912b9 Casey Schaufler 2018-05-10 385 return 0; d082cff47912b9 Casey Schaufler 2018-05-10 386 } d082cff47912b9 Casey Schaufler 2018-05-10 387 = d082cff47912b9 Casey Schaufler 2018-05-10 388 file->f_security =3D kmem_= cache_zalloc(lsm_file_cache, GFP_KERNEL); d082cff47912b9 Casey Schaufler 2018-05-10 389 if (file->f_security =3D= =3D NULL) d082cff47912b9 Casey Schaufler 2018-05-10 390 return -ENOMEM; d082cff47912b9 Casey Schaufler 2018-05-10 391 return 0; 7880b02f0906b7 Casey Schaufler 2018-08-27 392 } 7880b02f0906b7 Casey Schaufler 2018-08-27 393 = 7cb75cc654c717 Casey Schaufler 2018-05-10 394 /** 7cb75cc654c717 Casey Schaufler 2018-05-10 395 * lsm_task_alloc - allocat= e a composite task blob 7cb75cc654c717 Casey Schaufler 2018-05-10 396 * @task: the task that nee= ds a blob 7cb75cc654c717 Casey Schaufler 2018-05-10 397 * 7cb75cc654c717 Casey Schaufler 2018-05-10 398 * Allocate the task blob f= or all the modules 7cb75cc654c717 Casey Schaufler 2018-05-10 399 * 7cb75cc654c717 Casey Schaufler 2018-05-10 400 * Returns 0, or -ENOMEM if= memory can't be allocated. 7cb75cc654c717 Casey Schaufler 2018-05-10 401 */ 7cb75cc654c717 Casey Schaufler 2018-05-10 @402 int lsm_task_alloc(struct t= ask_struct *task) 7cb75cc654c717 Casey Schaufler 2018-05-10 403 { 7cb75cc654c717 Casey Schaufler 2018-05-10 404 if (blob_sizes.lbs_task = =3D=3D 0) { 7cb75cc654c717 Casey Schaufler 2018-05-10 405 task->security =3D NULL; 7cb75cc654c717 Casey Schaufler 2018-05-10 406 return 0; 7cb75cc654c717 Casey Schaufler 2018-05-10 407 } 7cb75cc654c717 Casey Schaufler 2018-05-10 408 = 7cb75cc654c717 Casey Schaufler 2018-05-10 409 task->security =3D kzalloc= (blob_sizes.lbs_task, GFP_KERNEL); 7cb75cc654c717 Casey Schaufler 2018-05-10 410 if (task->security =3D=3D = NULL) 7cb75cc654c717 Casey Schaufler 2018-05-10 411 return -ENOMEM; 7cb75cc654c717 Casey Schaufler 2018-05-10 412 return 0; 7cb75cc654c717 Casey Schaufler 2018-05-10 413 } 7cb75cc654c717 Casey Schaufler 2018-05-10 414 = 7cb75cc654c717 Casey Schaufler 2018-05-10 415 /** 7cb75cc654c717 Casey Schaufler 2018-05-10 416 * lsm_early_task - during = initialization allocate a composite task blob 7cb75cc654c717 Casey Schaufler 2018-05-10 417 * @task: the task that nee= ds a blob 7cb75cc654c717 Casey Schaufler 2018-05-10 418 * 7cb75cc654c717 Casey Schaufler 2018-05-10 419 * Allocate the task blob f= or all the modules if it's not already there 7cb75cc654c717 Casey Schaufler 2018-05-10 420 */ 7cb75cc654c717 Casey Schaufler 2018-05-10 421 void lsm_early_task(struct = task_struct *task) 7cb75cc654c717 Casey Schaufler 2018-05-10 422 { 7cb75cc654c717 Casey Schaufler 2018-05-10 423 int rc; 7cb75cc654c717 Casey Schaufler 2018-05-10 424 = 7cb75cc654c717 Casey Schaufler 2018-05-10 425 if (task =3D=3D NULL) 7cb75cc654c717 Casey Schaufler 2018-05-10 426 panic("%s: task cred.\n",= __func__); 7cb75cc654c717 Casey Schaufler 2018-05-10 427 if (task->security !=3D NU= LL) 7cb75cc654c717 Casey Schaufler 2018-05-10 428 return; 7cb75cc654c717 Casey Schaufler 2018-05-10 429 rc =3D lsm_task_alloc(task= ); 7cb75cc654c717 Casey Schaufler 2018-05-10 430 if (rc) 7cb75cc654c717 Casey Schaufler 2018-05-10 431 panic("%s: Early task all= oc failed.\n", __func__); 7cb75cc654c717 Casey Schaufler 2018-05-10 432 } 7cb75cc654c717 Casey Schaufler 2018-05-10 433 = aa6496634cff6a Casey Schaufler 2018-06-20 434 /** aa6496634cff6a Casey Schaufler 2018-06-20 435 * lsm_inode_alloc - alloca= te a composite inode blob aa6496634cff6a Casey Schaufler 2018-06-20 436 * @inode: the inode that n= eeds a blob aa6496634cff6a Casey Schaufler 2018-06-20 437 * aa6496634cff6a Casey Schaufler 2018-06-20 438 * Allocate the inode blob = for all the modules aa6496634cff6a Casey Schaufler 2018-06-20 439 * aa6496634cff6a Casey Schaufler 2018-06-20 440 * Returns 0, or -ENOMEM if= memory can't be allocated. aa6496634cff6a Casey Schaufler 2018-06-20 441 */ aa6496634cff6a Casey Schaufler 2018-06-20 442 int lsm_inode_alloc(struct = inode *inode) aa6496634cff6a Casey Schaufler 2018-06-20 443 { aa6496634cff6a Casey Schaufler 2018-06-20 444 if (!lsm_inode_cache) { aa6496634cff6a Casey Schaufler 2018-06-20 445 inode->i_security =3D NUL= L; aa6496634cff6a Casey Schaufler 2018-06-20 446 return 0; aa6496634cff6a Casey Schaufler 2018-06-20 447 } aa6496634cff6a Casey Schaufler 2018-06-20 448 = aa6496634cff6a Casey Schaufler 2018-06-20 449 inode->i_security =3D kmem= _cache_zalloc(lsm_inode_cache, GFP_NOFS); aa6496634cff6a Casey Schaufler 2018-06-20 450 if (inode->i_security =3D= =3D NULL) aa6496634cff6a Casey Schaufler 2018-06-20 451 return -ENOMEM; aa6496634cff6a Casey Schaufler 2018-06-20 452 return 0; aa6496634cff6a Casey Schaufler 2018-06-20 453 } aa6496634cff6a Casey Schaufler 2018-06-20 454 = aa6496634cff6a Casey Schaufler 2018-06-20 455 /** aa6496634cff6a Casey Schaufler 2018-06-20 456 * lsm_early_inode - during= initialization allocate a composite inode blob aa6496634cff6a Casey Schaufler 2018-06-20 457 * @inode: the inode that n= eeds a blob aa6496634cff6a Casey Schaufler 2018-06-20 458 * aa6496634cff6a Casey Schaufler 2018-06-20 459 * Allocate the inode blob = for all the modules if it's not already there aa6496634cff6a Casey Schaufler 2018-06-20 460 */ aa6496634cff6a Casey Schaufler 2018-06-20 461 void lsm_early_inode(struct= inode *inode) aa6496634cff6a Casey Schaufler 2018-06-20 462 { aa6496634cff6a Casey Schaufler 2018-06-20 463 int rc; aa6496634cff6a Casey Schaufler 2018-06-20 464 = aa6496634cff6a Casey Schaufler 2018-06-20 465 if (inode =3D=3D NULL) aa6496634cff6a Casey Schaufler 2018-06-20 466 panic("%s: NULL inode.\n"= , __func__); aa6496634cff6a Casey Schaufler 2018-06-20 467 if (inode->i_security !=3D= NULL) aa6496634cff6a Casey Schaufler 2018-06-20 468 return; aa6496634cff6a Casey Schaufler 2018-06-20 469 rc =3D lsm_inode_alloc(ino= de); aa6496634cff6a Casey Schaufler 2018-06-20 470 if (rc) aa6496634cff6a Casey Schaufler 2018-06-20 471 panic("%s: Early inode al= loc failed.\n", __func__); aa6496634cff6a Casey Schaufler 2018-06-20 472 } aa6496634cff6a Casey Schaufler 2018-06-20 473 = e92c67fcf33bb7 Casey Schaufler 2018-06-21 474 /** e92c67fcf33bb7 Casey Schaufler 2018-06-21 475 * lsm_ipc_alloc - allocate= a composite ipc blob e92c67fcf33bb7 Casey Schaufler 2018-06-21 476 * @kip: the ipc that needs= a blob e92c67fcf33bb7 Casey Schaufler 2018-06-21 477 * e92c67fcf33bb7 Casey Schaufler 2018-06-21 478 * Allocate the ipc blob fo= r all the modules e92c67fcf33bb7 Casey Schaufler 2018-06-21 479 * e92c67fcf33bb7 Casey Schaufler 2018-06-21 480 * Returns 0, or -ENOMEM if= memory can't be allocated. e92c67fcf33bb7 Casey Schaufler 2018-06-21 481 */ e92c67fcf33bb7 Casey Schaufler 2018-06-21 @482 int lsm_ipc_alloc(struct ke= rn_ipc_perm *kip) e92c67fcf33bb7 Casey Schaufler 2018-06-21 483 { e92c67fcf33bb7 Casey Schaufler 2018-06-21 484 if (blob_sizes.lbs_ipc =3D= =3D 0) { e92c67fcf33bb7 Casey Schaufler 2018-06-21 485 kip->security =3D NULL; e92c67fcf33bb7 Casey Schaufler 2018-06-21 486 return 0; e92c67fcf33bb7 Casey Schaufler 2018-06-21 487 } e92c67fcf33bb7 Casey Schaufler 2018-06-21 488 = e92c67fcf33bb7 Casey Schaufler 2018-06-21 489 kip->security =3D kzalloc(= blob_sizes.lbs_ipc, GFP_KERNEL); e92c67fcf33bb7 Casey Schaufler 2018-06-21 490 if (kip->security =3D=3D N= ULL) e92c67fcf33bb7 Casey Schaufler 2018-06-21 491 return -ENOMEM; e92c67fcf33bb7 Casey Schaufler 2018-06-21 492 return 0; e92c67fcf33bb7 Casey Schaufler 2018-06-21 493 } e92c67fcf33bb7 Casey Schaufler 2018-06-21 494 = 1d4be734af45c0 Casey Schaufler 2018-05-10 495 #ifdef CONFIG_KEYS 1d4be734af45c0 Casey Schaufler 2018-05-10 496 /** 1d4be734af45c0 Casey Schaufler 2018-05-10 497 * lsm_key_alloc - allocate= a composite key blob 1d4be734af45c0 Casey Schaufler 2018-05-10 498 * @key: the key that needs= a blob 1d4be734af45c0 Casey Schaufler 2018-05-10 499 * 1d4be734af45c0 Casey Schaufler 2018-05-10 500 * Allocate the key blob fo= r all the modules 1d4be734af45c0 Casey Schaufler 2018-05-10 501 * 1d4be734af45c0 Casey Schaufler 2018-05-10 502 * Returns 0, or -ENOMEM if= memory can't be allocated. 1d4be734af45c0 Casey Schaufler 2018-05-10 503 */ 1d4be734af45c0 Casey Schaufler 2018-05-10 @504 int lsm_key_alloc(struct ke= y *key) 1d4be734af45c0 Casey Schaufler 2018-05-10 505 { 1d4be734af45c0 Casey Schaufler 2018-05-10 506 if (blob_sizes.lbs_key =3D= =3D 0) { 1d4be734af45c0 Casey Schaufler 2018-05-10 507 key->security =3D NULL; 1d4be734af45c0 Casey Schaufler 2018-05-10 508 return 0; 1d4be734af45c0 Casey Schaufler 2018-05-10 509 } 1d4be734af45c0 Casey Schaufler 2018-05-10 510 = 1d4be734af45c0 Casey Schaufler 2018-05-10 511 key->security =3D kzalloc(= blob_sizes.lbs_key, GFP_KERNEL); 1d4be734af45c0 Casey Schaufler 2018-05-10 512 if (key->security =3D=3D N= ULL) 1d4be734af45c0 Casey Schaufler 2018-05-10 513 return -ENOMEM; 1d4be734af45c0 Casey Schaufler 2018-05-10 514 return 0; 1d4be734af45c0 Casey Schaufler 2018-05-10 515 } 1d4be734af45c0 Casey Schaufler 2018-05-10 516 #endif /* CONFIG_KEYS */ 1d4be734af45c0 Casey Schaufler 2018-05-10 517 = e92c67fcf33bb7 Casey Schaufler 2018-06-21 518 /** e92c67fcf33bb7 Casey Schaufler 2018-06-21 519 * lsm_msg_msg_alloc - allo= cate a composite msg_msg blob e92c67fcf33bb7 Casey Schaufler 2018-06-21 520 * @mp: the msg_msg that ne= eds a blob e92c67fcf33bb7 Casey Schaufler 2018-06-21 521 * e92c67fcf33bb7 Casey Schaufler 2018-06-21 522 * Allocate the ipc blob fo= r all the modules e92c67fcf33bb7 Casey Schaufler 2018-06-21 523 * e92c67fcf33bb7 Casey Schaufler 2018-06-21 524 * Returns 0, or -ENOMEM if= memory can't be allocated. e92c67fcf33bb7 Casey Schaufler 2018-06-21 525 */ e92c67fcf33bb7 Casey Schaufler 2018-06-21 @526 int lsm_msg_msg_alloc(struc= t msg_msg *mp) e92c67fcf33bb7 Casey Schaufler 2018-06-21 527 { e92c67fcf33bb7 Casey Schaufler 2018-06-21 528 if (blob_sizes.lbs_msg_msg= =3D=3D 0) { e92c67fcf33bb7 Casey Schaufler 2018-06-21 529 mp->security =3D NULL; e92c67fcf33bb7 Casey Schaufler 2018-06-21 530 return 0; e92c67fcf33bb7 Casey Schaufler 2018-06-21 531 } e92c67fcf33bb7 Casey Schaufler 2018-06-21 532 = e92c67fcf33bb7 Casey Schaufler 2018-06-21 533 mp->security =3D kzalloc(b= lob_sizes.lbs_msg_msg, GFP_KERNEL); e92c67fcf33bb7 Casey Schaufler 2018-06-21 534 if (mp->security =3D=3D NU= LL) e92c67fcf33bb7 Casey Schaufler 2018-06-21 535 return -ENOMEM; e92c67fcf33bb7 Casey Schaufler 2018-06-21 536 return 0; e92c67fcf33bb7 Casey Schaufler 2018-06-21 537 } e92c67fcf33bb7 Casey Schaufler 2018-06-21 538 = 36f477475f6efc Casey Schaufler 2018-07-12 539 /** 36f477475f6efc Casey Schaufler 2018-07-12 540 * lsm_sock_alloc - allocat= e a composite sock blob 36f477475f6efc Casey Schaufler 2018-07-12 541 * @sock: the sock that nee= ds a blob 36f477475f6efc Casey Schaufler 2018-07-12 542 * @priority: allocation mo= de 36f477475f6efc Casey Schaufler 2018-07-12 543 * 36f477475f6efc Casey Schaufler 2018-07-12 544 * Allocate the sock blob f= or all the modules 36f477475f6efc Casey Schaufler 2018-07-12 545 * 36f477475f6efc Casey Schaufler 2018-07-12 546 * Returns 0, or -ENOMEM if= memory can't be allocated. 36f477475f6efc Casey Schaufler 2018-07-12 547 */ 36f477475f6efc Casey Schaufler 2018-07-12 @548 int lsm_sock_alloc(struct s= ock *sock, gfp_t priority) 36f477475f6efc Casey Schaufler 2018-07-12 549 { 36f477475f6efc Casey Schaufler 2018-07-12 550 if (blob_sizes.lbs_sock = =3D=3D 0) { 36f477475f6efc Casey Schaufler 2018-07-12 551 sock->sk_security =3D NUL= L; 36f477475f6efc Casey Schaufler 2018-07-12 552 return 0; 36f477475f6efc Casey Schaufler 2018-07-12 553 } 36f477475f6efc Casey Schaufler 2018-07-12 554 = 36f477475f6efc Casey Schaufler 2018-07-12 555 sock->sk_security =3D kzal= loc(blob_sizes.lbs_sock, priority); 36f477475f6efc Casey Schaufler 2018-07-12 556 if (sock->sk_security =3D= =3D NULL) 36f477475f6efc Casey Schaufler 2018-07-12 557 return -ENOMEM; 36f477475f6efc Casey Schaufler 2018-07-12 558 return 0; 36f477475f6efc Casey Schaufler 2018-07-12 559 } 36f477475f6efc Casey Schaufler 2018-07-12 560 = 01de591a11f331 Casey Schaufler 2018-05-10 561 /** 01de591a11f331 Casey Schaufler 2018-05-10 562 * lsm_superblock_alloc - a= llocate a composite superblock blob 01de591a11f331 Casey Schaufler 2018-05-10 563 * @sb: the superblock that= needs a blob 01de591a11f331 Casey Schaufler 2018-05-10 564 * 01de591a11f331 Casey Schaufler 2018-05-10 565 * Allocate the superblock = blob for all the modules 01de591a11f331 Casey Schaufler 2018-05-10 566 * 01de591a11f331 Casey Schaufler 2018-05-10 567 * Returns 0, or -ENOMEM if= memory can't be allocated. 01de591a11f331 Casey Schaufler 2018-05-10 568 */ 01de591a11f331 Casey Schaufler 2018-05-10 @569 int lsm_superblock_alloc(st= ruct super_block *sb) 01de591a11f331 Casey Schaufler 2018-05-10 570 { 01de591a11f331 Casey Schaufler 2018-05-10 571 if (blob_sizes.lbs_superbl= ock =3D=3D 0) { 01de591a11f331 Casey Schaufler 2018-05-10 572 sb->s_security =3D NULL; 01de591a11f331 Casey Schaufler 2018-05-10 573 return 0; 01de591a11f331 Casey Schaufler 2018-05-10 574 } 01de591a11f331 Casey Schaufler 2018-05-10 575 = 01de591a11f331 Casey Schaufler 2018-05-10 576 sb->s_security =3D kzalloc= (blob_sizes.lbs_superblock, GFP_KERNEL); 01de591a11f331 Casey Schaufler 2018-05-10 577 if (sb->s_security =3D=3D = NULL) 01de591a11f331 Casey Schaufler 2018-05-10 578 return -ENOMEM; 01de591a11f331 Casey Schaufler 2018-05-10 579 return 0; 01de591a11f331 Casey Schaufler 2018-05-10 580 } 01de591a11f331 Casey Schaufler 2018-05-10 581 = :::::: The code at line 381 was first introduced by commit :::::: d082cff47912b94848d4e470a40449bf84b7536f LSM: Infrastructure managem= ent of the file security blob :::::: TO: Casey Schaufler :::::: CC: Pan, Kris --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============4811064238563497449== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============4811064238563497449==--