* [daniel-thompson:clang-analyzer/initial_review 4/6] fs/ceph/super.c:859:2: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
@ 2022-04-28 11:29 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-28 11:29 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 24446 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Daniel Thompson <daniel.thompson@linaro.org>
tree: https://git.linaro.org/people/daniel.thompson/linux.git clang-analyzer/initial_review
head: 9a4791991f0501aaed0ec1b3f4bbbc8950418818
commit: 54ea8a7c9b6da22299c93c15cfa385ecba84cb29 [4/6] [RFC] printk: Allows static analyzer to observe no_printk() arguments
:::::: branch date: 25 hours ago
:::::: commit date: 25 hours ago
config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220428/202204281932.rmgD4tif-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 1cddcfdc3c683b393df1a5c9063252eb60e52818)
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
git remote add daniel-thompson https://git.linaro.org/people/daniel.thompson/linux.git
git fetch --no-tags daniel-thompson clang-analyzer/initial_review
git checkout 54ea8a7c9b6da22299c93c15cfa385ecba84cb29
# save the config file
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
#define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/syscalls.h:228:2: note: expanded from macro 'SYSCALL_DEFINEx'
__SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/x86/include/asm/syscall_wrapper.h:235:14: note: expanded from macro '__SYSCALL_DEFINEx'
long ret = __do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));\
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: expanded from here
ipc/sem.c:1709:9: note: Calling 'ksys_semctl'
return ksys_semctl(semid, semnum, cmd, arg, IPC_64);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ipc/sem.c:1660:6: note: 'semid' is >= 0
if (semid < 0)
^~~~~
ipc/sem.c:1660:2: note: Taking false branch
if (semid < 0)
^
ipc/sem.c:1665:2: note: Control jumps to 'case 17:' @line 1683
switch (cmd) {
^
ipc/sem.c:1684:10: note: Calling 'semctl_main'
return semctl_main(ns, semid, semnum, cmd, p);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ipc/sem.c:1418:2: note: Taking false branch
if (IS_ERR(sma)) {
^
ipc/sem.c:1426:35: note: 'cmd' is equal to SETALL
if (ipcperms(ns, &sma->sem_perm, cmd == SETALL ? S_IWUGO : S_IRUGO))
^~~
ipc/sem.c:1426:35: note: '?' condition is true
ipc/sem.c:1426:6: note: Assuming the condition is false
if (ipcperms(ns, &sma->sem_perm, cmd == SETALL ? S_IWUGO : S_IRUGO))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ipc/sem.c:1426:2: note: Taking false branch
if (ipcperms(ns, &sma->sem_perm, cmd == SETALL ? S_IWUGO : S_IRUGO))
^
ipc/sem.c:1430:6: note: Assuming 'err' is 0
if (err)
^~~
ipc/sem.c:1430:2: note: Taking false branch
if (err)
^
ipc/sem.c:1434:2: note: Control jumps to 'case 17:' at line 1475
switch (cmd) {
^
ipc/sem.c:1480:7: note: Assuming the condition is false
if (!ipc_rcu_getref(&sma->sem_perm)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ipc/sem.c:1480:3: note: Taking false branch
if (!ipc_rcu_getref(&sma->sem_perm)) {
^
ipc/sem.c:1486:7: note: Assuming 'nsems' is <= SEMMSL_FAST
if (nsems > SEMMSL_FAST) {
^~~~~~~~~~~~~~~~~~~
ipc/sem.c:1486:3: note: Taking false branch
if (nsems > SEMMSL_FAST) {
^
ipc/sem.c:1495:7: note: Calling 'copy_from_user'
if (copy_from_user(sem_io, p, nsems*sizeof(ushort))) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/uaccess.h:191:2: note: Taking false branch
if (likely(check_copy_size(to, n, false)))
^
include/linux/uaccess.h:193:2: note: Returning without writing to '*to'
return n;
^
ipc/sem.c:1495:7: note: Returning from 'copy_from_user'
if (copy_from_user(sem_io, p, nsems*sizeof(ushort))) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ipc/sem.c:1495:7: note: Assuming the condition is false
if (copy_from_user(sem_io, p, nsems*sizeof(ushort))) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ipc/sem.c:1495:3: note: Taking false branch
if (copy_from_user(sem_io, p, nsems*sizeof(ushort))) {
^
ipc/sem.c:1501:8: note: The value 0 is assigned to 'i'
for (i = 0; i < nsems; i++) {
^~~~~
ipc/sem.c:1501:15: note: Assuming 'i' is < 'nsems'
for (i = 0; i < nsems; i++) {
^~~~~~~~~
ipc/sem.c:1501:3: note: Loop condition is true. Entering loop body
for (i = 0; i < nsems; i++) {
^
ipc/sem.c:1502:18: note: The left operand of '>' is a garbage value
if (sem_io[i] > SEMVMX) {
~~~~~~~~~ ^
Suppressed 3 warnings (3 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.
5 warnings generated.
Suppressed 5 warnings (5 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
5 warnings generated.
Suppressed 5 warnings (5 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.
6 warnings generated.
>> fs/ceph/super.c:859:2: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
dout("destroy_fs_client %p done\n", fsc);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
printk(fmt, ##__VA_ARGS__); \
^
include/linux/printk.h:446:44: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
fs/ceph/super.c:1358:2: note: Taking true branch
dout("kill_sb %p\n", s);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
if (__is_defined(CC_IS_STATIC_ANALYZER)) \
^
fs/ceph/super.c:1358:2: note: Loop condition is false. Exiting loop
dout("kill_sb %p\n", s);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
printk(fmt, ##__VA_ARGS__); \
^
include/linux/printk.h:446:26: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
__printk_index_emit(_fmt, NULL, NULL); \
^
include/linux/printk.h:392:34: note: expanded from macro '__printk_index_emit'
#define __printk_index_emit(...) do {} while (0)
^
fs/ceph/super.c:1370:2: note: Calling 'destroy_fs_client'
destroy_fs_client(fsc);
^~~~~~~~~~~~~~~~~~~~~~
fs/ceph/super.c:844:2: note: Taking true branch
dout("destroy_fs_client %p\n", fsc);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
if (__is_defined(CC_IS_STATIC_ANALYZER)) \
^
fs/ceph/super.c:844:2: note: Loop condition is false. Exiting loop
dout("destroy_fs_client %p\n", fsc);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
printk(fmt, ##__VA_ARGS__); \
^
include/linux/printk.h:446:26: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
__printk_index_emit(_fmt, NULL, NULL); \
^
include/linux/printk.h:392:34: note: expanded from macro '__printk_index_emit'
#define __printk_index_emit(...) do {} while (0)
^
fs/ceph/super.c:858:2: note: Memory is released
kfree(fsc);
^~~~~~~~~~
fs/ceph/super.c:859:2: note: Taking true branch
dout("destroy_fs_client %p done\n", fsc);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
if (__is_defined(CC_IS_STATIC_ANALYZER)) \
^
fs/ceph/super.c:859:2: note: Loop condition is false. Exiting loop
dout("destroy_fs_client %p done\n", fsc);
--
^
fs/fat/namei_vfat.c:931:7: note: 'is_dir' is 0
if (is_dir) {
^~~~~~
fs/fat/namei_vfat.c:931:3: note: Taking false branch
if (is_dir) {
^
fs/fat/namei_vfat.c:949:6: note: Assuming the condition is true
if (IS_DIRSYNC(new_dir)) {
^
include/linux/fs.h:2185:28: note: expanded from macro 'IS_DIRSYNC'
#define IS_DIRSYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS|SB_DIRSYNC) || \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/fs.h:2179:31: note: expanded from macro '__IS_FLG'
#define __IS_FLG(inode, flg) ((inode)->i_sb->s_flags & (flg))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/fat/namei_vfat.c:949:6: note: Left side of '||' is true
if (IS_DIRSYNC(new_dir)) {
^
include/linux/fs.h:2185:71: note: expanded from macro 'IS_DIRSYNC'
#define IS_DIRSYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS|SB_DIRSYNC) || \
^
fs/fat/namei_vfat.c:951:7: note: Assuming 'err' is 0
if (err)
^~~
fs/fat/namei_vfat.c:951:3: note: Taking false branch
if (err)
^
fs/fat/namei_vfat.c:956:6: note: 'update_dotdot' is 0
if (update_dotdot) {
^~~~~~~~~~~~~
fs/fat/namei_vfat.c:956:2: note: Taking false branch
if (update_dotdot) {
^
fs/fat/namei_vfat.c:971:6: note: Assuming 'err' is not equal to 0
if (err)
^~~
fs/fat/namei_vfat.c:971:2: note: Taking true branch
if (err)
^
fs/fat/namei_vfat.c:972:3: note: Control jumps to line 996
goto error_dotdot;
^
fs/fat/namei_vfat.c:998:6: note: 'update_dotdot' is 0
if (update_dotdot) {
^~~~~~~~~~~~~
fs/fat/namei_vfat.c:998:2: note: Taking false branch
if (update_dotdot) {
^
fs/fat/namei_vfat.c:1006:6: note: 'new_inode' is non-null
if (new_inode) {
^~~~~~~~~
fs/fat/namei_vfat.c:1006:2: note: Taking true branch
if (new_inode) {
^
fs/fat/namei_vfat.c:1008:7: note: 'corrupt' is 1
if (corrupt)
^~~~~~~
fs/fat/namei_vfat.c:1008:3: note: Taking true branch
if (corrupt)
^
fs/fat/namei_vfat.c:1020:6: note: Assuming 'corrupt' is < 0
if (corrupt < 0) {
^~~~~~~~~~~
fs/fat/namei_vfat.c:1020:2: note: Taking true branch
if (corrupt < 0) {
^
fs/fat/namei_vfat.c:1021:3: note: 5th function call argument is an uninitialized value
fat_fs_error(new_dir->i_sb,
^
fs/fat/fat.h:433:2: note: expanded from macro 'fat_fs_error'
__fat_fs_error(sb, 1, fmt , ## args)
^ ~~~~
Suppressed 3 warnings (3 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.
4 warnings generated.
sound/core/info.c:114:3: warning: Value stored to 'offset' is never read [clang-analyzer-deadcode.DeadStores]
offset = entry->c.ops->llseek(entry,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
sound/core/info.c:114:3: note: Value stored to 'offset' is never read
offset = entry->c.ops->llseek(entry,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 3 warnings (3 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.
3 warnings generated.
Suppressed 3 warnings (3 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.
3 warnings generated.
Suppressed 3 warnings (3 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.
3 warnings generated.
Suppressed 3 warnings (3 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.
3 warnings generated.
Suppressed 3 warnings (3 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
6 warnings generated.
>> net/ceph/ceph_common.c:776:2: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
dout("destroy_client %p done\n", client);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^ ~~~~~~~~~~~
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^ ~~~~~~~~~~~
include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
printk(fmt, ##__VA_ARGS__); \
^ ~~~~~~~~~~~
include/linux/printk.h:446:44: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^ ~~~~~~~~~~~
include/linux/printk.h:418:3: note: expanded from macro 'printk_index_wrap'
_p_func(_fmt, ##__VA_ARGS__); \
^ ~~~~~~~~~~~
net/ceph/ceph_common.c:762:2: note: Taking true branch
dout("destroy_client %p\n", client);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
if (__is_defined(CC_IS_STATIC_ANALYZER)) \
^
net/ceph/ceph_common.c:762:2: note: Loop condition is false. Exiting loop
dout("destroy_client %p\n", client);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
printk(fmt, ##__VA_ARGS__); \
^
include/linux/printk.h:446:26: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
__printk_index_emit(_fmt, NULL, NULL); \
^
include/linux/printk.h:392:34: note: expanded from macro '__printk_index_emit'
#define __printk_index_emit(...) do {} while (0)
^
net/ceph/ceph_common.c:775:2: note: Memory is released
kfree(client);
^~~~~~~~~~~~~
net/ceph/ceph_common.c:776:2: note: Taking true branch
dout("destroy_client %p done\n", client);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
if (__is_defined(CC_IS_STATIC_ANALYZER)) \
^
net/ceph/ceph_common.c:776:2: note: Loop condition is false. Exiting loop
dout("destroy_client %p done\n", client);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
printk(fmt, ##__VA_ARGS__); \
^
include/linux/printk.h:446:26: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
__printk_index_emit(_fmt, NULL, NULL); \
^
include/linux/printk.h:392:34: note: expanded from macro '__printk_index_emit'
#define __printk_index_emit(...) do {} while (0)
^
net/ceph/ceph_common.c:776:2: note: Use of memory after it is freed
dout("destroy_client %p done\n", client);
^
include/linux/ceph/ceph_debug.h:35:25: note: expanded from macro 'dout'
# define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__)
^ ~~~~~~~~~~~
include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
^ ~~~~~~~~~~~
include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
printk(fmt, ##__VA_ARGS__); \
^ ~~~~~~~~~~~
include/linux/printk.h:446:44: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
vim +859 fs/ceph/super.c
a57d9064e4ee4e9 Yan, Zheng 2018-05-18 841
0c6d4b4e22a513f H Hartley Sweeten 2011-09-23 842 static void destroy_fs_client(struct ceph_fs_client *fsc)
16725b9d2a2e3d0 Sage Weil 2009-10-06 843 {
3d14c5d2b6e15c2 Yehuda Sadeh 2010-04-06 844 dout("destroy_fs_client %p\n", fsc);
16725b9d2a2e3d0 Sage Weil 2009-10-06 845
18f473b384a64ce Xiubo Li 2020-07-16 846 spin_lock(&ceph_fsc_lock);
18f473b384a64ce Xiubo Li 2020-07-16 847 list_del(&fsc->metric_wakeup);
18f473b384a64ce Xiubo Li 2020-07-16 848 spin_unlock(&ceph_fsc_lock);
18f473b384a64ce Xiubo Li 2020-07-16 849
3ee5a7015c8b7cb Jeff Layton 2019-09-12 850 ceph_mdsc_destroy(fsc);
1cf89a8dee5e6e9 Yan, Zheng 2019-05-18 851 destroy_workqueue(fsc->inode_wq);
e3ec8d6898f7163 Yan, Zheng 2019-01-14 852 destroy_workqueue(fsc->cap_wq);
a922d38fd10d55d Sage Weil 2010-05-29 853
3d14c5d2b6e15c2 Yehuda Sadeh 2010-04-06 854 destroy_mount_options(fsc->mount_options);
5dfc589a8467470 Sage Weil 2010-05-04 855
3d14c5d2b6e15c2 Yehuda Sadeh 2010-04-06 856 ceph_destroy_client(fsc->client);
16725b9d2a2e3d0 Sage Weil 2009-10-06 857
3d14c5d2b6e15c2 Yehuda Sadeh 2010-04-06 858 kfree(fsc);
3d14c5d2b6e15c2 Yehuda Sadeh 2010-04-06 @859 dout("destroy_fs_client %p done\n", fsc);
16725b9d2a2e3d0 Sage Weil 2009-10-06 860 }
16725b9d2a2e3d0 Sage Weil 2009-10-06 861
:::::: The code at line 859 was first introduced by commit
:::::: 3d14c5d2b6e15c21d8e5467dc62d33127c23a644 ceph: factor out libceph from Ceph file system
:::::: TO: Yehuda Sadeh <yehuda@hq.newdream.net>
:::::: CC: Sage Weil <sage@newdream.net>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-04-28 11:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-28 11:29 [daniel-thompson:clang-analyzer/initial_review 4/6] fs/ceph/super.c:859:2: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc] kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.