diff options
author | Kuniyuki Iwashima <kuniyu@amazon.com> | 2022-06-21 10:19:09 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-06-22 12:59:43 +0100 |
commit | f302d180c6d430ea99643b9b2b3407aedaa36703 (patch) | |
tree | 986eaa808366960626098ce15fd901f29716be6c /include | |
parent | 340c3d337119ea177a98338be2e3bc62ee87ac80 (diff) | |
download | linux-stable-f302d180c6d430ea99643b9b2b3407aedaa36703.tar.gz linux-stable-f302d180c6d430ea99643b9b2b3407aedaa36703.tar.bz2 linux-stable-f302d180c6d430ea99643b9b2b3407aedaa36703.zip |
af_unix: Include the whole hash table size in UNIX_HASH_SIZE.
Currently, the size of AF_UNIX hash table is UNIX_HASH_SIZE * 2,
the first half for bind()ed sockets and the second half for unbound
ones. UNIX_HASH_SIZE * 2 is used to define the table and iterate
over it.
In some places, we use ARRAY_SIZE(unix_socket_table) instead of
UNIX_HASH_SIZE * 2. However, we cannot use it anymore because we
will allocate the hash table dynamically. Then, we would have to
add UNIX_HASH_SIZE * 2 in many places, which would be troublesome.
This patch adapts the UNIX_HASH_SIZE definition to include bound
and unbound sockets and defines a new UNIX_HASH_MOD macro to ease
calculations.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/af_unix.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/net/af_unix.h b/include/net/af_unix.h index a7ef624ed726..acb56e463db1 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -16,12 +16,13 @@ void wait_for_unix_gc(void); struct sock *unix_get_socket(struct file *filp); struct sock *unix_peer_get(struct sock *sk); -#define UNIX_HASH_SIZE 256 +#define UNIX_HASH_MOD (256 - 1) +#define UNIX_HASH_SIZE (256 * 2) #define UNIX_HASH_BITS 8 extern unsigned int unix_tot_inflight; -extern spinlock_t unix_table_locks[2 * UNIX_HASH_SIZE]; -extern struct hlist_head unix_socket_table[2 * UNIX_HASH_SIZE]; +extern spinlock_t unix_table_locks[UNIX_HASH_SIZE]; +extern struct hlist_head unix_socket_table[UNIX_HASH_SIZE]; struct unix_address { refcount_t refcnt; |