aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2010-02-08 12:53:52 -0500
committerEric Paris <eparis@redhat.com>2010-07-28 09:59:01 -0400
commit59b0df211bd9699d7e0d01fcf9345a149f75b033 (patch)
tree0f6e8bebfa090aa5c1d91d9efc5c2b04aeeed05c
parent43ed7e16a8b47059d7f6ff67ba76f383a2421de3 (diff)
fsnotify: use unsigned char * for dentry->d_name.name
fsnotify was using char * when it passed around the d_name.name string internally but it is actually an unsigned char *. This patch switches fsnotify to use unsigned and should silence some pointer signess warnings which have popped out of xfs. I do not add -Wpointer-sign to the fsnotify code as there are still issues with kstrdup and strlen which would pop out needless warnings. Signed-off-by: Eric Paris <eparis@redhat.com>
-rw-r--r--fs/namei.c2
-rw-r--r--fs/notify/fsnotify.c5
-rw-r--r--fs/notify/notification.c4
-rw-r--r--include/linux/fsnotify.h12
-rw-r--r--include/linux/fsnotify_backend.h9
5 files changed, 17 insertions, 15 deletions
diff --git a/fs/namei.c b/fs/namei.c
index 868d0cb9d473..3479b176a4cd 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2635,7 +2635,7 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
2635{ 2635{
2636 int error; 2636 int error;
2637 int is_dir = S_ISDIR(old_dentry->d_inode->i_mode); 2637 int is_dir = S_ISDIR(old_dentry->d_inode->i_mode);
2638 const char *old_name; 2638 const unsigned char *old_name;
2639 2639
2640 if (old_dentry->d_inode == new_dentry->d_inode) 2640 if (old_dentry->d_inode == new_dentry->d_inode)
2641 return 0; 2641 return 0;
diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c
index 54d58d5f72c1..c5adf833bf6a 100644
--- a/fs/notify/fsnotify.c
+++ b/fs/notify/fsnotify.c
@@ -171,7 +171,7 @@ void __fsnotify_flush_ignored_mask(struct inode *inode, void *data, int data_is)
171 171
172static void send_to_group(struct fsnotify_group *group, struct inode *to_tell, 172static void send_to_group(struct fsnotify_group *group, struct inode *to_tell,
173 struct vfsmount *mnt, __u32 mask, void *data, 173 struct vfsmount *mnt, __u32 mask, void *data,
174 int data_is, u32 cookie, const char *file_name, 174 int data_is, u32 cookie, const unsigned char *file_name,
175 struct fsnotify_event **event) 175 struct fsnotify_event **event)
176{ 176{
177 if (!group->ops->should_send_event(group, to_tell, mnt, mask, 177 if (!group->ops->should_send_event(group, to_tell, mnt, mask,
@@ -206,7 +206,8 @@ static bool needed_by_vfsmount(__u32 test_mask, struct vfsmount *mnt)
206 * out to all of the registered fsnotify_group. Those groups can then use the 206 * out to all of the registered fsnotify_group. Those groups can then use the
207 * notification event in whatever means they feel necessary. 207 * notification event in whatever means they feel necessary.
208 */ 208 */
209void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is, const char *file_name, u32 cookie) 209void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is,
210 const unsigned char *file_name, u32 cookie)
210{ 211{
211 struct fsnotify_group *group; 212 struct fsnotify_group *group;
212 struct fsnotify_event *event = NULL; 213 struct fsnotify_event *event = NULL;
diff --git a/fs/notify/notification.c b/fs/notify/notification.c
index 2d50a40ab1e4..b35faafacd38 100644
--- a/fs/notify/notification.c
+++ b/fs/notify/notification.c
@@ -370,8 +370,8 @@ struct fsnotify_event *fsnotify_clone_event(struct fsnotify_event *old_event)
370 * @name the filename, if available 370 * @name the filename, if available
371 */ 371 */
372struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask, void *data, 372struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask, void *data,
373 int data_type, const char *name, u32 cookie, 373 int data_type, const unsigned char *name,
374 gfp_t gfp) 374 u32 cookie, gfp_t gfp)
375{ 375{
376 struct fsnotify_event *event; 376 struct fsnotify_event *event;
377 377
diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h
index 06c0e50c7968..b8cf161f5a6d 100644
--- a/include/linux/fsnotify.h
+++ b/include/linux/fsnotify.h
@@ -59,14 +59,14 @@ static inline void fsnotify_link_count(struct inode *inode)
59 * fsnotify_move - file old_name at old_dir was moved to new_name at new_dir 59 * fsnotify_move - file old_name at old_dir was moved to new_name at new_dir
60 */ 60 */
61static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, 61static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir,
62 const char *old_name, 62 const unsigned char *old_name,
63 int isdir, struct inode *target, struct dentry *moved) 63 int isdir, struct inode *target, struct dentry *moved)
64{ 64{
65 struct inode *source = moved->d_inode; 65 struct inode *source = moved->d_inode;
66 u32 fs_cookie = fsnotify_get_cookie(); 66 u32 fs_cookie = fsnotify_get_cookie();
67 __u32 old_dir_mask = (FS_EVENT_ON_CHILD | FS_MOVED_FROM); 67 __u32 old_dir_mask = (FS_EVENT_ON_CHILD | FS_MOVED_FROM);
68 __u32 new_dir_mask = (FS_EVENT_ON_CHILD | FS_MOVED_TO); 68 __u32 new_dir_mask = (FS_EVENT_ON_CHILD | FS_MOVED_TO);
69 const char *new_name = moved->d_name.name; 69 const unsigned char *new_name = moved->d_name.name;
70 70
71 if (old_dir == new_dir) 71 if (old_dir == new_dir)
72 old_dir_mask |= FS_DN_RENAME; 72 old_dir_mask |= FS_DN_RENAME;
@@ -290,7 +290,7 @@ static inline void fsnotify_change(struct dentry *dentry, unsigned int ia_valid)
290/* 290/*
291 * fsnotify_oldname_init - save off the old filename before we change it 291 * fsnotify_oldname_init - save off the old filename before we change it
292 */ 292 */
293static inline const char *fsnotify_oldname_init(const char *name) 293static inline const unsigned char *fsnotify_oldname_init(const unsigned char *name)
294{ 294{
295 return kstrdup(name, GFP_KERNEL); 295 return kstrdup(name, GFP_KERNEL);
296} 296}
@@ -298,19 +298,19 @@ static inline const char *fsnotify_oldname_init(const char *name)
298/* 298/*
299 * fsnotify_oldname_free - free the name we got from fsnotify_oldname_init 299 * fsnotify_oldname_free - free the name we got from fsnotify_oldname_init
300 */ 300 */
301static inline void fsnotify_oldname_free(const char *old_name) 301static inline void fsnotify_oldname_free(const unsigned char *old_name)
302{ 302{
303 kfree(old_name); 303 kfree(old_name);
304} 304}
305 305
306#else /* CONFIG_FSNOTIFY */ 306#else /* CONFIG_FSNOTIFY */
307 307
308static inline const char *fsnotify_oldname_init(const char *name) 308static inline const char *fsnotify_oldname_init(const unsigned char *name)
309{ 309{
310 return NULL; 310 return NULL;
311} 311}
312 312
313static inline void fsnotify_oldname_free(const char *old_name) 313static inline void fsnotify_oldname_free(const unsigned char *old_name)
314{ 314{
315} 315}
316 316
diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h
index afc690192972..efe9ba321cf2 100644
--- a/include/linux/fsnotify_backend.h
+++ b/include/linux/fsnotify_backend.h
@@ -220,7 +220,7 @@ struct fsnotify_event {
220 __u32 mask; /* the type of access, bitwise OR for FS_* event types */ 220 __u32 mask; /* the type of access, bitwise OR for FS_* event types */
221 221
222 u32 sync_cookie; /* used to corrolate events, namely inotify mv events */ 222 u32 sync_cookie; /* used to corrolate events, namely inotify mv events */
223 char *file_name; 223 const unsigned char *file_name;
224 size_t name_len; 224 size_t name_len;
225 struct pid *tgid; 225 struct pid *tgid;
226 226
@@ -283,7 +283,7 @@ struct fsnotify_mark {
283 283
284/* main fsnotify call to send events */ 284/* main fsnotify call to send events */
285extern void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is, 285extern void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is,
286 const char *name, u32 cookie); 286 const unsigned char *name, u32 cookie);
287extern void __fsnotify_parent(struct path *path, struct dentry *dentry, __u32 mask); 287extern void __fsnotify_parent(struct path *path, struct dentry *dentry, __u32 mask);
288extern void __fsnotify_inode_delete(struct inode *inode); 288extern void __fsnotify_inode_delete(struct inode *inode);
289extern void __fsnotify_vfsmount_delete(struct vfsmount *mnt); 289extern void __fsnotify_vfsmount_delete(struct vfsmount *mnt);
@@ -402,7 +402,8 @@ extern void fsnotify_unmount_inodes(struct list_head *list);
402 402
403/* put here because inotify does some weird stuff when destroying watches */ 403/* put here because inotify does some weird stuff when destroying watches */
404extern struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask, 404extern struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask,
405 void *data, int data_is, const char *name, 405 void *data, int data_is,
406 const unsigned char *name,
406 u32 cookie, gfp_t gfp); 407 u32 cookie, gfp_t gfp);
407 408
408/* fanotify likes to change events after they are on lists... */ 409/* fanotify likes to change events after they are on lists... */
@@ -413,7 +414,7 @@ extern int fsnotify_replace_event(struct fsnotify_event_holder *old_holder,
413#else 414#else
414 415
415static inline void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is, 416static inline void fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is,
416 const char *name, u32 cookie) 417 const unsigned char *name, u32 cookie)
417{} 418{}
418 419
419static inline void __fsnotify_parent(struct path *path, struct dentry *dentry, __u32 mask) 420static inline void __fsnotify_parent(struct path *path, struct dentry *dentry, __u32 mask)