diff options
| author | Mark Brown <broonie@kernel.org> | 2025-09-12 00:54:56 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2025-09-12 00:54:56 +0100 |
| commit | 9ca01e9226dbbb523b49b4e583e1d522977b4fe6 (patch) | |
| tree | 630b0bbaf8c27dfb24c42570ec6e399700a4e662 /kernel/futex | |
| parent | spi: dt-bindings: samsung: Drop S3C2443 (diff) | |
| parent | MAINTAINERS: Add an entry for Amlogic spifc driver (diff) | |
| download | linux-9ca01e9226dbbb523b49b4e583e1d522977b4fe6.tar.gz linux-9ca01e9226dbbb523b49b4e583e1d522977b4fe6.zip | |
support for Amlogic SPI Flash Controller IP
Merge series from Xianwei Zhao <xianwei.zhao@amlogic.com>:
This Flash Controller is derived by adding an SPI path to the original
raw NAND controller. This controller supports two modes: raw mode and
SPI mode. The raw mode has already been implemented in the community
(drivers/mtd/nand/raw/meson_nand.c).
This submission supports the SPI mode.
Add the drivers and bindings corresponding to the SPI Flash Controller.
Diffstat (limited to 'kernel/futex')
| -rw-r--r-- | kernel/futex/core.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/kernel/futex/core.c b/kernel/futex/core.c index d9bb5567af0c..125804fbb5cb 100644 --- a/kernel/futex/core.c +++ b/kernel/futex/core.c @@ -1722,12 +1722,9 @@ int futex_mm_init(struct mm_struct *mm) RCU_INIT_POINTER(mm->futex_phash, NULL); mm->futex_phash_new = NULL; /* futex-ref */ + mm->futex_ref = NULL; atomic_long_set(&mm->futex_atomic, 0); mm->futex_batches = get_state_synchronize_rcu(); - mm->futex_ref = alloc_percpu(unsigned int); - if (!mm->futex_ref) - return -ENOMEM; - this_cpu_inc(*mm->futex_ref); /* 0 -> 1 */ return 0; } @@ -1801,6 +1798,17 @@ static int futex_hash_allocate(unsigned int hash_slots, unsigned int flags) } } + if (!mm->futex_ref) { + /* + * This will always be allocated by the first thread and + * therefore requires no locking. + */ + mm->futex_ref = alloc_percpu(unsigned int); + if (!mm->futex_ref) + return -ENOMEM; + this_cpu_inc(*mm->futex_ref); /* 0 -> 1 */ + } + fph = kvzalloc(struct_size(fph, queues, hash_slots), GFP_KERNEL_ACCOUNT | __GFP_NOWARN); if (!fph) |
