|
|
| |
encoded_value = (char *)value; | encoded_value = (char *)value; |
| |
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
|
mutex_lock(&hidden_dentry->d_inode->i_mutex); |
|
#else |
down(&hidden_dentry->d_inode->i_sem); | down(&hidden_dentry->d_inode->i_sem); |
|
#endif |
/* lock_kernel() already done by caller. */ | /* lock_kernel() already done by caller. */ |
err = | err = |
hidden_dentry->d_inode->i_op->getxattr(hidden_dentry, | hidden_dentry->d_inode->i_op->getxattr(hidden_dentry, |
encoded_name, | encoded_name, |
encoded_value, size); | encoded_value, size); |
/* unlock_kernel() will be done by caller. */ | /* unlock_kernel() will be done by caller. */ |
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
|
mutex_unlock(&hidden_dentry->d_inode->i_mutex); |
|
#else |
up(&hidden_dentry->d_inode->i_sem); | up(&hidden_dentry->d_inode->i_sem); |
|
#endif |
| |
} | } |
| |
|
|
name, (unsigned long)size, flags); | name, (unsigned long)size, flags); |
| |
if (hidden_dentry->d_inode->i_op->setxattr) { | if (hidden_dentry->d_inode->i_op->setxattr) { |
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
|
mutex_lock(&hidden_dentry->d_inode->i_mutex); |
|
#else |
down(&hidden_dentry->d_inode->i_sem); | down(&hidden_dentry->d_inode->i_sem); |
|
#endif |
/* lock_kernel() already done by caller. */ | /* lock_kernel() already done by caller. */ |
err = hidden_dentry->d_inode->i_op-> | err = hidden_dentry->d_inode->i_op-> |
setxattr(hidden_dentry, name, value, size, flags); | setxattr(hidden_dentry, name, value, size, flags); |
/* unlock_kernel() will be done by caller. */ | /* unlock_kernel() will be done by caller. */ |
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
|
mutex_unlock(&hidden_dentry->d_inode->i_mutex); |
|
#else |
up(&hidden_dentry->d_inode->i_sem); | up(&hidden_dentry->d_inode->i_sem); |
|
#endif |
} | } |
| |
unlock_dentry(dentry); | unlock_dentry(dentry); |
|
|
if (hidden_dentry->d_inode->i_op->removexattr) { | if (hidden_dentry->d_inode->i_op->removexattr) { |
encoded_name = (char *)name; | encoded_name = (char *)name; |
| |
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
|
mutex_lock(&hidden_dentry->d_inode->i_mutex); |
|
#else |
down(&hidden_dentry->d_inode->i_sem); | down(&hidden_dentry->d_inode->i_sem); |
|
#endif |
/* lock_kernel() already done by caller. */ | /* lock_kernel() already done by caller. */ |
err = | err = |
hidden_dentry->d_inode->i_op->removexattr(hidden_dentry, | hidden_dentry->d_inode->i_op->removexattr(hidden_dentry, |
encoded_name); | encoded_name); |
/* unlock_kernel() will be done by caller. */ | /* unlock_kernel() will be done by caller. */ |
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
|
mutex_unlock(&hidden_dentry->d_inode->i_mutex); |
|
#else |
up(&hidden_dentry->d_inode->i_sem); | up(&hidden_dentry->d_inode->i_sem); |
|
#endif |
} | } |
| |
unlock_dentry(dentry); | unlock_dentry(dentry); |
|
|
| |
if (hidden_dentry->d_inode->i_op->listxattr) { | if (hidden_dentry->d_inode->i_op->listxattr) { |
encoded_list = list; | encoded_list = list; |
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
|
mutex_lock(&hidden_dentry->d_inode->i_mutex); |
|
#else |
down(&hidden_dentry->d_inode->i_sem); | down(&hidden_dentry->d_inode->i_sem); |
|
#endif |
/* lock_kernel() already done by caller. */ | /* lock_kernel() already done by caller. */ |
err = | err = |
hidden_dentry->d_inode->i_op->listxattr(hidden_dentry, | hidden_dentry->d_inode->i_op->listxattr(hidden_dentry, |
encoded_list, size); | encoded_list, size); |
/* unlock_kernel() will be done by caller. */ | /* unlock_kernel() will be done by caller. */ |
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
|
mutex_unlock(&hidden_dentry->d_inode->i_mutex); |
|
#else |
up(&hidden_dentry->d_inode->i_sem); | up(&hidden_dentry->d_inode->i_sem); |
|
#endif |
} | } |
| |
unlock_dentry(dentry); | unlock_dentry(dentry); |