.. | .. |
---|
29 | 29 | flags |= ST_NODIRATIME; |
---|
30 | 30 | if (mnt_flags & MNT_RELATIME) |
---|
31 | 31 | flags |= ST_RELATIME; |
---|
| 32 | + if (mnt_flags & MNT_NOSYMFOLLOW) |
---|
| 33 | + flags |= ST_NOSYMFOLLOW; |
---|
32 | 34 | return flags; |
---|
33 | 35 | } |
---|
34 | 36 | |
---|
.. | .. |
---|
66 | 68 | buf->f_frsize = buf->f_bsize; |
---|
67 | 69 | return retval; |
---|
68 | 70 | } |
---|
| 71 | + |
---|
| 72 | +int vfs_get_fsid(struct dentry *dentry, __kernel_fsid_t *fsid) |
---|
| 73 | +{ |
---|
| 74 | + struct kstatfs st; |
---|
| 75 | + int error; |
---|
| 76 | + |
---|
| 77 | + error = statfs_by_dentry(dentry, &st); |
---|
| 78 | + if (error) |
---|
| 79 | + return error; |
---|
| 80 | + |
---|
| 81 | + *fsid = st.f_fsid; |
---|
| 82 | + return 0; |
---|
| 83 | +} |
---|
| 84 | +EXPORT_SYMBOL(vfs_get_fsid); |
---|
69 | 85 | |
---|
70 | 86 | int vfs_statfs(const struct path *path, struct kstatfs *buf) |
---|
71 | 87 | { |
---|
.. | .. |
---|
114 | 130 | if (sizeof(buf) == sizeof(*st)) |
---|
115 | 131 | memcpy(&buf, st, sizeof(*st)); |
---|
116 | 132 | else { |
---|
| 133 | + memset(&buf, 0, sizeof(buf)); |
---|
117 | 134 | if (sizeof buf.f_blocks == 4) { |
---|
118 | 135 | if ((st->f_blocks | st->f_bfree | st->f_bavail | |
---|
119 | 136 | st->f_bsize | st->f_frsize) & |
---|
.. | .. |
---|
142 | 159 | buf.f_namelen = st->f_namelen; |
---|
143 | 160 | buf.f_frsize = st->f_frsize; |
---|
144 | 161 | buf.f_flags = st->f_flags; |
---|
145 | | - memset(buf.f_spare, 0, sizeof(buf.f_spare)); |
---|
146 | 162 | } |
---|
147 | 163 | if (copy_to_user(p, &buf, sizeof(buf))) |
---|
148 | 164 | return -EFAULT; |
---|
.. | .. |
---|
155 | 171 | if (sizeof(buf) == sizeof(*st)) |
---|
156 | 172 | memcpy(&buf, st, sizeof(*st)); |
---|
157 | 173 | else { |
---|
| 174 | + memset(&buf, 0, sizeof(buf)); |
---|
158 | 175 | buf.f_type = st->f_type; |
---|
159 | 176 | buf.f_bsize = st->f_bsize; |
---|
160 | 177 | buf.f_blocks = st->f_blocks; |
---|
.. | .. |
---|
166 | 183 | buf.f_namelen = st->f_namelen; |
---|
167 | 184 | buf.f_frsize = st->f_frsize; |
---|
168 | 185 | buf.f_flags = st->f_flags; |
---|
169 | | - memset(buf.f_spare, 0, sizeof(buf.f_spare)); |
---|
170 | 186 | } |
---|
171 | 187 | if (copy_to_user(p, &buf, sizeof(buf))) |
---|
172 | 188 | return -EFAULT; |
---|