Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs

Pull misc final vfs updates from Al Viro:
"A few unrelated patches that got beating in -next.

Everything else will have to go into the next window ;-/"

* 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
hfs: fix hfs_readdir()
selftest for default_file_splice_read() infoleak
9p: constify ->d_name handling

+67 -43
+5 -5
fs/9p/fid.c
··· 91 91 * dentry names. 92 92 */ 93 93 static int build_path_from_dentry(struct v9fs_session_info *v9ses, 94 - struct dentry *dentry, char ***names) 94 + struct dentry *dentry, const unsigned char ***names) 95 95 { 96 96 int n = 0, i; 97 - char **wnames; 97 + const unsigned char **wnames; 98 98 struct dentry *ds; 99 99 100 100 for (ds = dentry; !IS_ROOT(ds); ds = ds->d_parent) ··· 105 105 goto err_out; 106 106 107 107 for (ds = dentry, i = (n-1); i >= 0; i--, ds = ds->d_parent) 108 - wnames[i] = (char *)ds->d_name.name; 108 + wnames[i] = ds->d_name.name; 109 109 110 110 *names = wnames; 111 111 return n; ··· 117 117 kuid_t uid, int any) 118 118 { 119 119 struct dentry *ds; 120 - char **wnames, *uname; 120 + const unsigned char **wnames, *uname; 121 121 int i, n, l, clone, access; 122 122 struct v9fs_session_info *v9ses; 123 123 struct p9_fid *fid, *old_fid = NULL; ··· 137 137 fid = v9fs_fid_find(ds, uid, any); 138 138 if (fid) { 139 139 /* Found the parent fid do a lookup with that */ 140 - fid = p9_client_walk(fid, 1, (char **)&dentry->d_name.name, 1); 140 + fid = p9_client_walk(fid, 1, &dentry->d_name.name, 1); 141 141 goto fid_out; 142 142 } 143 143 up_read(&v9ses->rename_sem);
+5 -5
fs/9p/vfs_inode.c
··· 643 643 struct dentry *dentry, char *extension, u32 perm, u8 mode) 644 644 { 645 645 int err; 646 - char *name; 646 + const unsigned char *name; 647 647 struct p9_fid *dfid, *ofid, *fid; 648 648 struct inode *inode; 649 649 ··· 652 652 err = 0; 653 653 ofid = NULL; 654 654 fid = NULL; 655 - name = (char *) dentry->d_name.name; 655 + name = dentry->d_name.name; 656 656 dfid = v9fs_parent_fid(dentry); 657 657 if (IS_ERR(dfid)) { 658 658 err = PTR_ERR(dfid); ··· 788 788 struct v9fs_session_info *v9ses; 789 789 struct p9_fid *dfid, *fid; 790 790 struct inode *inode; 791 - char *name; 791 + const unsigned char *name; 792 792 793 793 p9_debug(P9_DEBUG_VFS, "dir: %p dentry: (%pd) %p flags: %x\n", 794 794 dir, dentry, dentry, flags); ··· 802 802 if (IS_ERR(dfid)) 803 803 return ERR_CAST(dfid); 804 804 805 - name = (char *) dentry->d_name.name; 805 + name = dentry->d_name.name; 806 806 fid = p9_client_walk(dfid, 1, &name, 1); 807 807 if (IS_ERR(fid)) { 808 808 if (fid == ERR_PTR(-ENOENT)) { ··· 1012 1012 } 1013 1013 v9fs_blank_wstat(&wstat); 1014 1014 wstat.muid = v9ses->uname; 1015 - wstat.name = (char *) new_dentry->d_name.name; 1015 + wstat.name = new_dentry->d_name.name; 1016 1016 retval = p9_client_wstat(oldfid, &wstat); 1017 1017 1018 1018 clunk_newdir:
+10 -10
fs/9p/vfs_inode_dotl.c
··· 244 244 int err = 0; 245 245 kgid_t gid; 246 246 umode_t mode; 247 - char *name = NULL; 247 + const unsigned char *name = NULL; 248 248 struct p9_qid qid; 249 249 struct inode *inode; 250 250 struct p9_fid *fid = NULL; ··· 269 269 270 270 v9ses = v9fs_inode2v9ses(dir); 271 271 272 - name = (char *) dentry->d_name.name; 272 + name = dentry->d_name.name; 273 273 p9_debug(P9_DEBUG_VFS, "name:%s flags:0x%x mode:0x%hx\n", 274 274 name, flags, omode); 275 275 ··· 385 385 struct v9fs_session_info *v9ses; 386 386 struct p9_fid *fid = NULL, *dfid = NULL; 387 387 kgid_t gid; 388 - char *name; 388 + const unsigned char *name; 389 389 umode_t mode; 390 390 struct inode *inode; 391 391 struct p9_qid qid; ··· 416 416 err); 417 417 goto error; 418 418 } 419 - name = (char *) dentry->d_name.name; 419 + name = dentry->d_name.name; 420 420 err = p9_client_mkdir_dotl(dfid, name, mode, gid, &qid); 421 421 if (err < 0) 422 422 goto error; ··· 679 679 { 680 680 int err; 681 681 kgid_t gid; 682 - char *name; 682 + const unsigned char *name; 683 683 struct p9_qid qid; 684 684 struct inode *inode; 685 685 struct p9_fid *dfid; 686 686 struct p9_fid *fid = NULL; 687 687 struct v9fs_session_info *v9ses; 688 688 689 - name = (char *) dentry->d_name.name; 689 + name = dentry->d_name.name; 690 690 p9_debug(P9_DEBUG_VFS, "%lu,%s,%s\n", dir->i_ino, name, symname); 691 691 v9ses = v9fs_inode2v9ses(dir); 692 692 ··· 700 700 gid = v9fs_get_fsgid_for_create(dir); 701 701 702 702 /* Server doesn't alter fid on TSYMLINK. Hence no need to clone it. */ 703 - err = p9_client_symlink(dfid, name, (char *)symname, gid, &qid); 703 + err = p9_client_symlink(dfid, name, symname, gid, &qid); 704 704 705 705 if (err < 0) { 706 706 p9_debug(P9_DEBUG_VFS, "p9_client_symlink failed %d\n", err); ··· 776 776 if (IS_ERR(oldfid)) 777 777 return PTR_ERR(oldfid); 778 778 779 - err = p9_client_link(dfid, oldfid, (char *)dentry->d_name.name); 779 + err = p9_client_link(dfid, oldfid, dentry->d_name.name); 780 780 781 781 if (err < 0) { 782 782 p9_debug(P9_DEBUG_VFS, "p9_client_link failed %d\n", err); ··· 813 813 { 814 814 int err; 815 815 kgid_t gid; 816 - char *name; 816 + const unsigned char *name; 817 817 umode_t mode; 818 818 struct v9fs_session_info *v9ses; 819 819 struct p9_fid *fid = NULL, *dfid = NULL; ··· 843 843 err); 844 844 goto error; 845 845 } 846 - name = (char *) dentry->d_name.name; 846 + name = dentry->d_name.name; 847 847 848 848 err = p9_client_mknod_dotl(dfid, name, mode, rdev, gid, &qid); 849 849 if (err < 0)
+1 -1
fs/hfs/dir.c
··· 169 169 * Can be done after the list insertion; exclusion with 170 170 * hfs_delete_cat() is provided by directory lock. 171 171 */ 172 - memcpy(&rd->key, &fd.key, sizeof(struct hfs_cat_key)); 172 + memcpy(&rd->key, &fd.key->cat, sizeof(struct hfs_cat_key)); 173 173 out: 174 174 hfs_find_exit(&fd); 175 175 return err;
+4 -4
include/net/9p/9p.h
··· 402 402 u32 atime; 403 403 u32 mtime; 404 404 u64 length; 405 - char *name; 406 - char *uid; 407 - char *gid; 408 - char *muid; 405 + const char *name; 406 + const char *uid; 407 + const char *gid; 408 + const char *muid; 409 409 char *extension; /* 9p2000.u extensions */ 410 410 kuid_t n_uid; /* 9p2000.u extensions */ 411 411 kgid_t n_gid; /* 9p2000.u extensions */
+9 -9
include/net/9p/client.h
··· 223 223 void p9_client_disconnect(struct p9_client *clnt); 224 224 void p9_client_begin_disconnect(struct p9_client *clnt); 225 225 struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid, 226 - char *uname, kuid_t n_uname, char *aname); 226 + const char *uname, kuid_t n_uname, const char *aname); 227 227 struct p9_fid *p9_client_walk(struct p9_fid *oldfid, uint16_t nwname, 228 - char **wnames, int clone); 228 + const unsigned char * const *wnames, int clone); 229 229 int p9_client_open(struct p9_fid *fid, int mode); 230 - int p9_client_fcreate(struct p9_fid *fid, char *name, u32 perm, int mode, 230 + int p9_client_fcreate(struct p9_fid *fid, const char *name, u32 perm, int mode, 231 231 char *extension); 232 - int p9_client_link(struct p9_fid *fid, struct p9_fid *oldfid, char *newname); 233 - int p9_client_symlink(struct p9_fid *fid, char *name, char *symname, kgid_t gid, 234 - struct p9_qid *qid); 235 - int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, 232 + int p9_client_link(struct p9_fid *fid, struct p9_fid *oldfid, const char *newname); 233 + int p9_client_symlink(struct p9_fid *fid, const char *name, const char *symname, 234 + kgid_t gid, struct p9_qid *qid); 235 + int p9_client_create_dotl(struct p9_fid *ofid, const char *name, u32 flags, u32 mode, 236 236 kgid_t gid, struct p9_qid *qid); 237 237 int p9_client_clunk(struct p9_fid *fid); 238 238 int p9_client_fsync(struct p9_fid *fid, int datasync); ··· 250 250 struct p9_stat_dotl *p9_client_getattr_dotl(struct p9_fid *fid, 251 251 u64 request_mask); 252 252 253 - int p9_client_mknod_dotl(struct p9_fid *oldfid, char *name, int mode, 253 + int p9_client_mknod_dotl(struct p9_fid *oldfid, const char *name, int mode, 254 254 dev_t rdev, kgid_t gid, struct p9_qid *); 255 - int p9_client_mkdir_dotl(struct p9_fid *fid, char *name, int mode, 255 + int p9_client_mkdir_dotl(struct p9_fid *fid, const char *name, int mode, 256 256 kgid_t gid, struct p9_qid *); 257 257 int p9_client_lock_dotl(struct p9_fid *fid, struct p9_flock *flock, u8 *status); 258 258 int p9_client_getlock_dotl(struct p9_fid *fid, struct p9_getlock *fl);
+9 -9
net/9p/client.c
··· 1101 1101 EXPORT_SYMBOL(p9_client_begin_disconnect); 1102 1102 1103 1103 struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid, 1104 - char *uname, kuid_t n_uname, char *aname) 1104 + const char *uname, kuid_t n_uname, const char *aname) 1105 1105 { 1106 1106 int err = 0; 1107 1107 struct p9_req_t *req; ··· 1149 1149 EXPORT_SYMBOL(p9_client_attach); 1150 1150 1151 1151 struct p9_fid *p9_client_walk(struct p9_fid *oldfid, uint16_t nwname, 1152 - char **wnames, int clone) 1152 + const unsigned char * const *wnames, int clone) 1153 1153 { 1154 1154 int err; 1155 1155 struct p9_client *clnt; ··· 1271 1271 } 1272 1272 EXPORT_SYMBOL(p9_client_open); 1273 1273 1274 - int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode, 1274 + int p9_client_create_dotl(struct p9_fid *ofid, const char *name, u32 flags, u32 mode, 1275 1275 kgid_t gid, struct p9_qid *qid) 1276 1276 { 1277 1277 int err = 0; ··· 1316 1316 } 1317 1317 EXPORT_SYMBOL(p9_client_create_dotl); 1318 1318 1319 - int p9_client_fcreate(struct p9_fid *fid, char *name, u32 perm, int mode, 1319 + int p9_client_fcreate(struct p9_fid *fid, const char *name, u32 perm, int mode, 1320 1320 char *extension) 1321 1321 { 1322 1322 int err; ··· 1361 1361 } 1362 1362 EXPORT_SYMBOL(p9_client_fcreate); 1363 1363 1364 - int p9_client_symlink(struct p9_fid *dfid, char *name, char *symtgt, kgid_t gid, 1365 - struct p9_qid *qid) 1364 + int p9_client_symlink(struct p9_fid *dfid, const char *name, 1365 + const char *symtgt, kgid_t gid, struct p9_qid *qid) 1366 1366 { 1367 1367 int err = 0; 1368 1368 struct p9_client *clnt; ··· 1395 1395 } 1396 1396 EXPORT_SYMBOL(p9_client_symlink); 1397 1397 1398 - int p9_client_link(struct p9_fid *dfid, struct p9_fid *oldfid, char *newname) 1398 + int p9_client_link(struct p9_fid *dfid, struct p9_fid *oldfid, const char *newname) 1399 1399 { 1400 1400 struct p9_client *clnt; 1401 1401 struct p9_req_t *req; ··· 2117 2117 } 2118 2118 EXPORT_SYMBOL(p9_client_readdir); 2119 2119 2120 - int p9_client_mknod_dotl(struct p9_fid *fid, char *name, int mode, 2120 + int p9_client_mknod_dotl(struct p9_fid *fid, const char *name, int mode, 2121 2121 dev_t rdev, kgid_t gid, struct p9_qid *qid) 2122 2122 { 2123 2123 int err; ··· 2148 2148 } 2149 2149 EXPORT_SYMBOL(p9_client_mknod_dotl); 2150 2150 2151 - int p9_client_mkdir_dotl(struct p9_fid *fid, char *name, int mode, 2151 + int p9_client_mkdir_dotl(struct p9_fid *fid, const char *name, int mode, 2152 2152 kgid_t gid, struct p9_qid *qid) 2153 2153 { 2154 2154 int err;
+1
tools/testing/selftests/Makefile
··· 26 26 TARGETS += seccomp 27 27 TARGETS += sigaltstack 28 28 TARGETS += size 29 + TARGETS += splice 29 30 TARGETS += static_keys 30 31 TARGETS += sync 31 32 TARGETS += sysctl
+8
tools/testing/selftests/splice/Makefile
··· 1 + TEST_PROGS := default_file_splice_read.sh 2 + EXTRA := default_file_splice_read 3 + all: $(TEST_PROGS) $(EXTRA) 4 + 5 + include ../lib.mk 6 + 7 + clean: 8 + rm -fr $(TEST_PROGS) $(EXTRA)
+8
tools/testing/selftests/splice/default_file_splice_read.c
··· 1 + #define _GNU_SOURCE 2 + #include <fcntl.h> 3 + 4 + int main(int argc, char **argv) 5 + { 6 + splice(0, 0, 1, 0, 1<<30, 0); 7 + return 0; 8 + }
+7
tools/testing/selftests/splice/default_file_splice_read.sh
··· 1 + #!/bin/sh 2 + n=`./default_file_splice_read </dev/null | wc -c` 3 + 4 + test "$n" = 0 && exit 0 5 + 6 + echo "default_file_splice_read broken: leaked $n" 7 + exit 1