diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2010-01-31 17:09:29 -0500 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-03-03 14:07:57 -0500 |
| commit | 7e7742ee005c887b86fd1fd38d5b48419329dfa0 (patch) | |
| tree | d3bfe43e360fe53a2c07ce2014f2f4714aa24b4b /fs/hpfs | |
| parent | 1f707137b55764740981d022d29c622832a61880 (diff) | |
sanitize signedness/const for pointers to char in hpfs a bit
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/hpfs')
| -rw-r--r-- | fs/hpfs/anode.c | 2 | ||||
| -rw-r--r-- | fs/hpfs/dentry.c | 14 | ||||
| -rw-r--r-- | fs/hpfs/dir.c | 14 | ||||
| -rw-r--r-- | fs/hpfs/dnode.c | 21 | ||||
| -rw-r--r-- | fs/hpfs/ea.c | 7 | ||||
| -rw-r--r-- | fs/hpfs/hpfs_fn.h | 30 | ||||
| -rw-r--r-- | fs/hpfs/inode.c | 4 | ||||
| -rw-r--r-- | fs/hpfs/map.c | 6 | ||||
| -rw-r--r-- | fs/hpfs/name.c | 21 | ||||
| -rw-r--r-- | fs/hpfs/namei.c | 60 |
10 files changed, 97 insertions, 82 deletions
diff --git a/fs/hpfs/anode.c b/fs/hpfs/anode.c index 1aa88c4e096..6a2f04bf3df 100644 --- a/fs/hpfs/anode.c +++ b/fs/hpfs/anode.c | |||
| @@ -353,7 +353,7 @@ int hpfs_ea_read(struct super_block *s, secno a, int ano, unsigned pos, | |||
| 353 | } | 353 | } |
| 354 | 354 | ||
| 355 | int hpfs_ea_write(struct super_block *s, secno a, int ano, unsigned pos, | 355 | int hpfs_ea_write(struct super_block *s, secno a, int ano, unsigned pos, |
| 356 | unsigned len, char *buf) | 356 | unsigned len, const char *buf) |
| 357 | { | 357 | { |
| 358 | struct buffer_head *bh; | 358 | struct buffer_head *bh; |
| 359 | char *data; | 359 | char *data; |
diff --git a/fs/hpfs/dentry.c b/fs/hpfs/dentry.c index 940d6d150be..67d9d36b3d5 100644 --- a/fs/hpfs/dentry.c +++ b/fs/hpfs/dentry.c | |||
| @@ -20,8 +20,8 @@ static int hpfs_hash_dentry(struct dentry *dentry, struct qstr *qstr) | |||
| 20 | 20 | ||
| 21 | if (l == 1) if (qstr->name[0]=='.') goto x; | 21 | if (l == 1) if (qstr->name[0]=='.') goto x; |
| 22 | if (l == 2) if (qstr->name[0]=='.' || qstr->name[1]=='.') goto x; | 22 | if (l == 2) if (qstr->name[0]=='.' || qstr->name[1]=='.') goto x; |
| 23 | hpfs_adjust_length((char *)qstr->name, &l); | 23 | hpfs_adjust_length(qstr->name, &l); |
| 24 | /*if (hpfs_chk_name((char *)qstr->name,&l))*/ | 24 | /*if (hpfs_chk_name(qstr->name,&l))*/ |
| 25 | /*return -ENAMETOOLONG;*/ | 25 | /*return -ENAMETOOLONG;*/ |
| 26 | /*return -ENOENT;*/ | 26 | /*return -ENOENT;*/ |
| 27 | x: | 27 | x: |
| @@ -38,14 +38,16 @@ static int hpfs_compare_dentry(struct dentry *dentry, struct qstr *a, struct qst | |||
| 38 | { | 38 | { |
| 39 | unsigned al=a->len; | 39 | unsigned al=a->len; |
| 40 | unsigned bl=b->len; | 40 | unsigned bl=b->len; |
| 41 | hpfs_adjust_length((char *)a->name, &al); | 41 | hpfs_adjust_length(a->name, &al); |
| 42 | /*hpfs_adjust_length((char *)b->name, &bl);*/ | 42 | /*hpfs_adjust_length(b->name, &bl);*/ |
| 43 | /* 'a' is the qstr of an already existing dentry, so the name | 43 | /* 'a' is the qstr of an already existing dentry, so the name |
| 44 | * must be valid. 'b' must be validated first. | 44 | * must be valid. 'b' must be validated first. |
| 45 | */ | 45 | */ |
| 46 | 46 | ||
| 47 | if (hpfs_chk_name((char *)b->name, &bl)) return 1; | 47 | if (hpfs_chk_name(b->name, &bl)) |
| 48 | if (hpfs_compare_names(dentry->d_sb, (char *)a->name, al, (char *)b->name, bl, 0)) return 1; | 48 | return 1; |
| 49 | if (hpfs_compare_names(dentry->d_sb, a->name, al, b->name, bl, 0)) | ||
| 50 | return 1; | ||
| 49 | return 0; | 51 | return 0; |
| 50 | } | 52 | } |
| 51 | 53 | ||
diff --git a/fs/hpfs/dir.c b/fs/hpfs/dir.c index 8865c94f55f..26e3964a4b8 100644 --- a/fs/hpfs/dir.c +++ b/fs/hpfs/dir.c | |||
| @@ -59,7 +59,7 @@ static int hpfs_readdir(struct file *filp, void *dirent, filldir_t filldir) | |||
| 59 | struct hpfs_dirent *de; | 59 | struct hpfs_dirent *de; |
| 60 | int lc; | 60 | int lc; |
| 61 | long old_pos; | 61 | long old_pos; |
| 62 | char *tempname; | 62 | unsigned char *tempname; |
| 63 | int c1, c2 = 0; | 63 | int c1, c2 = 0; |
| 64 | int ret = 0; | 64 | int ret = 0; |
| 65 | 65 | ||
| @@ -158,11 +158,11 @@ static int hpfs_readdir(struct file *filp, void *dirent, filldir_t filldir) | |||
| 158 | tempname = hpfs_translate_name(inode->i_sb, de->name, de->namelen, lc, de->not_8x3); | 158 | tempname = hpfs_translate_name(inode->i_sb, de->name, de->namelen, lc, de->not_8x3); |
| 159 | if (filldir(dirent, tempname, de->namelen, old_pos, de->fnode, DT_UNKNOWN) < 0) { | 159 | if (filldir(dirent, tempname, de->namelen, old_pos, de->fnode, DT_UNKNOWN) < 0) { |
| 160 | filp->f_pos = old_pos; | 160 | filp->f_pos = old_pos; |
| 161 | if (tempname != (char *)de->name) kfree(tempname); | 161 | if (tempname != de->name) kfree(tempname); |
| 162 | hpfs_brelse4(&qbh); | 162 | hpfs_brelse4(&qbh); |
| 163 | goto out; | 163 | goto out; |
| 164 | } | 164 | } |
| 165 | if (tempname != (char *)de->name) kfree(tempname); | 165 | if (tempname != de->name) kfree(tempname); |
| 166 | hpfs_brelse4(&qbh); | 166 | hpfs_brelse4(&qbh); |
| 167 | } | 167 | } |
| 168 | out: | 168 | out: |
| @@ -187,7 +187,7 @@ out: | |||
| 187 | 187 | ||
| 188 | struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | 188 | struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) |
| 189 | { | 189 | { |
| 190 | const char *name = dentry->d_name.name; | 190 | const unsigned char *name = dentry->d_name.name; |
| 191 | unsigned len = dentry->d_name.len; | 191 | unsigned len = dentry->d_name.len; |
| 192 | struct quad_buffer_head qbh; | 192 | struct quad_buffer_head qbh; |
| 193 | struct hpfs_dirent *de; | 193 | struct hpfs_dirent *de; |
| @@ -197,7 +197,7 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct name | |||
| 197 | struct hpfs_inode_info *hpfs_result; | 197 | struct hpfs_inode_info *hpfs_result; |
| 198 | 198 | ||
| 199 | lock_kernel(); | 199 | lock_kernel(); |
| 200 | if ((err = hpfs_chk_name((char *)name, &len))) { | 200 | if ((err = hpfs_chk_name(name, &len))) { |
| 201 | if (err == -ENAMETOOLONG) { | 201 | if (err == -ENAMETOOLONG) { |
| 202 | unlock_kernel(); | 202 | unlock_kernel(); |
| 203 | return ERR_PTR(-ENAMETOOLONG); | 203 | return ERR_PTR(-ENAMETOOLONG); |
| @@ -209,7 +209,7 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct name | |||
| 209 | * '.' and '..' will never be passed here. | 209 | * '.' and '..' will never be passed here. |
| 210 | */ | 210 | */ |
| 211 | 211 | ||
| 212 | de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *) name, len, NULL, &qbh); | 212 | de = map_dirent(dir, hpfs_i(dir)->i_dno, name, len, NULL, &qbh); |
| 213 | 213 | ||
| 214 | /* | 214 | /* |
| 215 | * This is not really a bailout, just means file not found. | 215 | * This is not really a bailout, just means file not found. |
| @@ -250,7 +250,7 @@ struct dentry *hpfs_lookup(struct inode *dir, struct dentry *dentry, struct name | |||
| 250 | hpfs_result = hpfs_i(result); | 250 | hpfs_result = hpfs_i(result); |
| 251 | if (!de->directory) hpfs_result->i_parent_dir = dir->i_ino; | 251 | if (!de->directory) hpfs_result->i_parent_dir = dir->i_ino; |
| 252 | 252 | ||
| 253 | hpfs_decide_conv(result, (char *)name, len); | 253 | hpfs_decide_conv(result, name, len); |
| 254 | 254 | ||
| 255 | if (de->has_acl || de->has_xtd_perm) if (!(dir->i_sb->s_flags & MS_RDONLY)) { | 255 | if (de->has_acl || de->has_xtd_perm) if (!(dir->i_sb->s_flags & MS_RDONLY)) { |
| 256 | hpfs_error(result->i_sb, "ACLs or XPERM found. This is probably HPFS386. This driver doesn't support it now. Send me some info on these structures"); | 256 | hpfs_error(result->i_sb, "ACLs or XPERM found. This is probably HPFS386. This driver doesn't support it now. Send me some info on these structures"); |
diff --git a/fs/hpfs/dnode.c b/fs/hpfs/dnode.c index fe83c2b7d2d..9b2ffadfc8c 100644 --- a/fs/hpfs/dnode.c +++ b/fs/hpfs/dnode.c | |||
| @@ -158,7 +158,8 @@ static void set_last_pointer(struct super_block *s, struct dnode *d, dnode_secno | |||
| 158 | 158 | ||
| 159 | /* Add an entry to dnode and don't care if it grows over 2048 bytes */ | 159 | /* Add an entry to dnode and don't care if it grows over 2048 bytes */ |
| 160 | 160 | ||
| 161 | struct hpfs_dirent *hpfs_add_de(struct super_block *s, struct dnode *d, unsigned char *name, | 161 | struct hpfs_dirent *hpfs_add_de(struct super_block *s, struct dnode *d, |
| 162 | const unsigned char *name, | ||
| 162 | unsigned namelen, secno down_ptr) | 163 | unsigned namelen, secno down_ptr) |
| 163 | { | 164 | { |
| 164 | struct hpfs_dirent *de; | 165 | struct hpfs_dirent *de; |
| @@ -223,7 +224,7 @@ static void fix_up_ptrs(struct super_block *s, struct dnode *d) | |||
| 223 | /* Add an entry to dnode and do dnode splitting if required */ | 224 | /* Add an entry to dnode and do dnode splitting if required */ |
| 224 | 225 | ||
| 225 | static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno, | 226 | static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno, |
| 226 | unsigned char *name, unsigned namelen, | 227 | const unsigned char *name, unsigned namelen, |
| 227 | struct hpfs_dirent *new_de, dnode_secno down_ptr) | 228 | struct hpfs_dirent *new_de, dnode_secno down_ptr) |
| 228 | { | 229 | { |
| 229 | struct quad_buffer_head qbh, qbh1, qbh2; | 230 | struct quad_buffer_head qbh, qbh1, qbh2; |
| @@ -231,7 +232,7 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno, | |||
| 231 | dnode_secno adno, rdno; | 232 | dnode_secno adno, rdno; |
| 232 | struct hpfs_dirent *de; | 233 | struct hpfs_dirent *de; |
| 233 | struct hpfs_dirent nde; | 234 | struct hpfs_dirent nde; |
| 234 | char *nname; | 235 | unsigned char *nname; |
| 235 | int h; | 236 | int h; |
| 236 | int pos; | 237 | int pos; |
| 237 | struct buffer_head *bh; | 238 | struct buffer_head *bh; |
| @@ -305,7 +306,9 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno, | |||
| 305 | pos++; | 306 | pos++; |
| 306 | } | 307 | } |
| 307 | copy_de(new_de = &nde, de); | 308 | copy_de(new_de = &nde, de); |
| 308 | memcpy(name = nname, de->name, namelen = de->namelen); | 309 | memcpy(nname, de->name, de->namelen); |
| 310 | name = nname; | ||
| 311 | namelen = de->namelen; | ||
| 309 | for_all_poss(i, hpfs_pos_subst, ((loff_t)dno << 4) | pos, 4); | 312 | for_all_poss(i, hpfs_pos_subst, ((loff_t)dno << 4) | pos, 4); |
| 310 | down_ptr = adno; | 313 | down_ptr = adno; |
| 311 | set_last_pointer(i->i_sb, ad, de->down ? de_down_pointer(de) : 0); | 314 | set_last_pointer(i->i_sb, ad, de->down ? de_down_pointer(de) : 0); |
| @@ -368,7 +371,8 @@ static int hpfs_add_to_dnode(struct inode *i, dnode_secno dno, | |||
| 368 | * I hope, now it's finally bug-free. | 371 | * I hope, now it's finally bug-free. |
| 369 | */ | 372 | */ |
| 370 | 373 | ||
| 371 | int hpfs_add_dirent(struct inode *i, unsigned char *name, unsigned namelen, | 374 | int hpfs_add_dirent(struct inode *i, |
| 375 | const unsigned char *name, unsigned namelen, | ||
| 372 | struct hpfs_dirent *new_de, int cdepth) | 376 | struct hpfs_dirent *new_de, int cdepth) |
| 373 | { | 377 | { |
| 374 | struct hpfs_inode_info *hpfs_inode = hpfs_i(i); | 378 | struct hpfs_inode_info *hpfs_inode = hpfs_i(i); |
| @@ -897,7 +901,8 @@ struct hpfs_dirent *map_pos_dirent(struct inode *inode, loff_t *posp, | |||
| 897 | 901 | ||
| 898 | /* Find a dirent in tree */ | 902 | /* Find a dirent in tree */ |
| 899 | 903 | ||
| 900 | struct hpfs_dirent *map_dirent(struct inode *inode, dnode_secno dno, char *name, unsigned len, | 904 | struct hpfs_dirent *map_dirent(struct inode *inode, dnode_secno dno, |
| 905 | const unsigned char *name, unsigned len, | ||
| 901 | dnode_secno *dd, struct quad_buffer_head *qbh) | 906 | dnode_secno *dd, struct quad_buffer_head *qbh) |
| 902 | { | 907 | { |
| 903 | struct dnode *dnode; | 908 | struct dnode *dnode; |
| @@ -988,8 +993,8 @@ void hpfs_remove_dtree(struct super_block *s, dnode_secno dno) | |||
| 988 | struct hpfs_dirent *map_fnode_dirent(struct super_block *s, fnode_secno fno, | 993 | struct hpfs_dirent *map_fnode_dirent(struct super_block *s, fnode_secno fno, |
| 989 | struct fnode *f, struct quad_buffer_head *qbh) | 994 | struct fnode *f, struct quad_buffer_head *qbh) |
| 990 | { | 995 | { |
| 991 | char *name1; | 996 | unsigned char *name1; |
| 992 | char *name2; | 997 | unsigned char *name2; |
| 993 | int name1len, name2len; | 998 | int name1len, name2len; |
| 994 | struct dnode *d; | 999 | struct dnode *d; |
| 995 | dnode_secno dno, downd; | 1000 | dnode_secno dno, downd; |
diff --git a/fs/hpfs/ea.c b/fs/hpfs/ea.c index 547a8384571..45e53d972b4 100644 --- a/fs/hpfs/ea.c +++ b/fs/hpfs/ea.c | |||
| @@ -62,8 +62,8 @@ static char *get_indirect_ea(struct super_block *s, int ano, secno a, int size) | |||
| 62 | return ret; | 62 | return ret; |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | static void set_indirect_ea(struct super_block *s, int ano, secno a, char *data, | 65 | static void set_indirect_ea(struct super_block *s, int ano, secno a, |
| 66 | int size) | 66 | const char *data, int size) |
| 67 | { | 67 | { |
| 68 | hpfs_ea_write(s, a, ano, 0, size, data); | 68 | hpfs_ea_write(s, a, ano, 0, size, data); |
| 69 | } | 69 | } |
| @@ -186,7 +186,8 @@ char *hpfs_get_ea(struct super_block *s, struct fnode *fnode, char *key, int *si | |||
| 186 | * This driver can't change sizes of eas ('cause I just don't need it). | 186 | * This driver can't change sizes of eas ('cause I just don't need it). |
| 187 | */ | 187 | */ |
| 188 | 188 | ||
| 189 | void hpfs_set_ea(struct inode *inode, struct fnode *fnode, char *key, char *data, int size) | 189 | void hpfs_set_ea(struct inode *inode, struct fnode *fnode, const char *key, |
| 190 | const char *data, int size) | ||
| 190 | { | 191 | { |
| 191 | fnode_secno fno = inode->i_ino; | 192 | fnode_secno fno = inode->i_ino; |
| 192 | struct super_block *s = inode->i_sb; | 193 | struct super_block *s = inode->i_sb; |
diff --git a/fs/hpfs/hpfs_fn.h b/fs/hpfs/hpfs_fn.h index 701ca54c086..97bf738cd5d 100644 --- a/fs/hpfs/hpfs_fn.h +++ b/fs/hpfs/hpfs_fn.h | |||
| @@ -215,7 +215,7 @@ secno hpfs_bplus_lookup(struct super_block *, struct inode *, struct bplus_heade | |||
| 215 | secno hpfs_add_sector_to_btree(struct super_block *, secno, int, unsigned); | 215 | secno hpfs_add_sector_to_btree(struct super_block *, secno, int, unsigned); |
| 216 | void hpfs_remove_btree(struct super_block *, struct bplus_header *); | 216 | void hpfs_remove_btree(struct super_block *, struct bplus_header *); |
| 217 | int hpfs_ea_read(struct super_block *, secno, int, unsigned, unsigned, char *); | 217 | int hpfs_ea_read(struct super_block *, secno, int, unsigned, unsigned, char *); |
| 218 | int hpfs_ea_write(struct super_block *, secno, int, unsigned, unsigned, char *); | 218 | int hpfs_ea_write(struct super_block *, secno, int, unsigned, unsigned, const char *); |
| 219 | void hpfs_ea_remove(struct super_block *, secno, int, unsigned); | 219 | void hpfs_ea_remove(struct super_block *, secno, int, unsigned); |
| 220 | void hpfs_truncate_btree(struct super_block *, secno, int, unsigned); | 220 | void hpfs_truncate_btree(struct super_block *, secno, int, unsigned); |
| 221 | void hpfs_remove_fnode(struct super_block *, fnode_secno fno); | 221 | void hpfs_remove_fnode(struct super_block *, fnode_secno fno); |
| @@ -244,13 +244,17 @@ extern const struct file_operations hpfs_dir_ops; | |||
| 244 | 244 | ||
| 245 | void hpfs_add_pos(struct inode *, loff_t *); | 245 | void hpfs_add_pos(struct inode *, loff_t *); |
| 246 | void hpfs_del_pos(struct inode *, loff_t *); | 246 | void hpfs_del_pos(struct inode *, loff_t *); |
| 247 | struct hpfs_dirent *hpfs_add_de(struct super_block *, struct dnode *, unsigned char *, unsigned, secno); | 247 | struct hpfs_dirent *hpfs_add_de(struct super_block *, struct dnode *, |
| 248 | int hpfs_add_dirent(struct inode *, unsigned char *, unsigned, struct hpfs_dirent *, int); | 248 | const unsigned char *, unsigned, secno); |
| 249 | int hpfs_add_dirent(struct inode *, const unsigned char *, unsigned, | ||
| 250 | struct hpfs_dirent *, int); | ||
| 249 | int hpfs_remove_dirent(struct inode *, dnode_secno, struct hpfs_dirent *, struct quad_buffer_head *, int); | 251 | int hpfs_remove_dirent(struct inode *, dnode_secno, struct hpfs_dirent *, struct quad_buffer_head *, int); |
| 250 | void hpfs_count_dnodes(struct super_block *, dnode_secno, int *, int *, int *); | 252 | void hpfs_count_dnodes(struct super_block *, dnode_secno, int *, int *, int *); |
| 251 | dnode_secno hpfs_de_as_down_as_possible(struct super_block *, dnode_secno dno); | 253 | dnode_secno hpfs_de_as_down_as_possible(struct super_block *, dnode_secno dno); |
| 252 | struct hpfs_dirent *map_pos_dirent(struct inode *, loff_t *, struct quad_buffer_head *); | 254 | struct hpfs_dirent *map_pos_dirent(struct inode *, loff_t *, struct quad_buffer_head *); |
| 253 | struct hpfs_dirent *map_dirent(struct inode *, dnode_secno, char *, unsigned, dnode_secno *, struct quad_buffer_head *); | 255 | struct hpfs_dirent *map_dirent(struct inode *, dnode_secno, |
| 256 | const unsigned char *, unsigned, dnode_secno *, | ||
| 257 | struct quad_buffer_head *); | ||
| 254 | void hpfs_remove_dtree(struct super_block *, dnode_secno); | 258 | void hpfs_remove_dtree(struct super_block *, dnode_secno); |
| 255 | struct hpfs_dirent *map_fnode_dirent(struct super_block *, fnode_secno, struct fnode *, struct quad_buffer_head *); | 259 | struct hpfs_dirent *map_fnode_dirent(struct super_block *, fnode_secno, struct fnode *, struct quad_buffer_head *); |
| 256 | 260 | ||
| @@ -259,7 +263,8 @@ struct hpfs_dirent *map_fnode_dirent(struct super_block *, fnode_secno, struct f | |||
| 259 | void hpfs_ea_ext_remove(struct super_block *, secno, int, unsigned); | 263 | void hpfs_ea_ext_remove(struct super_block *, secno, int, unsigned); |
| 260 | int hpfs_read_ea(struct super_block *, struct fnode *, char *, char *, int); | 264 | int hpfs_read_ea(struct super_block *, struct fnode *, char *, char *, int); |
| 261 | char *hpfs_get_ea(struct super_block *, struct fnode *, char *, int *); | 265 | char *hpfs_get_ea(struct super_block *, struct fnode *, char *, int *); |
| 262 | void hpfs_set_ea(struct inode *, struct fnode *, char *, char *, int); | 266 | void hpfs_set_ea(struct inode *, struct fnode *, const char *, |
| 267 | const char *, int); | ||
| 263 | 268 | ||
| 264 | /* file.c */ | 269 | /* file.c */ |
| 265 | 270 | ||
| @@ -282,7 +287,7 @@ void hpfs_delete_inode(struct inode *); | |||
| 282 | 287 | ||
| 283 | unsigned *hpfs_map_dnode_bitmap(struct super_block *, struct quad_buffer_head *); | 288 | unsigned *hpfs_map_dnode_bitmap(struct super_block *, struct quad_buffer_head *); |
| 284 | unsigned *hpfs_map_bitmap(struct super_block *, unsigned, struct quad_buffer_head *, char *); | 289 | unsigned *hpfs_map_bitmap(struct super_block *, unsigned, struct quad_buffer_head *, char *); |
| 285 | char *hpfs_load_code_page(struct super_block *, secno); | 290 | unsigned char *hpfs_load_code_page(struct super_block *, secno); |
| 286 | secno *hpfs_load_bitmap_directory(struct super_block *, secno bmp); | 291 | secno *hpfs_load_bitmap_directory(struct super_block *, secno bmp); |
| 287 | struct fnode *hpfs_map_fnode(struct super_block *s, ino_t, struct buffer_head **); | 292 | struct fnode *hpfs_map_fnode(struct super_block *s, ino_t, struct buffer_head **); |
| 288 | struct anode *hpfs_map_anode(struct super_block *s, anode_secno, struct buffer_head **); | 293 | struct anode *hpfs_map_anode(struct super_block *s, anode_secno, struct buffer_head **); |
| @@ -292,12 +297,13 @@ dnode_secno hpfs_fnode_dno(struct super_block *s, ino_t ino); | |||
| 292 | /* name.c */ | 297 | /* name.c */ |
| 293 | 298 | ||
| 294 | unsigned char hpfs_upcase(unsigned char *, unsigned char); | 299 | unsigned char hpfs_upcase(unsigned char *, unsigned char); |
| 295 | int hpfs_chk_name(unsigned char *, unsigned *); | 300 | int hpfs_chk_name(const unsigned char *, unsigned *); |
| 296 | char *hpfs_translate_name(struct super_block *, unsigned char *, unsigned, int, int); | 301 | unsigned char *hpfs_translate_name(struct super_block *, unsigned char *, unsigned, int, int); |
| 297 | int hpfs_compare_names(struct super_block *, unsigned char *, unsigned, unsigned char *, unsigned, int); | 302 | int hpfs_compare_names(struct super_block *, const unsigned char *, unsigned, |
| 298 | int hpfs_is_name_long(unsigned char *, unsigned); | 303 | const unsigned char *, unsigned, int); |
| 299 | void hpfs_adjust_length(unsigned char *, unsigned *); | 304 | int hpfs_is_name_long(const unsigned char *, unsigned); |
| 300 | void hpfs_decide_conv(struct inode *, unsigned char *, unsigned); | 305 | void hpfs_adjust_length(const unsigned char *, unsigned *); |
| 306 | void hpfs_decide_conv(struct inode *, const unsigned char *, unsigned); | ||
| 301 | 307 | ||
| 302 | /* namei.c */ | 308 | /* namei.c */ |
| 303 | 309 | ||
diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c index fe703ae46bc..ff90affb94e 100644 --- a/fs/hpfs/inode.c +++ b/fs/hpfs/inode.c | |||
| @@ -46,7 +46,7 @@ void hpfs_read_inode(struct inode *i) | |||
| 46 | struct fnode *fnode; | 46 | struct fnode *fnode; |
| 47 | struct super_block *sb = i->i_sb; | 47 | struct super_block *sb = i->i_sb; |
| 48 | struct hpfs_inode_info *hpfs_inode = hpfs_i(i); | 48 | struct hpfs_inode_info *hpfs_inode = hpfs_i(i); |
| 49 | unsigned char *ea; | 49 | void *ea; |
| 50 | int ea_size; | 50 | int ea_size; |
| 51 | 51 | ||
| 52 | if (!(fnode = hpfs_map_fnode(sb, i->i_ino, &bh))) { | 52 | if (!(fnode = hpfs_map_fnode(sb, i->i_ino, &bh))) { |
| @@ -112,7 +112,7 @@ void hpfs_read_inode(struct inode *i) | |||
| 112 | } | 112 | } |
| 113 | } | 113 | } |
| 114 | if (fnode->dirflag) { | 114 | if (fnode->dirflag) { |
| 115 | unsigned n_dnodes, n_subdirs; | 115 | int n_dnodes, n_subdirs; |
| 116 | i->i_mode |= S_IFDIR; | 116 | i->i_mode |= S_IFDIR; |
| 117 | i->i_op = &hpfs_dir_iops; | 117 | i->i_op = &hpfs_dir_iops; |
| 118 | i->i_fop = &hpfs_dir_ops; | 118 | i->i_fop = &hpfs_dir_ops; |
diff --git a/fs/hpfs/map.c b/fs/hpfs/map.c index c4724589b2e..840d033ecee 100644 --- a/fs/hpfs/map.c +++ b/fs/hpfs/map.c | |||
| @@ -35,7 +35,7 @@ unsigned int *hpfs_map_bitmap(struct super_block *s, unsigned bmp_block, | |||
| 35 | * lowercasing table | 35 | * lowercasing table |
| 36 | */ | 36 | */ |
| 37 | 37 | ||
| 38 | char *hpfs_load_code_page(struct super_block *s, secno cps) | 38 | unsigned char *hpfs_load_code_page(struct super_block *s, secno cps) |
| 39 | { | 39 | { |
| 40 | struct buffer_head *bh; | 40 | struct buffer_head *bh; |
| 41 | secno cpds; | 41 | secno cpds; |
| @@ -71,7 +71,7 @@ char *hpfs_load_code_page(struct super_block *s, secno cps) | |||
| 71 | brelse(bh); | 71 | brelse(bh); |
| 72 | return NULL; | 72 | return NULL; |
| 73 | } | 73 | } |
| 74 | ptr = (char *)cpd + cpd->offs[cpi] + 6; | 74 | ptr = (unsigned char *)cpd + cpd->offs[cpi] + 6; |
| 75 | if (!(cp_table = kmalloc(256, GFP_KERNEL))) { | 75 | if (!(cp_table = kmalloc(256, GFP_KERNEL))) { |
| 76 | printk("HPFS: out of memory for code page table\n"); | 76 | printk("HPFS: out of memory for code page table\n"); |
| 77 | brelse(bh); | 77 | brelse(bh); |
| @@ -217,7 +217,7 @@ struct dnode *hpfs_map_dnode(struct super_block *s, unsigned secno, | |||
| 217 | if ((dnode = hpfs_map_4sectors(s, secno, qbh, DNODE_RD_AHEAD))) | 217 | if ((dnode = hpfs_map_4sectors(s, secno, qbh, DNODE_RD_AHEAD))) |
| 218 | if (hpfs_sb(s)->sb_chk) { | 218 | if (hpfs_sb(s)->sb_chk) { |
| 219 | unsigned p, pp = 0; | 219 | unsigned p, pp = 0; |
| 220 | unsigned char *d = (char *)dnode; | 220 | unsigned char *d = (unsigned char *)dnode; |
| 221 | int b = 0; | 221 | int b = 0; |
| 222 | if (dnode->magic != DNODE_MAGIC) { | 222 | if (dnode->magic != DNODE_MAGIC) { |
| 223 | hpfs_error(s, "bad magic on dnode %08x", secno); | 223 | hpfs_error(s, "bad magic on dnode %08x", secno); |
diff --git a/fs/hpfs/name.c b/fs/hpfs/name.c index 1f4a964384e..f24736d7a43 100644 --- a/fs/hpfs/name.c +++ b/fs/hpfs/name.c | |||
| @@ -8,16 +8,16 @@ | |||
| 8 | 8 | ||
| 9 | #include "hpfs_fn.h" | 9 | #include "hpfs_fn.h" |
| 10 | 10 | ||
| 11 | static char *text_postfix[]={ | 11 | static const char *text_postfix[]={ |
| 12 | ".ASM", ".BAS", ".BAT", ".C", ".CC", ".CFG", ".CMD", ".CON", ".CPP", ".DEF", | 12 | ".ASM", ".BAS", ".BAT", ".C", ".CC", ".CFG", ".CMD", ".CON", ".CPP", ".DEF", |
| 13 | ".DOC", ".DPR", ".ERX", ".H", ".HPP", ".HTM", ".HTML", ".JAVA", ".LOG", ".PAS", | 13 | ".DOC", ".DPR", ".ERX", ".H", ".HPP", ".HTM", ".HTML", ".JAVA", ".LOG", ".PAS", |
| 14 | ".RC", ".TEX", ".TXT", ".Y", ""}; | 14 | ".RC", ".TEX", ".TXT", ".Y", ""}; |
| 15 | 15 | ||
| 16 | static char *text_prefix[]={ | 16 | static const char *text_prefix[]={ |
| 17 | "AUTOEXEC.", "CHANGES", "COPYING", "CONFIG.", "CREDITS", "FAQ", "FILE_ID.DIZ", | 17 | "AUTOEXEC.", "CHANGES", "COPYING", "CONFIG.", "CREDITS", "FAQ", "FILE_ID.DIZ", |
| 18 | "MAKEFILE", "READ.ME", "README", "TERMCAP", ""}; | 18 | "MAKEFILE", "READ.ME", "README", "TERMCAP", ""}; |
| 19 | 19 | ||
| 20 | void hpfs_decide_conv(struct inode *inode, unsigned char *name, unsigned len) | 20 | void hpfs_decide_conv(struct inode *inode, const unsigned char *name, unsigned len) |
| 21 | { | 21 | { |
| 22 | struct hpfs_inode_info *hpfs_inode = hpfs_i(inode); | 22 | struct hpfs_inode_info *hpfs_inode = hpfs_i(inode); |
| 23 | int i; | 23 | int i; |
| @@ -71,7 +71,7 @@ static inline unsigned char locase(unsigned char *dir, unsigned char a) | |||
| 71 | return dir[a]; | 71 | return dir[a]; |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | int hpfs_chk_name(unsigned char *name, unsigned *len) | 74 | int hpfs_chk_name(const unsigned char *name, unsigned *len) |
| 75 | { | 75 | { |
| 76 | int i; | 76 | int i; |
| 77 | if (*len > 254) return -ENAMETOOLONG; | 77 | if (*len > 254) return -ENAMETOOLONG; |
| @@ -83,10 +83,10 @@ int hpfs_chk_name(unsigned char *name, unsigned *len) | |||
| 83 | return 0; | 83 | return 0; |
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | char *hpfs_translate_name(struct super_block *s, unsigned char *from, | 86 | unsigned char *hpfs_translate_name(struct super_block *s, unsigned char *from, |
| 87 | unsigned len, int lc, int lng) | 87 | unsigned len, int lc, int lng) |
| 88 | { | 88 | { |
| 89 | char *to; | 89 | unsigned char *to; |
| 90 | int i; | 90 | int i; |
| 91 | if (hpfs_sb(s)->sb_chk >= 2) if (hpfs_is_name_long(from, len) != lng) { | 91 | if (hpfs_sb(s)->sb_chk >= 2) if (hpfs_is_name_long(from, len) != lng) { |
| 92 | printk("HPFS: Long name flag mismatch - name "); | 92 | printk("HPFS: Long name flag mismatch - name "); |
| @@ -103,8 +103,9 @@ char *hpfs_translate_name(struct super_block *s, unsigned char *from, | |||
| 103 | return to; | 103 | return to; |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | int hpfs_compare_names(struct super_block *s, unsigned char *n1, unsigned l1, | 106 | int hpfs_compare_names(struct super_block *s, |
| 107 | unsigned char *n2, unsigned l2, int last) | 107 | const unsigned char *n1, unsigned l1, |
| 108 | const unsigned char *n2, unsigned l2, int last) | ||
| 108 | { | 109 | { |
| 109 | unsigned l = l1 < l2 ? l1 : l2; | 110 | unsigned l = l1 < l2 ? l1 : l2; |
| 110 | unsigned i; | 111 | unsigned i; |
| @@ -120,7 +121,7 @@ int hpfs_compare_names(struct super_block *s, unsigned char *n1, unsigned l1, | |||
| 120 | return 0; | 121 | return 0; |
| 121 | } | 122 | } |
| 122 | 123 | ||
| 123 | int hpfs_is_name_long(unsigned char *name, unsigned len) | 124 | int hpfs_is_name_long(const unsigned char *name, unsigned len) |
| 124 | { | 125 | { |
| 125 | int i,j; | 126 | int i,j; |
| 126 | for (i = 0; i < len && name[i] != '.'; i++) | 127 | for (i = 0; i < len && name[i] != '.'; i++) |
| @@ -134,7 +135,7 @@ int hpfs_is_name_long(unsigned char *name, unsigned len) | |||
| 134 | 135 | ||
| 135 | /* OS/2 clears dots and spaces at the end of file name, so we have to */ | 136 | /* OS/2 clears dots and spaces at the end of file name, so we have to */ |
| 136 | 137 | ||
| 137 | void hpfs_adjust_length(unsigned char *name, unsigned *len) | 138 | void hpfs_adjust_length(const unsigned char *name, unsigned *len) |
| 138 | { | 139 | { |
| 139 | if (!*len) return; | 140 | if (!*len) return; |
| 140 | if (*len == 1 && name[0] == '.') return; | 141 | if (*len == 1 && name[0] == '.') return; |
diff --git a/fs/hpfs/namei.c b/fs/hpfs/namei.c index 82b9c4ba9ed..15fd2c06f4a 100644 --- a/fs/hpfs/namei.c +++ b/fs/hpfs/namei.c | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) | 12 | static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) |
| 13 | { | 13 | { |
| 14 | const char *name = dentry->d_name.name; | 14 | const unsigned char *name = dentry->d_name.name; |
| 15 | unsigned len = dentry->d_name.len; | 15 | unsigned len = dentry->d_name.len; |
| 16 | struct quad_buffer_head qbh0; | 16 | struct quad_buffer_head qbh0; |
| 17 | struct buffer_head *bh; | 17 | struct buffer_head *bh; |
| @@ -24,7 +24,7 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) | |||
| 24 | int r; | 24 | int r; |
| 25 | struct hpfs_dirent dee; | 25 | struct hpfs_dirent dee; |
| 26 | int err; | 26 | int err; |
| 27 | if ((err = hpfs_chk_name((char *)name, &len))) return err==-ENOENT ? -EINVAL : err; | 27 | if ((err = hpfs_chk_name(name, &len))) return err==-ENOENT ? -EINVAL : err; |
| 28 | lock_kernel(); | 28 | lock_kernel(); |
| 29 | err = -ENOSPC; | 29 | err = -ENOSPC; |
| 30 | fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh); | 30 | 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) | |||
| 62 | result->i_mode &= ~0222; | 62 | result->i_mode &= ~0222; |
| 63 | 63 | ||
| 64 | mutex_lock(&hpfs_i(dir)->i_mutex); | 64 | mutex_lock(&hpfs_i(dir)->i_mutex); |
| 65 | r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); | 65 | r = hpfs_add_dirent(dir, name, len, &dee, 0); |
| 66 | if (r == 1) | 66 | if (r == 1) |
| 67 | goto bail3; | 67 | goto bail3; |
| 68 | if (r == -1) { | 68 | if (r == -1) { |
| @@ -121,7 +121,7 @@ bail: | |||
| 121 | 121 | ||
| 122 | static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd) | 122 | static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd) |
| 123 | { | 123 | { |
| 124 | const char *name = dentry->d_name.name; | 124 | const unsigned char *name = dentry->d_name.name; |
| 125 | unsigned len = dentry->d_name.len; | 125 | unsigned len = dentry->d_name.len; |
| 126 | struct inode *result = NULL; | 126 | struct inode *result = NULL; |
| 127 | struct buffer_head *bh; | 127 | struct buffer_head *bh; |
| @@ -130,7 +130,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc | |||
| 130 | int r; | 130 | int r; |
| 131 | struct hpfs_dirent dee; | 131 | struct hpfs_dirent dee; |
| 132 | int err; | 132 | int err; |
| 133 | if ((err = hpfs_chk_name((char *)name, &len))) | 133 | if ((err = hpfs_chk_name(name, &len))) |
| 134 | return err==-ENOENT ? -EINVAL : err; | 134 | return err==-ENOENT ? -EINVAL : err; |
| 135 | lock_kernel(); | 135 | lock_kernel(); |
| 136 | err = -ENOSPC; | 136 | err = -ENOSPC; |
| @@ -155,7 +155,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc | |||
| 155 | result->i_op = &hpfs_file_iops; | 155 | result->i_op = &hpfs_file_iops; |
| 156 | result->i_fop = &hpfs_file_ops; | 156 | result->i_fop = &hpfs_file_ops; |
| 157 | result->i_nlink = 1; | 157 | result->i_nlink = 1; |
| 158 | hpfs_decide_conv(result, (char *)name, len); | 158 | hpfs_decide_conv(result, name, len); |
| 159 | hpfs_i(result)->i_parent_dir = dir->i_ino; | 159 | hpfs_i(result)->i_parent_dir = dir->i_ino; |
| 160 | result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, dee.creation_date); | 160 | result->i_ctime.tv_sec = result->i_mtime.tv_sec = result->i_atime.tv_sec = local_to_gmt(dir->i_sb, dee.creation_date); |
| 161 | result->i_ctime.tv_nsec = 0; | 161 | result->i_ctime.tv_nsec = 0; |
| @@ -170,7 +170,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struc | |||
| 170 | hpfs_i(result)->mmu_private = 0; | 170 | hpfs_i(result)->mmu_private = 0; |
| 171 | 171 | ||
| 172 | mutex_lock(&hpfs_i(dir)->i_mutex); | 172 | mutex_lock(&hpfs_i(dir)->i_mutex); |
| 173 | r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); | 173 | r = hpfs_add_dirent(dir, name, len, &dee, 0); |
| 174 | if (r == 1) | 174 | if (r == 1) |
| 175 | goto bail2; | 175 | goto bail2; |
| 176 | if (r == -1) { | 176 | if (r == -1) { |
| @@ -211,7 +211,7 @@ bail: | |||
| 211 | 211 | ||
| 212 | static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev) | 212 | static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev) |
| 213 | { | 213 | { |
| 214 | const char *name = dentry->d_name.name; | 214 | const unsigned char *name = dentry->d_name.name; |
| 215 | unsigned len = dentry->d_name.len; | 215 | unsigned len = dentry->d_name.len; |
| 216 | struct buffer_head *bh; | 216 | struct buffer_head *bh; |
| 217 | struct fnode *fnode; | 217 | struct fnode *fnode; |
| @@ -220,7 +220,7 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t | |||
| 220 | struct hpfs_dirent dee; | 220 | struct hpfs_dirent dee; |
| 221 | struct inode *result = NULL; | 221 | struct inode *result = NULL; |
| 222 | int err; | 222 | int err; |
| 223 | if ((err = hpfs_chk_name((char *)name, &len))) return err==-ENOENT ? -EINVAL : err; | 223 | if ((err = hpfs_chk_name(name, &len))) return err==-ENOENT ? -EINVAL : err; |
| 224 | if (hpfs_sb(dir->i_sb)->sb_eas < 2) return -EPERM; | 224 | if (hpfs_sb(dir->i_sb)->sb_eas < 2) return -EPERM; |
| 225 | if (!new_valid_dev(rdev)) | 225 | if (!new_valid_dev(rdev)) |
| 226 | return -EINVAL; | 226 | return -EINVAL; |
| @@ -256,7 +256,7 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t | |||
| 256 | init_special_inode(result, mode, rdev); | 256 | init_special_inode(result, mode, rdev); |
| 257 | 257 | ||
| 258 | mutex_lock(&hpfs_i(dir)->i_mutex); | 258 | mutex_lock(&hpfs_i(dir)->i_mutex); |
| 259 | r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); | 259 | r = hpfs_add_dirent(dir, name, len, &dee, 0); |
| 260 | if (r == 1) | 260 | if (r == 1) |
| 261 | goto bail2; | 261 | goto bail2; |
| 262 | if (r == -1) { | 262 | if (r == -1) { |
| @@ -289,7 +289,7 @@ bail: | |||
| 289 | 289 | ||
| 290 | static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *symlink) | 290 | static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *symlink) |
| 291 | { | 291 | { |
| 292 | const char *name = dentry->d_name.name; | 292 | const unsigned char *name = dentry->d_name.name; |
| 293 | unsigned len = dentry->d_name.len; | 293 | unsigned len = dentry->d_name.len; |
| 294 | struct buffer_head *bh; | 294 | struct buffer_head *bh; |
| 295 | struct fnode *fnode; | 295 | struct fnode *fnode; |
| @@ -298,7 +298,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy | |||
| 298 | struct hpfs_dirent dee; | 298 | struct hpfs_dirent dee; |
| 299 | struct inode *result; | 299 | struct inode *result; |
| 300 | int err; | 300 | int err; |
| 301 | if ((err = hpfs_chk_name((char *)name, &len))) return err==-ENOENT ? -EINVAL : err; | 301 | if ((err = hpfs_chk_name(name, &len))) return err==-ENOENT ? -EINVAL : err; |
| 302 | lock_kernel(); | 302 | lock_kernel(); |
| 303 | if (hpfs_sb(dir->i_sb)->sb_eas < 2) { | 303 | if (hpfs_sb(dir->i_sb)->sb_eas < 2) { |
| 304 | unlock_kernel(); | 304 | unlock_kernel(); |
| @@ -335,7 +335,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy | |||
| 335 | result->i_data.a_ops = &hpfs_symlink_aops; | 335 | result->i_data.a_ops = &hpfs_symlink_aops; |
| 336 | 336 | ||
| 337 | mutex_lock(&hpfs_i(dir)->i_mutex); | 337 | mutex_lock(&hpfs_i(dir)->i_mutex); |
| 338 | r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); | 338 | r = hpfs_add_dirent(dir, name, len, &dee, 0); |
| 339 | if (r == 1) | 339 | if (r == 1) |
| 340 | goto bail2; | 340 | goto bail2; |
| 341 | if (r == -1) { | 341 | if (r == -1) { |
| @@ -345,7 +345,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy | |||
| 345 | fnode->len = len; | 345 | fnode->len = len; |
| 346 | memcpy(fnode->name, name, len > 15 ? 15 : len); | 346 | memcpy(fnode->name, name, len > 15 ? 15 : len); |
| 347 | fnode->up = dir->i_ino; | 347 | fnode->up = dir->i_ino; |
| 348 | hpfs_set_ea(result, fnode, "SYMLINK", (char *)symlink, strlen(symlink)); | 348 | hpfs_set_ea(result, fnode, "SYMLINK", symlink, strlen(symlink)); |
| 349 | mark_buffer_dirty(bh); | 349 | mark_buffer_dirty(bh); |
| 350 | brelse(bh); | 350 | brelse(bh); |
| 351 | 351 | ||
| @@ -369,7 +369,7 @@ bail: | |||
| 369 | 369 | ||
| 370 | static int hpfs_unlink(struct inode *dir, struct dentry *dentry) | 370 | static int hpfs_unlink(struct inode *dir, struct dentry *dentry) |
| 371 | { | 371 | { |
| 372 | const char *name = dentry->d_name.name; | 372 | const unsigned char *name = dentry->d_name.name; |
| 373 | unsigned len = dentry->d_name.len; | 373 | unsigned len = dentry->d_name.len; |
| 374 | struct quad_buffer_head qbh; | 374 | struct quad_buffer_head qbh; |
| 375 | struct hpfs_dirent *de; | 375 | struct hpfs_dirent *de; |
| @@ -381,12 +381,12 @@ static int hpfs_unlink(struct inode *dir, struct dentry *dentry) | |||
| 381 | int err; | 381 | int err; |
| 382 | 382 | ||
| 383 | lock_kernel(); | 383 | lock_kernel(); |
| 384 | hpfs_adjust_length((char *)name, &len); | 384 | hpfs_adjust_length(name, &len); |
| 385 | again: | 385 | again: |
| 386 | mutex_lock(&hpfs_i(inode)->i_parent_mutex); | 386 | mutex_lock(&hpfs_i(inode)->i_parent_mutex); |
| 387 | mutex_lock(&hpfs_i(dir)->i_mutex); | 387 | mutex_lock(&hpfs_i(dir)->i_mutex); |
| 388 | err = -ENOENT; | 388 | err = -ENOENT; |
| 389 | de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *)name, len, &dno, &qbh); | 389 | de = map_dirent(dir, hpfs_i(dir)->i_dno, name, len, &dno, &qbh); |
| 390 | if (!de) | 390 | if (!de) |
| 391 | goto out; | 391 | goto out; |
| 392 | 392 | ||
| @@ -451,7 +451,7 @@ out: | |||
| 451 | 451 | ||
| 452 | static int hpfs_rmdir(struct inode *dir, struct dentry *dentry) | 452 | static int hpfs_rmdir(struct inode *dir, struct dentry *dentry) |
| 453 | { | 453 | { |
| 454 | const char *name = dentry->d_name.name; | 454 | const unsigned char *name = dentry->d_name.name; |
| 455 | unsigned len = dentry->d_name.len; | 455 | unsigned len = dentry->d_name.len; |
| 456 | struct quad_buffer_head qbh; | 456 | struct quad_buffer_head qbh; |
| 457 | struct hpfs_dirent *de; | 457 | struct hpfs_dirent *de; |
| @@ -462,12 +462,12 @@ static int hpfs_rmdir(struct inode *dir, struct dentry *dentry) | |||
| 462 | int err; | 462 | int err; |
| 463 | int r; | 463 | int r; |
| 464 | 464 | ||
| 465 | hpfs_adjust_length((char *)name, &len); | 465 | hpfs_adjust_length(name, &len); |
| 466 | lock_kernel(); | 466 | lock_kernel(); |
| 467 | mutex_lock(&hpfs_i(inode)->i_parent_mutex); | 467 | mutex_lock(&hpfs_i(inode)->i_parent_mutex); |
| 468 | mutex_lock(&hpfs_i(dir)->i_mutex); | 468 | mutex_lock(&hpfs_i(dir)->i_mutex); |
| 469 | err = -ENOENT; | 469 | err = -ENOENT; |
| 470 | de = map_dirent(dir, hpfs_i(dir)->i_dno, (char *)name, len, &dno, &qbh); | 470 | de = map_dirent(dir, hpfs_i(dir)->i_dno, name, len, &dno, &qbh); |
| 471 | if (!de) | 471 | if (!de) |
| 472 | goto out; | 472 | goto out; |
| 473 | 473 | ||
| @@ -546,10 +546,10 @@ const struct address_space_operations hpfs_symlink_aops = { | |||
| 546 | static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, | 546 | static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, |
| 547 | struct inode *new_dir, struct dentry *new_dentry) | 547 | struct inode *new_dir, struct dentry *new_dentry) |
| 548 | { | 548 | { |
| 549 | char *old_name = (char *)old_dentry->d_name.name; | 549 | const unsigned char *old_name = old_dentry->d_name.name; |
| 550 | int old_len = old_dentry->d_name.len; | 550 | unsigned old_len = old_dentry->d_name.len; |
| 551 | char *new_name = (char *)new_dentry->d_name.name; | 551 | const unsigned char *new_name = new_dentry->d_name.name; |
| 552 | int new_len = new_dentry->d_name.len; | 552 | unsigned new_len = new_dentry->d_name.len; |
| 553 | struct inode *i = old_dentry->d_inode; | 553 | struct inode *i = old_dentry->d_inode; |
| 554 | struct inode *new_inode = new_dentry->d_inode; | 554 | struct inode *new_inode = new_dentry->d_inode; |
| 555 | struct quad_buffer_head qbh, qbh1; | 555 | struct quad_buffer_head qbh, qbh1; |
| @@ -560,9 +560,9 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 560 | struct buffer_head *bh; | 560 | struct buffer_head *bh; |
| 561 | struct fnode *fnode; | 561 | struct fnode *fnode; |
| 562 | int err; | 562 | int err; |
| 563 | if ((err = hpfs_chk_name((char *)new_name, &new_len))) return err; | 563 | if ((err = hpfs_chk_name(new_name, &new_len))) return err; |
| 564 | err = 0; | 564 | err = 0; |
| 565 | hpfs_adjust_length((char *)old_name, &old_len); | 565 | hpfs_adjust_length(old_name, &old_len); |
| 566 | 566 | ||
| 567 | lock_kernel(); | 567 | lock_kernel(); |
| 568 | /* order doesn't matter, due to VFS exclusion */ | 568 | /* order doesn't matter, due to VFS exclusion */ |
| @@ -579,7 +579,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 579 | goto end1; | 579 | goto end1; |
| 580 | } | 580 | } |
| 581 | 581 | ||
| 582 | if (!(dep = map_dirent(old_dir, hpfs_i(old_dir)->i_dno, (char *)old_name, old_len, &dno, &qbh))) { | 582 | if (!(dep = map_dirent(old_dir, hpfs_i(old_dir)->i_dno, old_name, old_len, &dno, &qbh))) { |
| 583 | hpfs_error(i->i_sb, "lookup succeeded but map dirent failed"); | 583 | hpfs_error(i->i_sb, "lookup succeeded but map dirent failed"); |
| 584 | err = -ENOENT; | 584 | err = -ENOENT; |
| 585 | goto end1; | 585 | goto end1; |
| @@ -590,7 +590,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 590 | if (new_inode) { | 590 | if (new_inode) { |
| 591 | int r; | 591 | int r; |
| 592 | if ((r = hpfs_remove_dirent(old_dir, dno, dep, &qbh, 1)) != 2) { | 592 | if ((r = hpfs_remove_dirent(old_dir, dno, dep, &qbh, 1)) != 2) { |
| 593 | if ((nde = map_dirent(new_dir, hpfs_i(new_dir)->i_dno, (char *)new_name, new_len, NULL, &qbh1))) { | 593 | if ((nde = map_dirent(new_dir, hpfs_i(new_dir)->i_dno, new_name, new_len, NULL, &qbh1))) { |
| 594 | clear_nlink(new_inode); | 594 | clear_nlink(new_inode); |
| 595 | copy_de(nde, &de); | 595 | copy_de(nde, &de); |
| 596 | memcpy(nde->name, new_name, new_len); | 596 | memcpy(nde->name, new_name, new_len); |
| @@ -618,7 +618,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 618 | } | 618 | } |
| 619 | 619 | ||
| 620 | if (new_dir == old_dir) | 620 | if (new_dir == old_dir) |
| 621 | if (!(dep = map_dirent(old_dir, hpfs_i(old_dir)->i_dno, (char *)old_name, old_len, &dno, &qbh))) { | 621 | if (!(dep = map_dirent(old_dir, hpfs_i(old_dir)->i_dno, old_name, old_len, &dno, &qbh))) { |
| 622 | hpfs_unlock_creation(i->i_sb); | 622 | hpfs_unlock_creation(i->i_sb); |
| 623 | hpfs_error(i->i_sb, "lookup succeeded but map dirent failed at #2"); | 623 | hpfs_error(i->i_sb, "lookup succeeded but map dirent failed at #2"); |
| 624 | err = -ENOENT; | 624 | err = -ENOENT; |
| @@ -648,7 +648,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 648 | brelse(bh); | 648 | brelse(bh); |
| 649 | } | 649 | } |
| 650 | hpfs_i(i)->i_conv = hpfs_sb(i->i_sb)->sb_conv; | 650 | hpfs_i(i)->i_conv = hpfs_sb(i->i_sb)->sb_conv; |
| 651 | hpfs_decide_conv(i, (char *)new_name, new_len); | 651 | hpfs_decide_conv(i, new_name, new_len); |
| 652 | end1: | 652 | end1: |
| 653 | if (old_dir != new_dir) | 653 | if (old_dir != new_dir) |
| 654 | mutex_unlock(&hpfs_i(new_dir)->i_mutex); | 654 | mutex_unlock(&hpfs_i(new_dir)->i_mutex); |
