diff options
author | Arnd Bergmann <arnd@arndb.de> | 2010-07-07 17:40:10 -0400 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2010-08-02 01:34:59 -0400 |
commit | 57a62c2317d60b21b7761c319a733a894482a6af (patch) | |
tree | 03329d5df0a390640fbe5a41be064e5914673b02 /security/selinux | |
parent | cdcd90f9e450d4edb5fab0490119f9540874e882 (diff) |
selinux: use generic_file_llseek
The default for llseek will change to no_llseek,
so selinuxfs needs to add explicit .llseek
assignments. Since we're dealing with regular
files from a VFS perspective, use generic_file_llseek.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Stephen Smalley <sds@tycho.nsa.gov>
Cc: Eric Paris <eparis@parisplace.org>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'security/selinux')
-rw-r--r-- | security/selinux/selinuxfs.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index 0293843f7eda..79a1bb635662 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c | |||
@@ -184,6 +184,7 @@ out: | |||
184 | static const struct file_operations sel_enforce_ops = { | 184 | static const struct file_operations sel_enforce_ops = { |
185 | .read = sel_read_enforce, | 185 | .read = sel_read_enforce, |
186 | .write = sel_write_enforce, | 186 | .write = sel_write_enforce, |
187 | .llseek = generic_file_llseek, | ||
187 | }; | 188 | }; |
188 | 189 | ||
189 | static ssize_t sel_read_handle_unknown(struct file *filp, char __user *buf, | 190 | static ssize_t sel_read_handle_unknown(struct file *filp, char __user *buf, |
@@ -201,6 +202,7 @@ static ssize_t sel_read_handle_unknown(struct file *filp, char __user *buf, | |||
201 | 202 | ||
202 | static const struct file_operations sel_handle_unknown_ops = { | 203 | static const struct file_operations sel_handle_unknown_ops = { |
203 | .read = sel_read_handle_unknown, | 204 | .read = sel_read_handle_unknown, |
205 | .llseek = generic_file_llseek, | ||
204 | }; | 206 | }; |
205 | 207 | ||
206 | #ifdef CONFIG_SECURITY_SELINUX_DISABLE | 208 | #ifdef CONFIG_SECURITY_SELINUX_DISABLE |
@@ -251,6 +253,7 @@ out: | |||
251 | 253 | ||
252 | static const struct file_operations sel_disable_ops = { | 254 | static const struct file_operations sel_disable_ops = { |
253 | .write = sel_write_disable, | 255 | .write = sel_write_disable, |
256 | .llseek = generic_file_llseek, | ||
254 | }; | 257 | }; |
255 | 258 | ||
256 | static ssize_t sel_read_policyvers(struct file *filp, char __user *buf, | 259 | static ssize_t sel_read_policyvers(struct file *filp, char __user *buf, |
@@ -265,6 +268,7 @@ static ssize_t sel_read_policyvers(struct file *filp, char __user *buf, | |||
265 | 268 | ||
266 | static const struct file_operations sel_policyvers_ops = { | 269 | static const struct file_operations sel_policyvers_ops = { |
267 | .read = sel_read_policyvers, | 270 | .read = sel_read_policyvers, |
271 | .llseek = generic_file_llseek, | ||
268 | }; | 272 | }; |
269 | 273 | ||
270 | /* declaration for sel_write_load */ | 274 | /* declaration for sel_write_load */ |
@@ -289,6 +293,7 @@ static ssize_t sel_read_mls(struct file *filp, char __user *buf, | |||
289 | 293 | ||
290 | static const struct file_operations sel_mls_ops = { | 294 | static const struct file_operations sel_mls_ops = { |
291 | .read = sel_read_mls, | 295 | .read = sel_read_mls, |
296 | .llseek = generic_file_llseek, | ||
292 | }; | 297 | }; |
293 | 298 | ||
294 | static ssize_t sel_write_load(struct file *file, const char __user *buf, | 299 | static ssize_t sel_write_load(struct file *file, const char __user *buf, |
@@ -356,6 +361,7 @@ out: | |||
356 | 361 | ||
357 | static const struct file_operations sel_load_ops = { | 362 | static const struct file_operations sel_load_ops = { |
358 | .write = sel_write_load, | 363 | .write = sel_write_load, |
364 | .llseek = generic_file_llseek, | ||
359 | }; | 365 | }; |
360 | 366 | ||
361 | static ssize_t sel_write_context(struct file *file, char *buf, size_t size) | 367 | static ssize_t sel_write_context(struct file *file, char *buf, size_t size) |
@@ -437,6 +443,7 @@ out: | |||
437 | static const struct file_operations sel_checkreqprot_ops = { | 443 | static const struct file_operations sel_checkreqprot_ops = { |
438 | .read = sel_read_checkreqprot, | 444 | .read = sel_read_checkreqprot, |
439 | .write = sel_write_checkreqprot, | 445 | .write = sel_write_checkreqprot, |
446 | .llseek = generic_file_llseek, | ||
440 | }; | 447 | }; |
441 | 448 | ||
442 | /* | 449 | /* |
@@ -482,6 +489,7 @@ static const struct file_operations transaction_ops = { | |||
482 | .write = selinux_transaction_write, | 489 | .write = selinux_transaction_write, |
483 | .read = simple_transaction_read, | 490 | .read = simple_transaction_read, |
484 | .release = simple_transaction_release, | 491 | .release = simple_transaction_release, |
492 | .llseek = generic_file_llseek, | ||
485 | }; | 493 | }; |
486 | 494 | ||
487 | /* | 495 | /* |
@@ -883,6 +891,7 @@ out: | |||
883 | static const struct file_operations sel_bool_ops = { | 891 | static const struct file_operations sel_bool_ops = { |
884 | .read = sel_read_bool, | 892 | .read = sel_read_bool, |
885 | .write = sel_write_bool, | 893 | .write = sel_write_bool, |
894 | .llseek = generic_file_llseek, | ||
886 | }; | 895 | }; |
887 | 896 | ||
888 | static ssize_t sel_commit_bools_write(struct file *filep, | 897 | static ssize_t sel_commit_bools_write(struct file *filep, |
@@ -935,6 +944,7 @@ out: | |||
935 | 944 | ||
936 | static const struct file_operations sel_commit_bools_ops = { | 945 | static const struct file_operations sel_commit_bools_ops = { |
937 | .write = sel_commit_bools_write, | 946 | .write = sel_commit_bools_write, |
947 | .llseek = generic_file_llseek, | ||
938 | }; | 948 | }; |
939 | 949 | ||
940 | static void sel_remove_entries(struct dentry *de) | 950 | static void sel_remove_entries(struct dentry *de) |
@@ -1127,10 +1137,12 @@ out: | |||
1127 | static const struct file_operations sel_avc_cache_threshold_ops = { | 1137 | static const struct file_operations sel_avc_cache_threshold_ops = { |
1128 | .read = sel_read_avc_cache_threshold, | 1138 | .read = sel_read_avc_cache_threshold, |
1129 | .write = sel_write_avc_cache_threshold, | 1139 | .write = sel_write_avc_cache_threshold, |
1140 | .llseek = generic_file_llseek, | ||
1130 | }; | 1141 | }; |
1131 | 1142 | ||
1132 | static const struct file_operations sel_avc_hash_stats_ops = { | 1143 | static const struct file_operations sel_avc_hash_stats_ops = { |
1133 | .read = sel_read_avc_hash_stats, | 1144 | .read = sel_read_avc_hash_stats, |
1145 | .llseek = generic_file_llseek, | ||
1134 | }; | 1146 | }; |
1135 | 1147 | ||
1136 | #ifdef CONFIG_SECURITY_SELINUX_AVC_STATS | 1148 | #ifdef CONFIG_SECURITY_SELINUX_AVC_STATS |
@@ -1255,6 +1267,7 @@ static ssize_t sel_read_initcon(struct file *file, char __user *buf, | |||
1255 | 1267 | ||
1256 | static const struct file_operations sel_initcon_ops = { | 1268 | static const struct file_operations sel_initcon_ops = { |
1257 | .read = sel_read_initcon, | 1269 | .read = sel_read_initcon, |
1270 | .llseek = generic_file_llseek, | ||
1258 | }; | 1271 | }; |
1259 | 1272 | ||
1260 | static int sel_make_initcon_files(struct dentry *dir) | 1273 | static int sel_make_initcon_files(struct dentry *dir) |
@@ -1330,6 +1343,7 @@ out: | |||
1330 | 1343 | ||
1331 | static const struct file_operations sel_class_ops = { | 1344 | static const struct file_operations sel_class_ops = { |
1332 | .read = sel_read_class, | 1345 | .read = sel_read_class, |
1346 | .llseek = generic_file_llseek, | ||
1333 | }; | 1347 | }; |
1334 | 1348 | ||
1335 | static ssize_t sel_read_perm(struct file *file, char __user *buf, | 1349 | static ssize_t sel_read_perm(struct file *file, char __user *buf, |
@@ -1354,6 +1368,7 @@ out: | |||
1354 | 1368 | ||
1355 | static const struct file_operations sel_perm_ops = { | 1369 | static const struct file_operations sel_perm_ops = { |
1356 | .read = sel_read_perm, | 1370 | .read = sel_read_perm, |
1371 | .llseek = generic_file_llseek, | ||
1357 | }; | 1372 | }; |
1358 | 1373 | ||
1359 | static ssize_t sel_read_policycap(struct file *file, char __user *buf, | 1374 | static ssize_t sel_read_policycap(struct file *file, char __user *buf, |
@@ -1372,6 +1387,7 @@ static ssize_t sel_read_policycap(struct file *file, char __user *buf, | |||
1372 | 1387 | ||
1373 | static const struct file_operations sel_policycap_ops = { | 1388 | static const struct file_operations sel_policycap_ops = { |
1374 | .read = sel_read_policycap, | 1389 | .read = sel_read_policycap, |
1390 | .llseek = generic_file_llseek, | ||
1375 | }; | 1391 | }; |
1376 | 1392 | ||
1377 | static int sel_make_perm_files(char *objclass, int classvalue, | 1393 | static int sel_make_perm_files(char *objclass, int classvalue, |