Defined in 1 files as a prototype:
Defined in 1 files as a function:
Referenced in 2 files:
Smatch caller information:
fs/namei.c vfs_rename() -> may_delete_dentry()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 2 | victim | 4096-ptr_max |
| DATA_SOURCE | 3 | isdir | r d_is_dir |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING |
fs/namei.c vfs_rename() -> may_delete_dentry()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | dir | 4096-ptr_max |
| PARAM_VALUE | 1 | dir->i_sb | 4096-ptr_max |
| PARAM_VALUE | 2 | victim | 4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_inode | 1-u64max |
| DATA_SOURCE | 3 | isdir | r d_is_dir |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| UNITS | 2 | victim | unit_jiffy |
fs/namei.c vfs_rename() -> may_delete_dentry()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | dir | 4096-ptr_max |
| PARAM_VALUE | 1 | dir->i_sb | 4096-ptr_max |
| PARAM_VALUE | 2 | victim | 4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_inode | 1-u64max |
| DATA_SOURCE | 3 | isdir | r d_is_dir |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| UNITS | 2 | victim | unit_jiffy |
fs/namei.c vfs_rmdir() -> may_delete_dentry()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | dir->i_rwsem.first_waiter->handoff_set | 0-1 |
| PARAM_VALUE | 1 | dir->i_rwsem.first_waiter->type | 0-1 |
| PARAM_VALUE | 2 | victim | 4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_inode->i_mapping->i_mmap_rwsem.first_waiter->handoff_set | 0-1 |
| PARAM_VALUE | 2 | victim->d_inode->i_mapping->i_mmap_rwsem.first_waiter->type | 0-1 |
| PARAM_VALUE | 2 | victim->d_inode->i_rwsem.first_waiter->handoff_set | 0-1 |
| PARAM_VALUE | 2 | victim->d_inode->i_rwsem.first_waiter->type | 0-1 |
| PARAM_VALUE | 2 | victim->d_op->d_dname | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_iput | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_prune | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_real | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_parent->d_inode->i_rwsem.first_waiter->handoff_set | 0-1 |
| PARAM_VALUE | 2 | victim->d_parent->d_inode->i_rwsem.first_waiter->type | 0-1 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_init | 0,2385819921126617088,7057831443282669568,7824184004865302528 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_iput | 0,170374395438985216,837750826476904448,5086081384299388928,8216155483032948736 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_manage | 0,1859587847549206528 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_prune | 0,2225594340392566784,7225953709177749504 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_real | 0,4509355519306412032 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_automount | 0,2908707185815040000,3401111987815645184,6746145930460459008,7190988915944083456,7386785427940065280,8018779550845526016 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_init | 0,2385819921126617088,7057831443282669568,7824184004865302528 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_iput | 0,170374395438985216,837750826476904448,5086081384299388928,8216155483032948736 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_manage | 0,1859587847549206528 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_prune | 0,2225594340392566784,7225953709177749504 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_real | 0,4509355519306412032 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_unalias_trylock | 0,6635409759016140800 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_unalias_unlock | 0,6336447517789900800 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_weak_revalidate | 0,1549882712720502784,5632434648052031488,5669063523602272256,7231033168839651328 |
| PARAM_VALUE | 3 | isdir | 1 |
| BUF_SIZE | 2 | victim | (-1)-s32max |
| BUF_SIZE | 2 | victim | (-1)-s32max |
| CAPPED_DATA | 2 | victim | 1 |
| DATA_SOURCE | 0 | idmap | $0 |
| DATA_SOURCE | 1 | dir | $1 |
| DATA_SOURCE | 2 | victim | $2 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| USER_DATA | 2 | victim->d_inode->i_mode | 0-u16max |
| USER_DATA | 2 | victim->d_inode->i_size | (-9223372036854775807)-(-4),0-s64max |
| NO_OVERFLOW_SIMPLE | 2 | victim->dentry->d_inode->i_size | |
| NO_OVERFLOW_SIMPLE | 2 | victim->moved->d_inode->i_size | |
| HALF_LOCKED2 | &dir->d_inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| HALF_LOCKED2 | 1 | &dir->i_rwsem | |
| HALF_LOCKED2 | 2 | &victim->d_lockref.lock | |
| HALF_LOCKED2 | 2 | &victim->d_sb->s_vfs_rename_mutex |
fs/namei.c vfs_unlink() -> may_delete_dentry()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | dir->i_op->unlink | 0,4096-ptr_max |
| PARAM_VALUE | 1 | dir->i_rwsem.first_waiter->handoff_set | 0-1 |
| PARAM_VALUE | 1 | dir->i_rwsem.first_waiter->type | 0-1 |
| PARAM_VALUE | 2 | victim | 4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_inode->i_mapping->i_mmap_rwsem.first_waiter->handoff_set | 0-1 |
| PARAM_VALUE | 2 | victim->d_inode->i_mapping->i_mmap_rwsem.first_waiter->type | 0-1 |
| PARAM_VALUE | 2 | victim->d_inode->i_rwsem.first_waiter->handoff_set | 0-1 |
| PARAM_VALUE | 2 | victim->d_inode->i_rwsem.first_waiter->type | 0-1 |
| PARAM_VALUE | 2 | victim->d_op->d_dname | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_iput | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_prune | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_real | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_parent->d_inode->i_rwsem.first_waiter->handoff_set | 0-1 |
| PARAM_VALUE | 2 | victim->d_parent->d_inode->i_rwsem.first_waiter->type | 0-1 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_automount | 0,2908707185815040000,3401111987815645184,6746145930460459008,7190988915944083456,7386785427940065280,8018779550845526016 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_init | 0,2385819921126617088,7057831443282669568,7824184004865302528 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_iput | 0,170374395438985216,837750826476904448,5086081384299388928,8216155483032948736 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_manage | 0,1859587847549206528 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_prune | 0,2225594340392566784,7225953709177749504 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_real | 0,4509355519306412032 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_unalias_trylock | 0,6635409759016140800 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_unalias_unlock | 0,6336447517789900800 |
| PARAM_VALUE | 2 | victim->d_parent->d_sb->__s_d_op->d_weak_revalidate | 0,1549882712720502784,5632434648052031488,5669063523602272256,7231033168839651328 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_automount | 0,2908707185815040000,3401111987815645184,6746145930460459008,7190988915944083456,7386785427940065280,8018779550845526016 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_init | 0,2385819921126617088,7057831443282669568,7824184004865302528 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_iput | 0,170374395438985216,837750826476904448,5086081384299388928,8216155483032948736 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_manage | 0,1859587847549206528 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_prune | 0,2225594340392566784,7225953709177749504 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_real | 0,4509355519306412032 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_unalias_trylock | 0,6635409759016140800 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_unalias_unlock | 0,6336447517789900800 |
| PARAM_VALUE | 2 | victim->d_sb->__s_d_op->d_weak_revalidate | 0,1549882712720502784,5632434648052031488,5669063523602272256,7231033168839651328 |
| PARAM_VALUE | 2 | victim->d_sb->s_export_op->flags | 0,127 |
| PARAM_VALUE | 3 | isdir | 0 |
| BUF_SIZE | 2 | victim | (-1)-s32max |
| BUF_SIZE | 2 | victim | (-1)-s32max |
| CAPPED_DATA | 2 | victim | 1 |
| DATA_SOURCE | 0 | idmap | $0 |
| DATA_SOURCE | 1 | dir | $1 |
| DATA_SOURCE | 2 | victim | $2 |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| USER_DATA | 2 | victim->d_inode->i_mode | 0-u16max |
| USER_DATA | 2 | victim->d_inode->i_size | (-9223372036854775807)-(-4),0-s64max |
| NO_OVERFLOW_SIMPLE | 2 | victim->dentry->d_inode->i_size | |
| NO_OVERFLOW_SIMPLE | 2 | victim->moved->d_inode->i_size | |
| UNITS | 2 | victim | unit_jiffy |
| HALF_LOCKED2 | &dir->d_inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| HALF_LOCKED2 | 1 | &dir->i_rwsem | |
| HALF_LOCKED2 | 2 | &victim->d_lockref.lock | |
| HALF_LOCKED2 | 2 | &victim->d_sb->s_vfs_rename_mutex |
fs/btrfs/ioctl.c btrfs_ioctl_snap_destroy() -> may_delete_dentry()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 1 | dir | 4096-ptr_max |
| PARAM_VALUE | 2 | victim | 4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_dname | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_iput | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_prune | 0,4096-ptr_max |
| PARAM_VALUE | 2 | victim->d_op->d_real | 0,4096-ptr_max |
| PARAM_VALUE | 3 | isdir | 1 |
| DATA_SOURCE | 0 | idmap | r file_mnt_idmap |
| DATA_SOURCE | 2 | victim | r start_removing_killable |
| CAPABLE | 0 | 21 | |
| HALF_LOCKED2 | 2 | &victim->d_lockref.lock |