sanitize signedness/const for pointers to char in hpfs a bit
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
此提交包含在:
@@ -11,7 +11,7 @@
|
||||
|
||||
static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
|
||||
{
|
||||
const char *name = dentry->d_name.name;
|
||||
const unsigned char *name = dentry->d_name.name;
|
||||
unsigned len = dentry->d_name.len;
|
||||
struct quad_buffer_head qbh0;
|
||||
struct buffer_head *bh;
|
||||
@@ -24,7 +24,7 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
|
||||
int r;
|
||||
struct hpfs_dirent dee;
|
||||
int err;
|
||||
if ((err = hpfs_chk_name((char *)name, &len))) return err==-ENOENT ? -EINVAL : err;
|
||||
if ((err = hpfs_chk_name(name, &len))) return err==-ENOENT ? -EINVAL : err;
|
||||
lock_kernel();
|
||||
err = -ENOSPC;
|
||||
fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh);
|
||||
@@ -62,7 +62,7 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
|
||||
result->i_mode &= ~0222;
|
||||
|
||||
mutex_lock(&hpfs_i(dir)->i_mutex);
|
||||
r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0);
|
||||
r = hpfs_add_dirent(dir, name, len, &dee, 0);
|
||||
if (r == 1)
|
||||
goto bail3;
|
||||
if (r == -1) {
|
||||
@@ -121,7 +121,7 @@ bail:
|
||||
|
||||
static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd)
|
||||
{
|
||||
const char *name = dentry->d_name.name;
|
||||
const unsigned char *name = dentry->d_name.name;
|
||||
unsigned len = dentry->d_name.len;
|
||||
struct inode *result = NULL;
|
||||
struct buffer_head *bh;
|
||||
@@ -130,7 +130,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc
|
||||
int r;
|
||||
struct hpfs_dirent dee;
|
||||
int err;
|
||||
if ((err = hpfs_chk_name((char *)name, &len)))
|
||||
if ((err = hpfs_chk_name(name, &len)))
|
||||
return err==-ENOENT ? -EINVAL : err;
|
||||
lock_kernel();
|
||||
err = -ENOSPC;
|
||||
@@ -155,7 +155,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc
|
||||
result->i_op = &hpfs_file_iops;
|
||||
result->i_fop = &hpfs_file_ops;
|
||||
result->i_nlink = 1;
|
||||
hpfs_decide_conv(result, (char *)name, len);
|
||||
hpfs_decide_conv(result, name, len);
|
||||
hpfs_i(result)->i_parent_dir = dir->i_ino;
|
||||
result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, dee.creation_date);
|
||||
result->i_ctime.tv_nsec = 0;
|
||||
@@ -170,7 +170,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc
|
||||
hpfs_i(result)->mmu_private = 0;
|
||||
|
||||
mutex_lock(&hpfs_i(dir)->i_mutex);
|
||||
r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0);
|
||||
r = hpfs_add_dirent(dir, name, len, &dee, 0);
|
||||
if (r == 1)
|
||||
goto bail2;
|
||||
if (r == -1) {
|
||||
@@ -211,7 +211,7 @@ bail:
|
||||
|
||||
static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev)
|
||||
{
|
||||
const char *name = dentry->d_name.name;
|
||||
const unsigned char *name = dentry->d_name.name;
|
||||
unsigned len = dentry->d_name.len;
|
||||
struct buffer_head *bh;
|
||||
struct fnode *fnode;
|
||||
@@ -220,7 +220,7 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t
|
||||
struct hpfs_dirent dee;
|
||||
struct inode *result = NULL;
|
||||
int err;
|
||||
if ((err = hpfs_chk_name((char *)name, &len))) return err==-ENOENT ? -EINVAL : err;
|
||||
if ((err = hpfs_chk_name(name, &len))) return err==-ENOENT ? -EINVAL : err;
|
||||
if (hpfs_sb(dir->i_sb)->sb_eas < 2) return -EPERM;
|
||||
if (!new_valid_dev(rdev))
|
||||
return -EINVAL;
|
||||
@@ -256,7 +256,7 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t
|
||||
init_special_inode(result, mode, rdev);
|
||||
|
||||
mutex_lock(&hpfs_i(dir)->i_mutex);
|
||||
r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0);
|
||||
r = hpfs_add_dirent(dir, name, len, &dee, 0);
|
||||
if (r == 1)
|
||||
goto bail2;
|
||||
if (r == -1) {
|
||||
@@ -289,7 +289,7 @@ bail:
|
||||
|
||||
static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *symlink)
|
||||
{
|
||||
const char *name = dentry->d_name.name;
|
||||
const unsigned char *name = dentry->d_name.name;
|
||||
unsigned len = dentry->d_name.len;
|
||||
struct buffer_head *bh;
|
||||
struct fnode *fnode;
|
||||
@@ -298,7 +298,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy
|
||||
struct hpfs_dirent dee;
|
||||
struct inode *result;
|
||||
int err;
|
||||
if ((err = hpfs_chk_name((char *)name, &len))) return err==-ENOENT ? -EINVAL : err;
|
||||
if ((err = hpfs_chk_name(name, &len))) return err==-ENOENT ? -EINVAL : err;
|
||||
lock_kernel();
|
||||
if (hpfs_sb(dir->i_sb)->sb_eas < 2) {
|
||||
unlock_kernel();
|
||||
@@ -335,7 +335,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy
|
||||
result->i_data.a_ops = &hpfs_symlink_aops;
|
||||
|
||||
mutex_lock(&hpfs_i(dir)->i_mutex);
|
||||
r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0);
|
||||
r = hpfs_add_dirent(dir, name, len, &dee, 0);
|
||||
if (r == 1)
|
||||
goto bail2;
|
||||
if (r == -1) {
|
||||
@@ -345,7 +345,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy
|
||||
fnode->len = len;
|
||||
memcpy(fnode->name, name, len > 15 ? 15 : len);
|
||||
fnode->up = dir->i_ino;
|
||||
hpfs_set_ea(result, fnode, "SYMLINK", (char *)symlink, strlen(symlink));
|
||||
hpfs_set_ea(result, fnode, "SYMLINK", symlink, strlen(symlink));
|
||||
mark_buffer_dirty(bh);
|
||||
brelse(bh);
|
||||
|
||||
@@ -369,7 +369,7 @@ bail:
|
||||
|
||||
static int hpfs_unlink(struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
const char *name = dentry->d_name.name;
|
||||
const unsigned char *name = dentry->d_name.name;
|
||||
unsigned len = dentry->d_name.len;
|
||||
struct quad_buffer_head qbh;
|
||||
struct hpfs_dirent *de;
|
||||
@@ -381,12 +381,12 @@ static int hpfs_unlink(struct inode *dir, struct dentry *dentry)
|
||||
int err;
|
||||
|
||||
lock_kernel();
|
||||
hpfs_adjust_length((char *)name, &len);
|
||||
hpfs_adjust_length(name, &len);
|
||||
again:
|
||||
mutex_lock(&hpfs_i(inode)->i_parent_mutex);
|
||||
mutex_lock(&hpfs_i(dir)->i_mutex);
|
||||
err = -ENOENT;
|
||||
de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *)name, len, &dno, &qbh);
|
||||
de = map_dirent(dir, hpfs_i(dir)->i_dno, name, len, &dno, &qbh);
|
||||
if (!de)
|
||||
goto out;
|
||||
|
||||
@@ -451,7 +451,7 @@ out:
|
||||
|
||||
static int hpfs_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
const char *name = dentry->d_name.name;
|
||||
const unsigned char *name = dentry->d_name.name;
|
||||
unsigned len = dentry->d_name.len;
|
||||
struct quad_buffer_head qbh;
|
||||
struct hpfs_dirent *de;
|
||||
@@ -462,12 +462,12 @@ static int hpfs_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
int err;
|
||||
int r;
|
||||
|
||||
hpfs_adjust_length((char *)name, &len);
|
||||
hpfs_adjust_length(name, &len);
|
||||
lock_kernel();
|
||||
mutex_lock(&hpfs_i(inode)->i_parent_mutex);
|
||||
mutex_lock(&hpfs_i(dir)->i_mutex);
|
||||
err = -ENOENT;
|
||||
de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *)name, len, &dno, &qbh);
|
||||
de = map_dirent(dir, hpfs_i(dir)->i_dno, name, len, &dno, &qbh);
|
||||
if (!de)
|
||||
goto out;
|
||||
|
||||
@@ -546,10 +546,10 @@ const struct address_space_operations hpfs_symlink_aops = {
|
||||
static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
struct inode *new_dir, struct dentry *new_dentry)
|
||||
{
|
||||
char *old_name = (char *)old_dentry->d_name.name;
|
||||
int old_len = old_dentry->d_name.len;
|
||||
char *new_name = (char *)new_dentry->d_name.name;
|
||||
int new_len = new_dentry->d_name.len;
|
||||
const unsigned char *old_name = old_dentry->d_name.name;
|
||||
unsigned old_len = old_dentry->d_name.len;
|
||||
const unsigned char *new_name = new_dentry->d_name.name;
|
||||
unsigned new_len = new_dentry->d_name.len;
|
||||
struct inode *i = old_dentry->d_inode;
|
||||
struct inode *new_inode = new_dentry->d_inode;
|
||||
struct quad_buffer_head qbh, qbh1;
|
||||
@@ -560,9 +560,9 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
struct buffer_head *bh;
|
||||
struct fnode *fnode;
|
||||
int err;
|
||||
if ((err = hpfs_chk_name((char *)new_name, &new_len))) return err;
|
||||
if ((err = hpfs_chk_name(new_name, &new_len))) return err;
|
||||
err = 0;
|
||||
hpfs_adjust_length((char *)old_name, &old_len);
|
||||
hpfs_adjust_length(old_name, &old_len);
|
||||
|
||||
lock_kernel();
|
||||
/* order doesn't matter, due to VFS exclusion */
|
||||
@@ -579,7 +579,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
goto end1;
|
||||
}
|
||||
|
||||
if (!(dep = map_dirent(old_dir, hpfs_i(old_dir)->i_dno, (char *)old_name, old_len, &dno, &qbh))) {
|
||||
if (!(dep = map_dirent(old_dir, hpfs_i(old_dir)->i_dno, old_name, old_len, &dno, &qbh))) {
|
||||
hpfs_error(i->i_sb, "lookup succeeded but map dirent failed");
|
||||
err = -ENOENT;
|
||||
goto end1;
|
||||
@@ -590,7 +590,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
if (new_inode) {
|
||||
int r;
|
||||
if ((r = hpfs_remove_dirent(old_dir, dno, dep, &qbh, 1)) != 2) {
|
||||
if ((nde = map_dirent(new_dir, hpfs_i(new_dir)->i_dno, (char *)new_name, new_len, NULL, &qbh1))) {
|
||||
if ((nde = map_dirent(new_dir, hpfs_i(new_dir)->i_dno, new_name, new_len, NULL, &qbh1))) {
|
||||
clear_nlink(new_inode);
|
||||
copy_de(nde, &de);
|
||||
memcpy(nde->name, new_name, new_len);
|
||||
@@ -618,7 +618,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
}
|
||||
|
||||
if (new_dir == old_dir)
|
||||
if (!(dep = map_dirent(old_dir, hpfs_i(old_dir)->i_dno, (char *)old_name, old_len, &dno, &qbh))) {
|
||||
if (!(dep = map_dirent(old_dir, hpfs_i(old_dir)->i_dno, old_name, old_len, &dno, &qbh))) {
|
||||
hpfs_unlock_creation(i->i_sb);
|
||||
hpfs_error(i->i_sb, "lookup succeeded but map dirent failed at #2");
|
||||
err = -ENOENT;
|
||||
@@ -648,7 +648,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
brelse(bh);
|
||||
}
|
||||
hpfs_i(i)->i_conv = hpfs_sb(i->i_sb)->sb_conv;
|
||||
hpfs_decide_conv(i, (char *)new_name, new_len);
|
||||
hpfs_decide_conv(i, new_name, new_len);
|
||||
end1:
|
||||
if (old_dir != new_dir)
|
||||
mutex_unlock(&hpfs_i(new_dir)->i_mutex);
|
||||
|
新增問題並參考
封鎖使用者