提交 9b80a184 编写于 作者: A Alexey Dobriyan 提交者: Al Viro

fs/file: more unsigned file descriptors

Propagate unsignedness for grand total of 149 bytes:

	$ ./scripts/bloat-o-meter ../vmlinux-000 ../obj/vmlinux
	add/remove: 0/0 grow/shrink: 0/10 up/down: 0/-149 (-149)
	function                                     old     new   delta
	set_close_on_exec                             99      98      -1
	put_files_struct                             201     200      -1
	get_close_on_exec                             59      58      -1
	do_prlimit                                   498     497      -1
	do_execveat_common.isra                     1662    1661      -1
	__close_fd                                   178     173      -5
	do_dup2                                      219     204     -15
	seq_show                                     685     660     -25
	__alloc_fd                                   384     357     -27
	dup_fd                                       718     646     -72

It mostly comes from converting "unsigned int" to "long" for bit operations.
Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 85e7340f
...@@ -23,12 +23,12 @@ ...@@ -23,12 +23,12 @@
#include <linux/rcupdate.h> #include <linux/rcupdate.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
int sysctl_nr_open __read_mostly = 1024*1024; unsigned int sysctl_nr_open __read_mostly = 1024*1024;
int sysctl_nr_open_min = BITS_PER_LONG; unsigned int sysctl_nr_open_min = BITS_PER_LONG;
/* our min() is unusable in constant expressions ;-/ */ /* our min() is unusable in constant expressions ;-/ */
#define __const_min(x, y) ((x) < (y) ? (x) : (y)) #define __const_min(x, y) ((x) < (y) ? (x) : (y))
int sysctl_nr_open_max = __const_min(INT_MAX, ~(size_t)0/sizeof(void *)) & unsigned int sysctl_nr_open_max =
-BITS_PER_LONG; __const_min(INT_MAX, ~(size_t)0/sizeof(void *)) & -BITS_PER_LONG;
static void *alloc_fdmem(size_t size) static void *alloc_fdmem(size_t size)
{ {
...@@ -163,7 +163,7 @@ static struct fdtable * alloc_fdtable(unsigned int nr) ...@@ -163,7 +163,7 @@ static struct fdtable * alloc_fdtable(unsigned int nr)
* Return <0 error code on error; 1 on successful completion. * Return <0 error code on error; 1 on successful completion.
* The files->file_lock should be held on entry, and will be held on exit. * The files->file_lock should be held on entry, and will be held on exit.
*/ */
static int expand_fdtable(struct files_struct *files, int nr) static int expand_fdtable(struct files_struct *files, unsigned int nr)
__releases(files->file_lock) __releases(files->file_lock)
__acquires(files->file_lock) __acquires(files->file_lock)
{ {
...@@ -208,7 +208,7 @@ static int expand_fdtable(struct files_struct *files, int nr) ...@@ -208,7 +208,7 @@ static int expand_fdtable(struct files_struct *files, int nr)
* expanded and execution may have blocked. * expanded and execution may have blocked.
* The files->file_lock should be held on entry, and will be held on exit. * The files->file_lock should be held on entry, and will be held on exit.
*/ */
static int expand_files(struct files_struct *files, int nr) static int expand_files(struct files_struct *files, unsigned int nr)
__releases(files->file_lock) __releases(files->file_lock)
__acquires(files->file_lock) __acquires(files->file_lock)
{ {
...@@ -243,12 +243,12 @@ static int expand_files(struct files_struct *files, int nr) ...@@ -243,12 +243,12 @@ static int expand_files(struct files_struct *files, int nr)
return expanded; return expanded;
} }
static inline void __set_close_on_exec(int fd, struct fdtable *fdt) static inline void __set_close_on_exec(unsigned int fd, struct fdtable *fdt)
{ {
__set_bit(fd, fdt->close_on_exec); __set_bit(fd, fdt->close_on_exec);
} }
static inline void __clear_close_on_exec(int fd, struct fdtable *fdt) static inline void __clear_close_on_exec(unsigned int fd, struct fdtable *fdt)
{ {
if (test_bit(fd, fdt->close_on_exec)) if (test_bit(fd, fdt->close_on_exec))
__clear_bit(fd, fdt->close_on_exec); __clear_bit(fd, fdt->close_on_exec);
...@@ -268,10 +268,10 @@ static inline void __clear_open_fd(unsigned int fd, struct fdtable *fdt) ...@@ -268,10 +268,10 @@ static inline void __clear_open_fd(unsigned int fd, struct fdtable *fdt)
__clear_bit(fd / BITS_PER_LONG, fdt->full_fds_bits); __clear_bit(fd / BITS_PER_LONG, fdt->full_fds_bits);
} }
static int count_open_files(struct fdtable *fdt) static unsigned int count_open_files(struct fdtable *fdt)
{ {
int size = fdt->max_fds; unsigned int size = fdt->max_fds;
int i; unsigned int i;
/* Find the last open fd */ /* Find the last open fd */
for (i = size / BITS_PER_LONG; i > 0; ) { for (i = size / BITS_PER_LONG; i > 0; ) {
...@@ -291,7 +291,7 @@ struct files_struct *dup_fd(struct files_struct *oldf, int *errorp) ...@@ -291,7 +291,7 @@ struct files_struct *dup_fd(struct files_struct *oldf, int *errorp)
{ {
struct files_struct *newf; struct files_struct *newf;
struct file **old_fds, **new_fds; struct file **old_fds, **new_fds;
int open_files, i; unsigned int open_files, i;
struct fdtable *old_fdt, *new_fdt; struct fdtable *old_fdt, *new_fdt;
*errorp = -ENOMEM; *errorp = -ENOMEM;
...@@ -391,7 +391,7 @@ static struct fdtable *close_files(struct files_struct * files) ...@@ -391,7 +391,7 @@ static struct fdtable *close_files(struct files_struct * files)
* files structure. * files structure.
*/ */
struct fdtable *fdt = rcu_dereference_raw(files->fdt); struct fdtable *fdt = rcu_dereference_raw(files->fdt);
int i, j = 0; unsigned int i, j = 0;
for (;;) { for (;;) {
unsigned long set; unsigned long set;
...@@ -477,11 +477,11 @@ struct files_struct init_files = { ...@@ -477,11 +477,11 @@ struct files_struct init_files = {
.file_lock = __SPIN_LOCK_UNLOCKED(init_files.file_lock), .file_lock = __SPIN_LOCK_UNLOCKED(init_files.file_lock),
}; };
static unsigned long find_next_fd(struct fdtable *fdt, unsigned long start) static unsigned int find_next_fd(struct fdtable *fdt, unsigned int start)
{ {
unsigned long maxfd = fdt->max_fds; unsigned int maxfd = fdt->max_fds;
unsigned long maxbit = maxfd / BITS_PER_LONG; unsigned int maxbit = maxfd / BITS_PER_LONG;
unsigned long bitbit = start / BITS_PER_LONG; unsigned int bitbit = start / BITS_PER_LONG;
bitbit = find_next_zero_bit(fdt->full_fds_bits, maxbit, bitbit) * BITS_PER_LONG; bitbit = find_next_zero_bit(fdt->full_fds_bits, maxbit, bitbit) * BITS_PER_LONG;
if (bitbit > maxfd) if (bitbit > maxfd)
......
...@@ -30,12 +30,12 @@ struct fdtable { ...@@ -30,12 +30,12 @@ struct fdtable {
struct rcu_head rcu; struct rcu_head rcu;
}; };
static inline bool close_on_exec(int fd, const struct fdtable *fdt) static inline bool close_on_exec(unsigned int fd, const struct fdtable *fdt)
{ {
return test_bit(fd, fdt->close_on_exec); return test_bit(fd, fdt->close_on_exec);
} }
static inline bool fd_is_open(int fd, const struct fdtable *fdt) static inline bool fd_is_open(unsigned int fd, const struct fdtable *fdt)
{ {
return test_bit(fd, fdt->open_fds); return test_bit(fd, fdt->open_fds);
} }
...@@ -57,7 +57,7 @@ struct files_struct { ...@@ -57,7 +57,7 @@ struct files_struct {
* written part on a separate cache line in SMP * written part on a separate cache line in SMP
*/ */
spinlock_t file_lock ____cacheline_aligned_in_smp; spinlock_t file_lock ____cacheline_aligned_in_smp;
int next_fd; unsigned int next_fd;
unsigned long close_on_exec_init[1]; unsigned long close_on_exec_init[1];
unsigned long open_fds_init[1]; unsigned long open_fds_init[1];
unsigned long full_fds_bits_init[1]; unsigned long full_fds_bits_init[1];
......
...@@ -63,7 +63,7 @@ extern void __init files_maxfiles_init(void); ...@@ -63,7 +63,7 @@ extern void __init files_maxfiles_init(void);
extern struct files_stat_struct files_stat; extern struct files_stat_struct files_stat;
extern unsigned long get_max_files(void); extern unsigned long get_max_files(void);
extern int sysctl_nr_open; extern unsigned int sysctl_nr_open;
extern struct inodes_stat_t inodes_stat; extern struct inodes_stat_t inodes_stat;
extern int leases_enable, lease_break_time; extern int leases_enable, lease_break_time;
extern int sysctl_protected_symlinks; extern int sysctl_protected_symlinks;
......
...@@ -108,7 +108,7 @@ extern int pid_max_min, pid_max_max; ...@@ -108,7 +108,7 @@ extern int pid_max_min, pid_max_max;
extern int percpu_pagelist_fraction; extern int percpu_pagelist_fraction;
extern int compat_log; extern int compat_log;
extern int latencytop_enabled; extern int latencytop_enabled;
extern int sysctl_nr_open_min, sysctl_nr_open_max; extern unsigned int sysctl_nr_open_min, sysctl_nr_open_max;
#ifndef CONFIG_MMU #ifndef CONFIG_MMU
extern int sysctl_nr_trim_pages; extern int sysctl_nr_trim_pages;
#endif #endif
...@@ -1692,7 +1692,7 @@ static struct ctl_table fs_table[] = { ...@@ -1692,7 +1692,7 @@ static struct ctl_table fs_table[] = {
{ {
.procname = "nr_open", .procname = "nr_open",
.data = &sysctl_nr_open, .data = &sysctl_nr_open,
.maxlen = sizeof(int), .maxlen = sizeof(unsigned int),
.mode = 0644, .mode = 0644,
.proc_handler = proc_dointvec_minmax, .proc_handler = proc_dointvec_minmax,
.extra1 = &sysctl_nr_open_min, .extra1 = &sysctl_nr_open_min,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册