mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
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: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
85e7340f21
commit
9b80a184ea
34
fs/file.c
34
fs/file.c
@ -23,12 +23,12 @@
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
int sysctl_nr_open __read_mostly = 1024*1024;
|
||||
int sysctl_nr_open_min = BITS_PER_LONG;
|
||||
unsigned int sysctl_nr_open __read_mostly = 1024*1024;
|
||||
unsigned int sysctl_nr_open_min = BITS_PER_LONG;
|
||||
/* our min() is unusable in constant expressions ;-/ */
|
||||
#define __const_min(x, y) ((x) < (y) ? (x) : (y))
|
||||
int sysctl_nr_open_max = __const_min(INT_MAX, ~(size_t)0/sizeof(void *)) &
|
||||
-BITS_PER_LONG;
|
||||
unsigned int sysctl_nr_open_max =
|
||||
__const_min(INT_MAX, ~(size_t)0/sizeof(void *)) & -BITS_PER_LONG;
|
||||
|
||||
static void *alloc_fdmem(size_t size)
|
||||
{
|
||||
@ -163,7 +163,7 @@ out:
|
||||
* 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.
|
||||
*/
|
||||
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)
|
||||
__acquires(files->file_lock)
|
||||
{
|
||||
@ -208,7 +208,7 @@ static int expand_fdtable(struct files_struct *files, int nr)
|
||||
* expanded and execution may have blocked.
|
||||
* 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)
|
||||
__acquires(files->file_lock)
|
||||
{
|
||||
@ -243,12 +243,12 @@ repeat:
|
||||
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);
|
||||
}
|
||||
|
||||
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))
|
||||
__clear_bit(fd, fdt->close_on_exec);
|
||||
@ -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);
|
||||
}
|
||||
|
||||
static int count_open_files(struct fdtable *fdt)
|
||||
static unsigned int count_open_files(struct fdtable *fdt)
|
||||
{
|
||||
int size = fdt->max_fds;
|
||||
int i;
|
||||
unsigned int size = fdt->max_fds;
|
||||
unsigned int i;
|
||||
|
||||
/* Find the last open fd */
|
||||
for (i = size / BITS_PER_LONG; i > 0; ) {
|
||||
@ -291,7 +291,7 @@ struct files_struct *dup_fd(struct files_struct *oldf, int *errorp)
|
||||
{
|
||||
struct files_struct *newf;
|
||||
struct file **old_fds, **new_fds;
|
||||
int open_files, i;
|
||||
unsigned int open_files, i;
|
||||
struct fdtable *old_fdt, *new_fdt;
|
||||
|
||||
*errorp = -ENOMEM;
|
||||
@ -391,7 +391,7 @@ static struct fdtable *close_files(struct files_struct * files)
|
||||
* files structure.
|
||||
*/
|
||||
struct fdtable *fdt = rcu_dereference_raw(files->fdt);
|
||||
int i, j = 0;
|
||||
unsigned int i, j = 0;
|
||||
|
||||
for (;;) {
|
||||
unsigned long set;
|
||||
@ -477,11 +477,11 @@ struct files_struct init_files = {
|
||||
.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 long maxbit = maxfd / BITS_PER_LONG;
|
||||
unsigned long bitbit = start / BITS_PER_LONG;
|
||||
unsigned int maxfd = fdt->max_fds;
|
||||
unsigned int maxbit = maxfd / BITS_PER_LONG;
|
||||
unsigned int bitbit = start / BITS_PER_LONG;
|
||||
|
||||
bitbit = find_next_zero_bit(fdt->full_fds_bits, maxbit, bitbit) * BITS_PER_LONG;
|
||||
if (bitbit > maxfd)
|
||||
|
@ -30,12 +30,12 @@ struct fdtable {
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
@ -57,7 +57,7 @@ struct files_struct {
|
||||
* written part on a separate cache line 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 open_fds_init[1];
|
||||
unsigned long full_fds_bits_init[1];
|
||||
|
@ -63,7 +63,7 @@ extern void __init files_maxfiles_init(void);
|
||||
|
||||
extern struct files_stat_struct files_stat;
|
||||
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 int leases_enable, lease_break_time;
|
||||
extern int sysctl_protected_symlinks;
|
||||
|
@ -108,7 +108,7 @@ extern int pid_max_min, pid_max_max;
|
||||
extern int percpu_pagelist_fraction;
|
||||
extern int compat_log;
|
||||
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
|
||||
extern int sysctl_nr_trim_pages;
|
||||
#endif
|
||||
@ -1692,7 +1692,7 @@ static struct ctl_table fs_table[] = {
|
||||
{
|
||||
.procname = "nr_open",
|
||||
.data = &sysctl_nr_open,
|
||||
.maxlen = sizeof(int),
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.extra1 = &sysctl_nr_open_min,
|
||||
|
Loading…
Reference in New Issue
Block a user