CC: [email protected] CC: [email protected] CC: [email protected] TO: Rasmus Villemoes <[email protected]> CC: Miguel Ojeda <[email protected]> CC: Nick Desaulniers <[email protected]> CC: Andrew Morton <[email protected]> CC: Linux Memory Management List <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: c5c17547b778975b3d83a73c8d84e8fb5ecf3ba5 commit: e1edc277e6f6dfb372216522dfc57f9381c39e35 linux/container_of.h: switch to static_assert date: 3 weeks ago :::::: branch date: 24 hours ago :::::: commit date: 3 weeks ago config: arm-randconfig-c002-20211118 (https://download.01.org/0day-ci/archive/20211128/[email protected]/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c46becf500df2a7fb4b4fce16178a036c344315a) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e1edc277e6f6dfb372216522dfc57f9381c39e35 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout e1edc277e6f6dfb372216522dfc57f9381c39e35 # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^~~~~~~~~~~ drivers/gpu/host1x/job.c:176:3: note: Taking false branch if (IS_ERR(sgt)) { ^ drivers/gpu/host1x/job.c:181:7: note: Assuming 'sgt' is null if (sgt) { ^~~ drivers/gpu/host1x/job.c:181:3: note: Taking false branch if (sgt) { ^ drivers/gpu/host1x/job.c:213:35: note: Assigned value is garbage or undefined job->addr_phys[job->num_unpins] = phys_addr; ^ ~~~~~~~~~ drivers/gpu/host1x/job.c:296:35: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] job->addr_phys[job->num_unpins] = phys_addr; ^ drivers/gpu/host1x/job.c:639:8: note: Calling 'pin_job' err = pin_job(host, job); ^~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/job.c:148:14: note: Assuming 'i' is >= field 'num_relocs' for (i = 0; i < job->num_relocs; i++) { ^~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/job.c:148:2: note: Loop condition is false. Execution continues on line 223 for (i = 0; i < job->num_relocs; i++) { ^ drivers/gpu/host1x/job.c:223:6: note: Assuming field 'enable_firewall' is false if (job->enable_firewall) ^~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/job.c:223:2: note: Taking false branch if (job->enable_firewall) ^ drivers/gpu/host1x/job.c:226:14: note: Assuming 'i' is < field 'num_cmds' for (i = 0; i < job->num_cmds; i++) { ^~~~~~~~~~~~~~~~~ drivers/gpu/host1x/job.c:226:2: note: Loop condition is true. Entering loop body for (i = 0; i < job->num_cmds; i++) { ^ drivers/gpu/host1x/job.c:229:3: note: 'phys_addr' declared without an initial value dma_addr_t phys_addr; ^~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/job.c:235:7: note: Assuming field 'is_wait' is false if (job->cmds[i].is_wait) ^~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/job.c:235:3: note: Taking false branch if (job->cmds[i].is_wait) ^ drivers/gpu/host1x/job.c:241:7: note: Assuming field 'bo' is non-null if (!g->bo) { ^~~~~~ drivers/gpu/host1x/job.c:241:3: note: Taking false branch if (!g->bo) { ^ drivers/gpu/host1x/job.c:251:7: note: Assuming the condition is false if (!iommu_get_domain_for_dev(host->dev)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/job.c:251:3: note: Taking false branch if (!iommu_get_domain_for_dev(host->dev)) ^ drivers/gpu/host1x/job.c:257:7: note: Calling 'IS_ERR' if (IS_ERR(sgt)) { ^~~~~~~~~~~ include/linux/err.h:36:9: note: Assuming the condition is false return IS_ERR_VALUE((unsigned long)ptr); ^ include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE' #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO) ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ include/linux/err.h:36:2: note: Returning zero, which participates in a condition later return IS_ERR_VALUE((unsigned long)ptr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/host1x/job.c:257:7: note: Returning from 'IS_ERR' if (IS_ERR(sgt)) { ^~~~~~~~~~~ drivers/gpu/host1x/job.c:257:3: note: Taking false branch if (IS_ERR(sgt)) { ^ drivers/gpu/host1x/job.c:262:7: note: Assuming field 'domain' is null if (host->domain) { ^~~~~~~~~~~~ drivers/gpu/host1x/job.c:262:3: note: Taking false branch if (host->domain) { ^ drivers/gpu/host1x/job.c:286:14: note: Assuming 'sgt' is null } else if (sgt) { ^~~ drivers/gpu/host1x/job.c:286:10: note: Taking false branch } else if (sgt) { ^ drivers/gpu/host1x/job.c:296:35: note: Assigned value is garbage or undefined job->addr_phys[job->num_unpins] = phys_addr; ^ ~~~~~~~~~ Suppressed 15 warnings (15 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 15 warnings generated. Suppressed 15 warnings (15 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. >> drivers/soc/qcom/rpmh.c:100:3: warning: Argument to kfree() is the address >> of a local stack variable, which is not memory allocated by malloc() >> [clang-analyzer-unix.Malloc] kfree(rpm_msg); ^ drivers/soc/qcom/rpmh.c:268:6: note: 'ret' is 0 if (ret) ^~~ drivers/soc/qcom/rpmh.c:268:2: note: Taking false branch if (ret) ^ drivers/soc/qcom/rpmh.c:271:8: note: Calling '__rpmh_write' ret = __rpmh_write(dev, state, &rpm_msg); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/soc/qcom/rpmh.c:185:14: note: 'i' is < field 'num_cmds' for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^ drivers/soc/qcom/rpmh.c:185:2: note: Loop condition is true. Entering loop body for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^ drivers/soc/qcom/rpmh.c:187:3: note: Taking false branch if (IS_ERR(req)) ^ drivers/soc/qcom/rpmh.c:185:14: note: Assuming 'i' is < field 'num_cmds' for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/soc/qcom/rpmh.c:185:2: note: Loop condition is true. Entering loop body for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^ drivers/soc/qcom/rpmh.c:187:3: note: Taking false branch if (IS_ERR(req)) ^ drivers/soc/qcom/rpmh.c:185:14: note: Assuming 'i' is >= field 'num_cmds' for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/soc/qcom/rpmh.c:185:2: note: Loop condition is false. Execution continues on line 191 for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^ drivers/soc/qcom/rpmh.c:191:6: note: 'state' is not equal to RPMH_ACTIVE_ONLY_STATE if (state == RPMH_ACTIVE_ONLY_STATE) { ^~~~~ drivers/soc/qcom/rpmh.c:191:2: note: Taking false branch if (state == RPMH_ACTIVE_ONLY_STATE) { ^ drivers/soc/qcom/rpmh.c:197:3: note: Calling 'rpmh_tx_done' rpmh_tx_done(&rpm_msg->msg, ret); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/soc/qcom/rpmh.c:88:6: note: 'r' is 0 if (r) ^ drivers/soc/qcom/rpmh.c:88:2: note: Taking false branch if (r) ^ drivers/soc/qcom/rpmh.c:92:6: note: Assuming 'compl' is null if (!compl) ^~~~~~ drivers/soc/qcom/rpmh.c:92:2: note: Taking true branch if (!compl) ^ drivers/soc/qcom/rpmh.c:93:3: note: Control jumps to line 99 goto exit; ^ drivers/soc/qcom/rpmh.c:99:6: note: Assuming 'free' is true if (free) ^~~~ drivers/soc/qcom/rpmh.c:99:2: note: Taking true branch if (free) ^ drivers/soc/qcom/rpmh.c:100:3: note: Argument to kfree() is the address of a local stack variable, which is not memory allocated by malloc() kfree(rpm_msg); ^ ~~~~~~~ 1 warning generated. lib/glob.c:48:32: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] char const *back_pat = NULL, *back_str = back_str; ^ ~~~~~~~~ lib/glob.c:48:32: note: Assigned value is garbage or undefined char const *back_pat = NULL, *back_str = back_str; ^ ~~~~~~~~ 15 warnings generated. Suppressed 15 warnings (15 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 15 warnings generated. Suppressed 15 warnings (15 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 15 warnings generated. Suppressed 15 warnings (15 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. drivers/slimbus/messaging.c:323:3: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn] return buf; ^ ~~~ drivers/slimbus/messaging.c:317:2: note: 'buf' declared without an initial value u8 buf; ^~~~~~ drivers/slimbus/messaging.c:319:8: note: Calling 'slim_read' ret = slim_read(sdev, addr, 1, &buf); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/slimbus/messaging.c:300:2: note: Calling 'slim_fill_msg' slim_fill_msg(&msg, addr, count, val, NULL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/slimbus/messaging.c:282:1: note: Returning without writing to 'msg->rbuf' } ^ -- ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:1815:3: note: Taking true branch if (view->regsets[i].core_note_type != 0) ^ fs/binfmt_elf.c:1814:14: note: Assuming 'i' is >= field 'n' for (i = 0; i < view->n; ++i) ^~~~~~~~~~~ fs/binfmt_elf.c:1814:2: note: Loop condition is false. Execution continues on line 1822 for (i = 0; i < view->n; ++i) ^ fs/binfmt_elf.c:1822:6: note: Left side of '||' is false if (unlikely(info->thread_notes == 0) || ^ include/linux/compiler.h:78:22: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ fs/binfmt_elf.c:1823:15: note: Assuming field 'core_note_type' is equal to 1 unlikely(view->regsets[0].core_note_type != NT_PRSTATUS)) { ^ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ fs/binfmt_elf.c:1822:2: note: Taking false branch if (unlikely(info->thread_notes == 0) || ^ fs/binfmt_elf.c:1837:2: note: Loop condition is false. Execution continues on line 1861 for (ct = &dump_task->mm->core_state->dumper; ct; ct = ct->next) { ^ fs/binfmt_elf.c:1861:2: note: Loop condition is false. Execution continues on line 1868 for (t = info->thread; t != NULL; t = t->next) ^ fs/binfmt_elf.c:1877:2: note: Taking false branch if (fill_files_note(&info->files) == 0) ^ fs/binfmt_elf.c:2191:7: note: Returning from 'fill_note_info' if (!fill_note_info(&elf, e_phnum, &info, cprm->siginfo, cprm->regs)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:2191:2: note: Taking false branch if (!fill_note_info(&elf, e_phnum, &info, cprm->siginfo, cprm->regs)) ^ fs/binfmt_elf.c:2201:15: note: Calling 'get_note_info_size' size_t sz = get_note_info_size(&info); ^~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:1885:2: note: Returning without writing to 'info->thread' return info->size; ^ fs/binfmt_elf.c:2201:15: note: Returning from 'get_note_info_size' size_t sz = get_note_info_size(&info); ^~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:2207:7: note: Assuming 'phdr4note' is non-null if (!phdr4note) ^~~~~~~~~~ fs/binfmt_elf.c:2207:3: note: Taking false branch if (!phdr4note) ^ fs/binfmt_elf.c:2220:6: note: Assuming 'e_phnum' is not equal to PN_XNUM if (e_phnum == PN_XNUM) { ^~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:2220:2: note: Taking false branch if (e_phnum == PN_XNUM) { ^ fs/binfmt_elf.c:2229:6: note: Assuming the condition is false if (!dump_emit(cprm, &elf, sizeof(elf))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:2229:2: note: Taking false branch if (!dump_emit(cprm, &elf, sizeof(elf))) ^ fs/binfmt_elf.c:2232:6: note: Assuming the condition is false if (!dump_emit(cprm, phdr4note, sizeof(*phdr4note))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:2232:2: note: Taking false branch if (!dump_emit(cprm, phdr4note, sizeof(*phdr4note))) ^ fs/binfmt_elf.c:2236:14: note: Assuming 'i' is >= 'vma_count' for (i = 0; i < vma_count; i++) { ^~~~~~~~~~~~~ fs/binfmt_elf.c:2236:2: note: Loop condition is false. Execution continues on line 2260 for (i = 0; i < vma_count; i++) { ^ fs/binfmt_elf.c:2260:2: note: Taking false branch if (!elf_core_write_extra_phdrs(cprm, offset)) ^ fs/binfmt_elf.c:2264:7: note: Calling 'write_note_info' if (!write_note_info(&info, cprm)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:1896:2: note: 't' initialized to a null pointer value struct elf_thread_core_info *t = info->thread; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:1901:18: note: Passing null pointer value via 1st parameter 'men' if (!writenote(&t->notes[0], cprm)) ^~~~~~~~~~~~ fs/binfmt_elf.c:1901:8: note: Calling 'writenote' if (!writenote(&t->notes[0], cprm)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/binfmt_elf.c:1446:23: note: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'men') en.n_namesz = strlen(men->name) + 1; ^~~ Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. >> drivers/soc/qcom/rpmh.c:100:3: warning: Argument to kfree() is the address >> of a local stack variable, which is not memory allocated by malloc() >> [clang-analyzer-unix.Malloc] kfree(rpm_msg); ^ drivers/soc/qcom/rpmh.c:268:6: note: 'ret' is 0 if (ret) ^~~ drivers/soc/qcom/rpmh.c:268:2: note: Taking false branch if (ret) ^ drivers/soc/qcom/rpmh.c:271:8: note: Calling '__rpmh_write' ret = __rpmh_write(dev, state, &rpm_msg); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/soc/qcom/rpmh.c:185:14: note: 'i' is < field 'num_cmds' for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^ drivers/soc/qcom/rpmh.c:185:2: note: Loop condition is true. Entering loop body for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^ drivers/soc/qcom/rpmh.c:187:3: note: Taking false branch if (IS_ERR(req)) ^ drivers/soc/qcom/rpmh.c:185:14: note: Assuming 'i' is < field 'num_cmds' for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/soc/qcom/rpmh.c:185:2: note: Loop condition is true. Entering loop body for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^ drivers/soc/qcom/rpmh.c:187:3: note: Taking false branch if (IS_ERR(req)) ^ drivers/soc/qcom/rpmh.c:185:14: note: Assuming 'i' is >= field 'num_cmds' for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/soc/qcom/rpmh.c:185:2: note: Loop condition is false. Execution continues on line 191 for (i = 0; i < rpm_msg->msg.num_cmds; i++) { ^ drivers/soc/qcom/rpmh.c:191:6: note: 'state' is not equal to RPMH_ACTIVE_ONLY_STATE if (state == RPMH_ACTIVE_ONLY_STATE) { ^~~~~ drivers/soc/qcom/rpmh.c:191:2: note: Taking false branch if (state == RPMH_ACTIVE_ONLY_STATE) { ^ drivers/soc/qcom/rpmh.c:197:3: note: Calling 'rpmh_tx_done' rpmh_tx_done(&rpm_msg->msg, ret); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/soc/qcom/rpmh.c:88:6: note: 'r' is 0 if (r) ^ drivers/soc/qcom/rpmh.c:88:2: note: Taking false branch if (r) ^ drivers/soc/qcom/rpmh.c:92:6: note: Assuming 'compl' is null if (!compl) ^~~~~~ drivers/soc/qcom/rpmh.c:92:2: note: Taking true branch if (!compl) ^ drivers/soc/qcom/rpmh.c:93:3: note: Control jumps to line 99 goto exit; ^ drivers/soc/qcom/rpmh.c:99:6: note: Assuming 'free' is true if (free) ^~~~ drivers/soc/qcom/rpmh.c:99:2: note: Taking true branch if (free) ^ drivers/soc/qcom/rpmh.c:100:3: note: Argument to kfree() is the address of a local stack variable, which is not memory allocated by malloc() kfree(rpm_msg); ^ ~~~~~~~ 16 warnings generated. Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 16 warnings generated. Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 16 warnings generated. Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 18 warnings generated. Suppressed 18 warnings (16 in non-user code, 2 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 21 warnings generated. drivers/iommu/arm/arm-smmu/arm-smmu.c:794:42: warning: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned long' [clang-analyzer-core.UndefinedBinaryOperatorResult] domain->geometry.aperture_start = ~0UL << ias; ^ drivers/iommu/arm/arm-smmu/arm-smmu.c:1138:6: note: Assuming 'fwspec' is non-null if (!fwspec || fwspec->ops != &arm_smmu_ops) { ^~~~~~~ drivers/iommu/arm/arm-smmu/arm-smmu.c:1138:6: note: Left side of '||' is false drivers/iommu/arm/arm-smmu/arm-smmu.c:1138:17: note: Assuming the condition is false if (!fwspec || fwspec->ops != &arm_smmu_ops) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/iommu/arm/arm-smmu/arm-smmu.c:1138:2: note: Taking false branch if (!fwspec || fwspec->ops != &arm_smmu_ops) { ^ drivers/iommu/arm/arm-smmu/arm-smmu.c:1151:6: note: Assuming 'cfg' is non-null if (!cfg) ^~~~ drivers/iommu/arm/arm-smmu/arm-smmu.c:1151:2: note: Taking false branch if (!cfg) ^ vim +100 drivers/soc/qcom/rpmh.c c1038456b02b86 Lina Iyer 2018-06-20 78 c1038456b02b86 Lina Iyer 2018-06-20 79 void rpmh_tx_done(const struct tcs_request *msg, int r) c1038456b02b86 Lina Iyer 2018-06-20 80 { c1038456b02b86 Lina Iyer 2018-06-20 81 struct rpmh_request *rpm_msg = container_of(msg, struct rpmh_request, c1038456b02b86 Lina Iyer 2018-06-20 82 msg); c1038456b02b86 Lina Iyer 2018-06-20 83 struct completion *compl = rpm_msg->completion; baef1c90aac7e5 Stephen Boyd 2019-01-15 84 bool free = rpm_msg->needs_free; c1038456b02b86 Lina Iyer 2018-06-20 85 c1038456b02b86 Lina Iyer 2018-06-20 86 rpm_msg->err = r; c1038456b02b86 Lina Iyer 2018-06-20 87 c1038456b02b86 Lina Iyer 2018-06-20 88 if (r) c1038456b02b86 Lina Iyer 2018-06-20 89 dev_err(rpm_msg->dev, "RPMH TX fail in msg addr=%#x, err=%d\n", c1038456b02b86 Lina Iyer 2018-06-20 90 rpm_msg->msg.cmds[0].addr, r); c1038456b02b86 Lina Iyer 2018-06-20 91 c8790cb6da58d3 Lina Iyer 2018-06-20 92 if (!compl) c8790cb6da58d3 Lina Iyer 2018-06-20 93 goto exit; c8790cb6da58d3 Lina Iyer 2018-06-20 94 c1038456b02b86 Lina Iyer 2018-06-20 95 /* Signal the blocking thread we are done */ c1038456b02b86 Lina Iyer 2018-06-20 96 complete(compl); 564b5e24ccd4c8 Lina Iyer 2018-06-20 97 c8790cb6da58d3 Lina Iyer 2018-06-20 98 exit: baef1c90aac7e5 Stephen Boyd 2019-01-15 99 if (free) 564b5e24ccd4c8 Lina Iyer 2018-06-20 @100 kfree(rpm_msg); c1038456b02b86 Lina Iyer 2018-06-20 101 } c1038456b02b86 Lina Iyer 2018-06-20 102 :::::: The code at line 100 was first introduced by commit :::::: 564b5e24ccd4c840a7f84dfd952e5715dd9b3966 drivers: qcom: rpmh: allow requests to be sent asynchronously :::::: TO: Lina Iyer <[email protected]> :::::: CC: Andy Gross <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
