1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * Fast Userspace Mutexes (which I call "Futexes!"). 4 * (C) Rusty Russell, IBM 2002 5 * 6 * Generalized futexes, futex requeueing, misc fixes by Ingo Molnar 7 * (C) Copyright 2003 Red Hat Inc, All Rights Reserved 8 * 9 * Removed page pinning, fix privately mapped COW pages and other cleanups 10 * (C) Copyright 2003, 2004 Jamie Lokier 11 * 12 * Robust futex support started by Ingo Molnar 13 * (C) Copyright 2006 Red Hat Inc, All Rights Reserved 14 * Thanks to Thomas Gleixner for suggestions, analysis and fixes. 15 * 16 * PI-futex support started by Ingo Molnar and Thomas Gleixner 17 * Copyright (C) 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> 18 * Copyright (C) 2006 Timesys Corp., Thomas Gleixner <tglx@timesys.com> 19 * 20 * PRIVATE futexes by Eric Dumazet 21 * Copyright (C) 2007 Eric Dumazet <dada1@cosmosbay.com> 22 * 23 * Requeue-PI support by Darren Hart <dvhltc@us.ibm.com> 24 * Copyright (C) IBM Corporation, 2009 25 * Thanks to Thomas Gleixner for conceptual design and careful reviews. 26 * 27 * Thanks to Ben LaHaise for yelling "hashed waitqueues" loudly 28 * enough at me, Linus for the original (flawed) idea, Matthew 29 * Kirkwood for proof-of-concept implementation. 30 * 31 * "The futexes are also cursed." 32 * "But they come in a choice of three flavours!" 33 */ 34 #include <linux/compat.h> 35 #include <linux/debugfs.h> 36 #include <linux/fault-inject.h> 37 #include <linux/gfp.h> 38 #include <linux/jhash.h> 39 #include <linux/memblock.h> 40 #include <linux/mempolicy.h> 41 #include <linux/mmap_lock.h> 42 #include <linux/pagemap.h> 43 #include <linux/plist.h> 44 #include <linux/prctl.h> 45 #include <linux/rseq.h> 46 #include <linux/slab.h> 47 #include <linux/vmalloc.h> 48 #include <linux/kmemleak.h> 49 #include <linux/wait_bit.h> 50 51 #include <vdso/futex.h> 52 53 #include <asm/runtime-const.h> 54 55 #include "futex.h" 56 #include "../locking/rtmutex_common.h" 57 58 static u32 __futex_mask __ro_after_init; 59 static u32 __futex_shift __ro_after_init; 60 static struct futex_hash_bucket **__futex_queues __ro_after_init; 61 62 static __always_inline struct futex_hash_bucket **futex_queues(void) 63 { 64 return runtime_const_ptr(__futex_queues); 65 } 66 67 struct futex_private_hash { 68 int state; 69 unsigned int hash_mask; 70 struct rcu_head rcu; 71 void *mm; 72 bool custom; 73 struct futex_hash_bucket queues[]; 74 }; 75 76 /* 77 * Fault injections for futexes. 78 */ 79 #ifdef CONFIG_FAIL_FUTEX 80 81 static struct { 82 struct fault_attr attr; 83 84 bool ignore_private; 85 } fail_futex = { 86 .attr = FAULT_ATTR_INITIALIZER, 87 .ignore_private = false, 88 }; 89 90 static int __init setup_fail_futex(char *str) 91 { 92 return setup_fault_attr(&fail_futex.attr, str); 93 } 94 __setup("fail_futex=", setup_fail_futex); 95 96 bool should_fail_futex(bool fshared) 97 { 98 if (fail_futex.ignore_private && !fshared) 99 return false; 100 101 return should_fail(&fail_futex.attr, 1); 102 } 103 104 #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS 105 106 static int __init fail_futex_debugfs(void) 107 { 108 umode_t mode = S_IFREG | S_IRUSR | S_IWUSR; 109 struct dentry *dir; 110 111 dir = fault_create_debugfs_attr("fail_futex", NULL, 112 &fail_futex.attr); 113 if (IS_ERR(dir)) 114 return PTR_ERR(dir); 115 116 debugfs_create_bool("ignore-private", mode, dir, 117 &fail_futex.ignore_private); 118 return 0; 119 } 120 121 late_initcall(fail_futex_debugfs); 122 123 #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */ 124 125 #endif /* CONFIG_FAIL_FUTEX */ 126 127 static struct futex_hash_bucket * 128 __futex_hash(union futex_key *key, struct futex_private_hash *fph, struct futex_private_hash **fph_p); 129 130 #ifdef CONFIG_FUTEX_PRIVATE_HASH 131 static bool futex_ref_get(struct futex_private_hash *fph); 132 static bool futex_ref_put(struct futex_private_hash *fph); 133 static bool futex_ref_is_dead(struct futex_private_hash *fph); 134 135 enum { FR_PERCPU = 0, FR_ATOMIC }; 136 137 static bool futex_private_hash_get(struct futex_private_hash *fph) 138 { 139 return futex_ref_get(fph); 140 } 141 142 void futex_private_hash_put(struct futex_private_hash *fph) 143 { 144 struct mm_struct *mm; 145 146 if (!fph) 147 return; 148 149 mm = fph->mm; 150 if (futex_ref_put(fph)) 151 wake_up_var(mm); 152 } 153 154 static struct futex_hash_bucket * 155 __futex_hash_private(union futex_key *key, struct futex_private_hash *fph) 156 { 157 u32 hash; 158 159 hash = jhash2((void *)&key->private.address, sizeof(key->private.address) / 4, 160 key->both.offset); 161 162 return &fph->queues[hash & fph->hash_mask]; 163 } 164 165 static void futex_rehash_private(struct futex_private_hash *old, 166 struct futex_private_hash *new) 167 { 168 struct futex_hash_bucket *hb_old, *hb_new; 169 unsigned int slots = old->hash_mask + 1; 170 unsigned int i; 171 172 for (i = 0; i < slots; i++) { 173 struct futex_q *this, *tmp; 174 175 hb_old = &old->queues[i]; 176 177 spin_lock(&hb_old->lock); 178 plist_for_each_entry_safe(this, tmp, &hb_old->chain, list) { 179 plist_del(&this->list, &hb_old->chain); 180 futex_hb_waiters_dec(hb_old); 181 182 WARN_ON_ONCE(this->lock_ptr != &hb_old->lock); 183 184 hb_new = __futex_hash(&this->key, new, NULL); 185 futex_hb_waiters_inc(hb_new); 186 /* 187 * The new pointer isn't published yet but an already 188 * moved user can be unqueued due to timeout or signal. 189 */ 190 spin_lock_nested(&hb_new->lock, SINGLE_DEPTH_NESTING); 191 plist_add(&this->list, &hb_new->chain); 192 this->lock_ptr = &hb_new->lock; 193 spin_unlock(&hb_new->lock); 194 } 195 spin_unlock(&hb_old->lock); 196 } 197 } 198 199 static bool __futex_pivot_hash(struct mm_struct *mm, struct futex_private_hash *new) 200 { 201 struct futex_mm_phash *mmph = &mm->futex.phash; 202 struct futex_private_hash *fph; 203 204 WARN_ON_ONCE(mmph->hash_new); 205 206 fph = rcu_dereference_protected(mmph->hash, lockdep_is_held(&mmph->lock)); 207 if (fph) { 208 if (!futex_ref_is_dead(fph)) { 209 mmph->hash_new = new; 210 return false; 211 } 212 213 futex_rehash_private(fph, new); 214 } 215 new->state = FR_PERCPU; 216 scoped_guard(rcu) { 217 mmph->batches = get_state_synchronize_rcu(); 218 rcu_assign_pointer(mmph->hash, new); 219 } 220 kvfree_rcu(fph, rcu); 221 return true; 222 } 223 224 static void futex_pivot_hash(struct mm_struct *mm) 225 { 226 scoped_guard(mutex, &mm->futex.phash.lock) { 227 struct futex_private_hash *fph; 228 229 fph = mm->futex.phash.hash_new; 230 if (fph) { 231 mm->futex.phash.hash_new = NULL; 232 __futex_pivot_hash(mm, fph); 233 } 234 } 235 } 236 237 struct futex_private_hash *futex_private_hash(struct mm_struct *mm) 238 { 239 /* 240 * Ideally we don't loop. If there is a replacement in progress 241 * then a new private hash is already prepared and a reference can't be 242 * obtained once the last user dropped it's. 243 * In that case we block on mm_struct::futex_hash_lock and either have 244 * to perform the replacement or wait while someone else is doing the 245 * job. Eitherway, on the second iteration we acquire a reference on the 246 * new private hash or loop again because a new replacement has been 247 * requested. 248 */ 249 again: 250 scoped_guard(rcu) { 251 struct futex_private_hash *fph; 252 253 fph = rcu_dereference(mm->futex.phash.hash); 254 if (!fph) 255 return NULL; 256 257 if (futex_private_hash_get(fph)) 258 return fph; 259 } 260 futex_pivot_hash(mm); 261 goto again; 262 } 263 264 struct futex_bucket_ref futex_hash(union futex_key *key) 265 { 266 again: 267 scoped_guard(rcu) { 268 struct futex_private_hash *fph = NULL; 269 struct futex_hash_bucket *hb; 270 271 hb = __futex_hash(key, NULL, &fph); 272 273 if (!fph || futex_private_hash_get(fph)) 274 return (struct futex_bucket_ref){ .hb = hb, .fph = fph }; 275 } 276 futex_pivot_hash(key->private.mm); 277 goto again; 278 } 279 280 #else /* !CONFIG_FUTEX_PRIVATE_HASH */ 281 282 struct futex_bucket_ref futex_hash(union futex_key *key) 283 { 284 return (struct futex_bucket_ref){ .hb = __futex_hash(key, NULL, NULL), .fph = NULL }; 285 } 286 287 #endif /* CONFIG_FUTEX_PRIVATE_HASH */ 288 289 #ifdef CONFIG_FUTEX_MPOL 290 291 static int __futex_key_to_node(struct mm_struct *mm, unsigned long addr) 292 { 293 struct vm_area_struct *vma = vma_lookup(mm, addr); 294 struct mempolicy *mpol; 295 int node = FUTEX_NO_NODE; 296 297 if (!vma) 298 return FUTEX_NO_NODE; 299 300 mpol = READ_ONCE(vma->vm_policy); 301 if (!mpol) 302 return FUTEX_NO_NODE; 303 304 switch (mpol->mode) { 305 case MPOL_PREFERRED: 306 node = first_node(mpol->nodes); 307 break; 308 case MPOL_PREFERRED_MANY: 309 case MPOL_BIND: 310 if (mpol->home_node != NUMA_NO_NODE) 311 node = mpol->home_node; 312 break; 313 default: 314 break; 315 } 316 317 return node; 318 } 319 320 static int futex_key_to_node_opt(struct mm_struct *mm, unsigned long addr) 321 { 322 int seq, node; 323 324 guard(rcu)(); 325 326 if (!mmap_lock_speculate_try_begin(mm, &seq)) 327 return -EBUSY; 328 329 node = __futex_key_to_node(mm, addr); 330 331 if (mmap_lock_speculate_retry(mm, seq)) 332 return -EAGAIN; 333 334 return node; 335 } 336 337 static int futex_mpol(struct mm_struct *mm, unsigned long addr) 338 { 339 int node; 340 341 node = futex_key_to_node_opt(mm, addr); 342 if (node >= FUTEX_NO_NODE) 343 return node; 344 345 guard(mmap_read_lock)(mm); 346 return __futex_key_to_node(mm, addr); 347 } 348 349 #else /* !CONFIG_FUTEX_MPOL */ 350 351 static int futex_mpol(struct mm_struct *mm, unsigned long addr) 352 { 353 return FUTEX_NO_NODE; 354 } 355 356 #endif /* CONFIG_FUTEX_MPOL */ 357 358 /** 359 * __futex_hash - Return the hash bucket 360 * @key: Pointer to the futex key for which the hash is calculated 361 * @fph: Pointer to private hash if known 362 * @fph_p: Pointer to a private hash pointer; output for the private hash 363 * used when set. 364 * 365 * We hash on the keys returned from get_futex_key (see below) and return the 366 * corresponding hash bucket. 367 * If the FUTEX is PROCESS_PRIVATE then a per-process hash bucket (from the 368 * private hash) is returned if existing. Otherwise a hash bucket from the 369 * global hash is returned. 370 */ 371 static struct futex_hash_bucket * 372 __futex_hash(union futex_key *key, struct futex_private_hash *fph, struct futex_private_hash **fph_p) 373 { 374 int node = key->both.node; 375 u32 hash; 376 377 #ifdef CONFIG_FUTEX_PRIVATE_HASH 378 if (node == FUTEX_NO_NODE && futex_key_is_private(key)) { 379 if (!fph) 380 fph = rcu_dereference(key->private.mm->futex.phash.hash); 381 if (fph && fph->hash_mask) { 382 if (fph_p) 383 *fph_p = fph; 384 return __futex_hash_private(key, fph); 385 } 386 } 387 #endif 388 389 hash = jhash2((u32 *)key, offsetof(typeof(*key), both.offset) / sizeof(u32), 390 key->both.offset); 391 392 if (node == FUTEX_NO_NODE) { 393 /* 394 * In case of !FLAGS_NUMA, use some unused hash bits to pick a 395 * node -- this ensures regular futexes are interleaved across 396 * the nodes and avoids having to allocate multiple 397 * hash-tables. 398 * 399 * NOTE: this isn't perfectly uniform, but it is fast and 400 * handles sparse node masks. 401 */ 402 node = runtime_const_shift_right_32(hash, __futex_shift) % nr_node_ids; 403 if (!node_possible(node)) { 404 node = find_next_bit_wrap(node_possible_map.bits, nr_node_ids, node); 405 } 406 } 407 408 return &futex_queues()[node][runtime_const_mask_32(hash, __futex_mask)]; 409 } 410 411 /** 412 * futex_setup_timer - set up the sleeping hrtimer. 413 * @time: ptr to the given timeout value 414 * @timeout: the hrtimer_sleeper structure to be set up 415 * @flags: futex flags 416 * @range_ns: optional range in ns 417 * 418 * Return: Initialized hrtimer_sleeper structure or NULL if no timeout 419 * value given 420 */ 421 struct hrtimer_sleeper *futex_setup_timer(ktime_t *time, struct hrtimer_sleeper *timeout, 422 int flags, u64 range_ns) 423 { 424 if (!time) 425 return NULL; 426 427 hrtimer_setup_sleeper_on_stack(timeout, 428 (flags & FLAGS_CLOCKRT) ? CLOCK_REALTIME : CLOCK_MONOTONIC, 429 HRTIMER_MODE_ABS); 430 /* 431 * If range_ns is 0, calling hrtimer_set_expires_range_ns() is 432 * effectively the same as calling hrtimer_set_expires(). 433 */ 434 hrtimer_set_expires_range_ns(&timeout->timer, *time, range_ns); 435 436 return timeout; 437 } 438 439 /* 440 * Generate a machine wide unique identifier for this inode. 441 * 442 * This relies on u64 not wrapping in the life-time of the machine; which with 443 * 1ns resolution means almost 585 years. 444 * 445 * This further relies on the fact that a well formed program will not unmap 446 * the file while it has a (shared) futex waiting on it. This mapping will have 447 * a file reference which pins the mount and inode. 448 * 449 * If for some reason an inode gets evicted and read back in again, it will get 450 * a new sequence number and will _NOT_ match, even though it is the exact same 451 * file. 452 * 453 * It is important that futex_match() will never have a false-positive, esp. 454 * for PI futexes that can mess up the state. The above argues that false-negatives 455 * are only possible for malformed programs. 456 */ 457 static u64 get_inode_sequence_number(struct inode *inode) 458 { 459 static atomic64_t i_seq; 460 u64 old; 461 462 /* Does the inode already have a sequence number? */ 463 old = atomic64_read(&inode->i_sequence); 464 if (likely(old)) 465 return old; 466 467 for (;;) { 468 u64 new = atomic64_inc_return(&i_seq); 469 if (WARN_ON_ONCE(!new)) 470 continue; 471 472 old = 0; 473 if (!atomic64_try_cmpxchg_relaxed(&inode->i_sequence, &old, new)) 474 return old; 475 return new; 476 } 477 } 478 479 /** 480 * get_futex_key() - Get parameters which are the keys for a futex 481 * @uaddr: virtual address of the futex 482 * @flags: FLAGS_* 483 * @key: address where result is stored. 484 * @rw: mapping needs to be read/write (values: FUTEX_READ, 485 * FUTEX_WRITE) 486 * 487 * Return: a negative error code or 0 488 * 489 * The key words are stored in @key on success. 490 * 491 * For shared mappings (when @fshared), the key is: 492 * 493 * ( inode->i_sequence, page offset within mapping, offset_within_page ) 494 * 495 * [ also see get_inode_sequence_number() ] 496 * 497 * For private mappings (or when !@fshared), the key is: 498 * 499 * ( current->mm, address, 0 ) 500 * 501 * This allows (cross process, where applicable) identification of the futex 502 * without keeping the page pinned for the duration of the FUTEX_WAIT. 503 * 504 * lock_page() might sleep, the caller should not hold a spinlock. 505 */ 506 int get_futex_key(u32 __user *uaddr, unsigned int flags, union futex_key *key, 507 enum futex_access rw) 508 { 509 unsigned long address = (unsigned long)uaddr; 510 struct mm_struct *mm = current->mm; 511 struct page *page; 512 struct folio *folio; 513 struct address_space *mapping; 514 int node, err, size, ro = 0; 515 bool node_updated = false; 516 bool fshared; 517 518 fshared = flags & FLAGS_SHARED; 519 size = futex_size(flags); 520 if (flags & FLAGS_NUMA) 521 size *= 2; 522 523 /* 524 * The futex address must be "naturally" aligned. 525 */ 526 key->both.offset = address % PAGE_SIZE; 527 if (unlikely((address & (size-1)) != 0)) 528 return -EINVAL; 529 address -= key->both.offset; 530 531 if (unlikely(!access_ok(uaddr, size))) 532 return -EFAULT; 533 534 if (unlikely(should_fail_futex(fshared))) 535 return -EFAULT; 536 537 node = FUTEX_NO_NODE; 538 539 if (flags & FLAGS_NUMA) { 540 u32 __user *naddr = (void *)uaddr + size / 2; 541 542 if (get_user_inline(node, naddr)) 543 return -EFAULT; 544 545 if ((node != FUTEX_NO_NODE) && 546 ((unsigned int)node >= MAX_NUMNODES || !node_possible(node))) 547 return -EINVAL; 548 } 549 550 if (node == FUTEX_NO_NODE && (flags & FLAGS_MPOL)) { 551 node = futex_mpol(mm, address); 552 node_updated = true; 553 } 554 555 if (flags & FLAGS_NUMA) { 556 u32 __user *naddr = (void *)uaddr + size / 2; 557 558 if (node == FUTEX_NO_NODE) { 559 node = numa_node_id(); 560 node_updated = true; 561 } 562 if (node_updated && put_user_inline(node, naddr)) 563 return -EFAULT; 564 } 565 566 key->both.node = node; 567 568 /* 569 * PROCESS_PRIVATE futexes are fast. 570 * As the mm cannot disappear under us and the 'key' only needs 571 * virtual address, we dont even have to find the underlying vma. 572 * Note : We do have to check 'uaddr' is a valid user address, 573 * but access_ok() should be faster than find_vma() 574 */ 575 if (!fshared) { 576 /* 577 * On no-MMU, shared futexes are treated as private, therefore 578 * we must not include the current process in the key. Since 579 * there is only one address space, the address is a unique key 580 * on its own. 581 */ 582 if (IS_ENABLED(CONFIG_MMU)) 583 key->private.mm = mm; 584 else 585 key->private.mm = NULL; 586 587 key->private.address = address; 588 return 0; 589 } 590 591 again: 592 /* Ignore any VERIFY_READ mapping (futex common case) */ 593 if (unlikely(should_fail_futex(true))) 594 return -EFAULT; 595 596 err = get_user_pages_fast(address, 1, FOLL_WRITE, &page); 597 /* 598 * If write access is not required (eg. FUTEX_WAIT), try 599 * and get read-only access. 600 */ 601 if (err == -EFAULT && rw == FUTEX_READ) { 602 err = get_user_pages_fast(address, 1, 0, &page); 603 ro = 1; 604 } 605 if (err < 0) 606 return err; 607 else 608 err = 0; 609 610 /* 611 * The treatment of mapping from this point on is critical. The folio 612 * lock protects many things but in this context the folio lock 613 * stabilizes mapping, prevents inode freeing in the shared 614 * file-backed region case and guards against movement to swap cache. 615 * 616 * Strictly speaking the folio lock is not needed in all cases being 617 * considered here and folio lock forces unnecessarily serialization. 618 * From this point on, mapping will be re-verified if necessary and 619 * folio lock will be acquired only if it is unavoidable 620 * 621 * Mapping checks require the folio so it is looked up now. For 622 * anonymous pages, it does not matter if the folio is split 623 * in the future as the key is based on the address. For 624 * filesystem-backed pages, the precise page is required as the 625 * index of the page determines the key. 626 */ 627 folio = page_folio(page); 628 mapping = READ_ONCE(folio->mapping); 629 630 /* 631 * If folio->mapping is NULL, then it cannot be an anonymous 632 * page; but it might be the ZERO_PAGE or in the gate area or 633 * in a special mapping (all cases which we are happy to fail); 634 * or it may have been a good file page when get_user_pages_fast 635 * found it, but truncated or holepunched or subjected to 636 * invalidate_complete_page2 before we got the folio lock (also 637 * cases which we are happy to fail). And we hold a reference, 638 * so refcount care in invalidate_inode_page's remove_mapping 639 * prevents drop_caches from setting mapping to NULL beneath us. 640 * 641 * The case we do have to guard against is when memory pressure made 642 * shmem_writepage move it from filecache to swapcache beneath us: 643 * an unlikely race, but we do need to retry for folio->mapping. 644 */ 645 if (unlikely(!mapping)) { 646 int shmem_swizzled; 647 648 /* 649 * Folio lock is required to identify which special case above 650 * applies. If this is really a shmem page then the folio lock 651 * will prevent unexpected transitions. 652 */ 653 folio_lock(folio); 654 shmem_swizzled = folio_test_swapcache(folio) || folio->mapping; 655 folio_unlock(folio); 656 folio_put(folio); 657 658 if (shmem_swizzled) 659 goto again; 660 661 return -EFAULT; 662 } 663 664 /* 665 * Private mappings are handled in a simple way. 666 * 667 * If the futex key is stored in anonymous memory, then the associated 668 * object is the mm which is implicitly pinned by the calling process. 669 * 670 * NOTE: When userspace waits on a MAP_SHARED mapping, even if 671 * it's a read-only handle, it's expected that futexes attach to 672 * the object not the particular process. 673 */ 674 if (folio_test_anon(folio)) { 675 /* 676 * A RO anonymous page will never change and thus doesn't make 677 * sense for futex operations. 678 */ 679 if (unlikely(should_fail_futex(true)) || ro) { 680 err = -EFAULT; 681 goto out; 682 } 683 684 key->both.offset |= FUT_OFF_MMSHARED; /* ref taken on mm */ 685 key->private.mm = mm; 686 key->private.address = address; 687 688 } else { 689 struct inode *inode; 690 691 /* 692 * The associated futex object in this case is the inode and 693 * the folio->mapping must be traversed. Ordinarily this should 694 * be stabilised under folio lock but it's not strictly 695 * necessary in this case as we just want to pin the inode, not 696 * update i_pages or anything like that. 697 * 698 * The RCU read lock is taken as the inode is finally freed 699 * under RCU. If the mapping still matches expectations then the 700 * mapping->host can be safely accessed as being a valid inode. 701 */ 702 rcu_read_lock(); 703 704 if (READ_ONCE(folio->mapping) != mapping) { 705 rcu_read_unlock(); 706 folio_put(folio); 707 708 goto again; 709 } 710 711 inode = READ_ONCE(mapping->host); 712 if (!inode) { 713 rcu_read_unlock(); 714 folio_put(folio); 715 716 goto again; 717 } 718 719 key->both.offset |= FUT_OFF_INODE; /* inode-based key */ 720 key->shared.i_seq = get_inode_sequence_number(inode); 721 key->shared.pgoff = page_pgoff(folio, page); 722 rcu_read_unlock(); 723 } 724 725 out: 726 folio_put(folio); 727 return err; 728 } 729 730 /** 731 * fault_in_user_writeable() - Fault in user address and verify RW access 732 * @uaddr: pointer to faulting user space address 733 * 734 * Slow path to fixup the fault we just took in the atomic write 735 * access to @uaddr. 736 * 737 * We have no generic implementation of a non-destructive write to the 738 * user address. We know that we faulted in the atomic pagefault 739 * disabled section so we can as well avoid the #PF overhead by 740 * calling get_user_pages() right away. 741 */ 742 int fault_in_user_writeable(u32 __user *uaddr) 743 { 744 struct mm_struct *mm = current->mm; 745 int ret; 746 747 mmap_read_lock(mm); 748 ret = fixup_user_fault(mm, (unsigned long)uaddr, 749 FAULT_FLAG_WRITE, NULL); 750 mmap_read_unlock(mm); 751 752 return ret < 0 ? ret : 0; 753 } 754 755 /** 756 * futex_top_waiter() - Return the highest priority waiter on a futex 757 * @hb: the hash bucket the futex_q's reside in 758 * @key: the futex key (to distinguish it from other futex futex_q's) 759 * 760 * Must be called with the hb lock held. 761 */ 762 struct futex_q *futex_top_waiter(struct futex_hash_bucket *hb, union futex_key *key) 763 { 764 struct futex_q *this; 765 766 plist_for_each_entry(this, &hb->chain, list) { 767 if (futex_match(&this->key, key)) 768 return this; 769 } 770 return NULL; 771 } 772 773 /** 774 * wait_for_owner_exiting - Block until the owner has exited 775 * @ret: owner's current futex lock status 776 * @exiting: Pointer to the exiting task 777 * 778 * Caller must hold a refcount on @exiting. 779 */ 780 void wait_for_owner_exiting(int ret, struct task_struct *exiting) 781 { 782 if (ret != -EBUSY) { 783 WARN_ON_ONCE(exiting); 784 return; 785 } 786 787 if (WARN_ON_ONCE(ret == -EBUSY && !exiting)) 788 return; 789 790 mutex_lock(&exiting->futex.exit_mutex); 791 /* 792 * No point in doing state checking here. If the waiter got here 793 * while the task was in exec()->exec_futex_release() then it can 794 * have any FUTEX_STATE_* value when the waiter has acquired the 795 * mutex. OK, if running, EXITING or DEAD if it reached exit() 796 * already. Highly unlikely and not a problem. Just one more round 797 * through the futex maze. 798 */ 799 mutex_unlock(&exiting->futex.exit_mutex); 800 801 put_task_struct(exiting); 802 } 803 804 /** 805 * __futex_unqueue() - Remove the futex_q from its futex_hash_bucket 806 * @q: The futex_q to unqueue 807 * 808 * The q->lock_ptr must not be NULL and must be held by the caller. 809 */ 810 void __futex_unqueue(struct futex_q *q) 811 { 812 struct futex_hash_bucket *hb; 813 814 if (WARN_ON_SMP(!q->lock_ptr) || WARN_ON(plist_node_empty(&q->list))) 815 return; 816 lockdep_assert_held(q->lock_ptr); 817 818 hb = container_of(q->lock_ptr, struct futex_hash_bucket, lock); 819 plist_del(&q->list, &hb->chain); 820 futex_hb_waiters_dec(hb); 821 } 822 823 /* The key must be already stored in q->key. */ 824 void futex_q_lock(struct futex_q *q, struct futex_hash_bucket *hb) 825 { 826 /* 827 * Increment the counter before taking the lock so that 828 * a potential waker won't miss a to-be-slept task that is 829 * waiting for the spinlock. This is safe as all futex_q_lock() 830 * users end up calling futex_queue(). Similarly, for housekeeping, 831 * decrement the counter at futex_q_unlock() when some error has 832 * occurred and we don't end up adding the task to the list. 833 */ 834 futex_hb_waiters_inc(hb); /* implies smp_mb(); (A) */ 835 836 q->lock_ptr = &hb->lock; 837 838 spin_lock(&hb->lock); 839 __acquire(q->lock_ptr); 840 } 841 842 void futex_q_unlock(struct futex_hash_bucket *hb) 843 { 844 futex_hb_waiters_dec(hb); 845 spin_unlock(&hb->lock); 846 } 847 848 void __futex_queue(struct futex_q *q, struct futex_hash_bucket *hb, 849 struct task_struct *task) 850 { 851 int prio; 852 853 /* 854 * The priority used to register this element is 855 * - either the real thread-priority for the real-time threads 856 * (i.e. threads with a priority lower than MAX_RT_PRIO) 857 * - or MAX_RT_PRIO for non-RT threads. 858 * Thus, all RT-threads are woken first in priority order, and 859 * the others are woken last, in FIFO order. 860 */ 861 prio = min(current->normal_prio, MAX_RT_PRIO); 862 863 plist_node_init(&q->list, prio); 864 plist_add(&q->list, &hb->chain); 865 q->task = task; 866 } 867 868 /** 869 * futex_unqueue() - Remove the futex_q from its futex_hash_bucket 870 * @q: The futex_q to unqueue 871 * 872 * The q->lock_ptr must not be held by the caller. A call to futex_unqueue() must 873 * be paired with exactly one earlier call to futex_queue(). 874 * 875 * Return: 876 * - 1 - if the futex_q was still queued (and we removed unqueued it); 877 * - 0 - if the futex_q was already removed by the waking thread 878 */ 879 int futex_unqueue(struct futex_q *q) 880 { 881 spinlock_t *lock_ptr; 882 int ret = 0; 883 884 /* RCU so lock_ptr is not going away during locking. */ 885 guard(rcu)(); 886 /* In the common case we don't take the spinlock, which is nice. */ 887 retry: 888 /* 889 * q->lock_ptr can change between this read and the following spin_lock. 890 * Use READ_ONCE to forbid the compiler from reloading q->lock_ptr and 891 * optimizing lock_ptr out of the logic below. 892 */ 893 lock_ptr = READ_ONCE(q->lock_ptr); 894 if (lock_ptr != NULL) { 895 spin_lock(lock_ptr); 896 /* 897 * q->lock_ptr can change between reading it and 898 * spin_lock(), causing us to take the wrong lock. This 899 * corrects the race condition. 900 * 901 * Reasoning goes like this: if we have the wrong lock, 902 * q->lock_ptr must have changed (maybe several times) 903 * between reading it and the spin_lock(). It can 904 * change again after the spin_lock() but only if it was 905 * already changed before the spin_lock(). It cannot, 906 * however, change back to the original value. Therefore 907 * we can detect whether we acquired the correct lock. 908 */ 909 if (unlikely(lock_ptr != q->lock_ptr)) { 910 spin_unlock(lock_ptr); 911 goto retry; 912 } 913 __futex_unqueue(q); 914 915 BUG_ON(q->pi_state); 916 917 spin_unlock(lock_ptr); 918 ret = 1; 919 } 920 921 return ret; 922 } 923 924 void futex_q_lockptr_lock(struct futex_q *q) 925 { 926 spinlock_t *lock_ptr; 927 928 /* 929 * See futex_unqueue() why lock_ptr can change. 930 */ 931 guard(rcu)(); 932 retry: 933 lock_ptr = READ_ONCE(q->lock_ptr); 934 spin_lock(lock_ptr); 935 936 if (unlikely(lock_ptr != q->lock_ptr)) { 937 spin_unlock(lock_ptr); 938 goto retry; 939 } 940 } 941 942 /* 943 * PI futexes can not be requeued and must remove themselves from the hash 944 * bucket. The hash bucket lock (i.e. lock_ptr) is held. 945 */ 946 void futex_unqueue_pi(struct futex_q *q) 947 { 948 /* 949 * If the lock was not acquired (due to timeout or signal) then the 950 * rt_waiter is removed before futex_q is. If this is observed by 951 * an unlocker after dropping the rtmutex wait lock and before 952 * acquiring the hash bucket lock, then the unlocker dequeues the 953 * futex_q from the hash bucket list to guarantee consistent state 954 * vs. userspace. Therefore the dequeue here must be conditional. 955 */ 956 if (!plist_node_empty(&q->list)) 957 __futex_unqueue(q); 958 959 BUG_ON(!q->pi_state); 960 put_pi_state(q->pi_state); 961 q->pi_state = NULL; 962 } 963 964 /* Constants for the pending_op argument of handle_futex_death */ 965 #define HANDLE_DEATH_PENDING true 966 #define HANDLE_DEATH_LIST false 967 968 /* 969 * Process a futex-list entry, check whether it's owned by the 970 * dying task, and do notification if so: 971 */ 972 static int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, 973 unsigned int mod, bool pending_op) 974 { 975 bool pi = !!(mod & FUTEX_ROBUST_MOD_PI); 976 u32 uval, nval, mval; 977 pid_t owner; 978 int err; 979 980 /* Futex address must be 32bit aligned */ 981 if ((((unsigned long)uaddr) % sizeof(*uaddr)) != 0) 982 return -1; 983 984 retry: 985 if (get_user(uval, uaddr)) 986 return -1; 987 988 /* 989 * Special case for regular (non PI) futexes. Ordinarily, we do 990 * not perform any processing here unless the current thread was 991 * the owner of the futex (by the TID check below). 992 * 993 * However, the unlock path has three race scenarios: 994 * 995 * 1. The unlock path releases the user space futex value and 996 * before it can execute the futex() syscall to wake up 997 * waiters it is killed. 998 * 999 * 2. A woken up waiter is killed before it can acquire the 1000 * futex in user space. 1001 * 1002 * 3. A woken up waiter is killed in user space after another 1003 * thread has acquired the futex, but before it can set 1004 * FUTEX_WAITERS. 1005 * 1006 * Note that, if userspace uses the FUTEX_ROBUST_UNLOCK flag, we 1007 * will not see case 1 here. 1008 * 1009 * In the second and third case, the wake up notification could 1010 * be generated from any of: 1011 * 1012 * i. An ordinary futex wakeup after unlock (with or 1013 * without FUTEX_ROBUST_UNLOCK) 1014 * ii. A robust wakeup from another thread's death 1015 * iii. A previous round through this special case 1016 * 1017 * As a result, the futex world will be in one of four states: 1018 * 1019 * A. The futex word is 0 (unlocked) 1020 * B. The futex word is owned by another thread 1021 * (FUTEX_WAITERS is not set) 1022 * C. The futex word is owned by another thread 1023 * (FUTEX_WAITERS set) 1024 * D. The futex's owner died and OWNER_DIED is set 1025 * (the owner part of the word is 0) 1026 * 1027 * The key issue is that the kernel usually (at least from 1028 * sources ii. and iii. or when so requested by userspace from 1029 * source i.) only ever wakes *one* waiter at a time. If this 1030 * waiter dies before acquiring the futex (or setting the 1031 * FUTEX_WAITERS bit), the kernel *must* still wake the next 1032 * waiter down the line to uphold the futex invariants and 1033 * avoid lost wakeups. Note we do not need to handle state C, 1034 * as it does not matter to us whether *we* successfully set 1035 * the bit or a third thread did so in the meantime. 1036 * 1037 * Therefore, in these cases we must issue an additional 1038 * futex_wake(). Note however that we *must not* set OWNER_DIED 1039 * here. Our thread is *not* the owner of the futex. 1040 * 1041 * Thus to summarize, the conditions for needing the additional 1042 * futex_wake() are: 1043 * 1044 * 1) @pending_op == true (the thread has not finished the 1045 * mutex operation) 1046 * 2) The futex word is in one of the states A, B or D 1047 * 3) Regular futex: @pi == false 1048 * 1049 * Note in particular that in all of the states A-D the owner 1050 * portion of the futex word differs from our thread's TID 1051 * (unless the actual owner has the same TID in another PID 1052 * namespace, but we cannot currently distinguish that 1053 * scenario), so this can be a special-case wakeup in the bail 1054 * path of the ordinary TID check. 1055 */ 1056 owner = uval & FUTEX_TID_MASK; 1057 1058 if (owner != task_pid_vnr(curr)) { 1059 if (pending_op && !pi && (!owner || !(uval & FUTEX_WAITERS))) { 1060 futex_wake(uaddr, FLAGS_SIZE_32 | FLAGS_SHARED, NULL, 1, 1061 FUTEX_BITSET_MATCH_ANY); 1062 } 1063 return 0; 1064 } 1065 1066 /* 1067 * Ok, this dying thread is truly holding a futex 1068 * of interest. Set the OWNER_DIED bit atomically 1069 * via cmpxchg, and if the value had FUTEX_WAITERS 1070 * set, wake up a waiter (if any). (We have to do a 1071 * futex_wake() even if OWNER_DIED is already set - 1072 * to handle the rare but possible case of recursive 1073 * thread-death.) The rest of the cleanup is done in 1074 * userspace. 1075 */ 1076 mval = (uval & FUTEX_WAITERS) | FUTEX_OWNER_DIED; 1077 1078 /* 1079 * We are not holding a lock here, but we want to have 1080 * the pagefault_disable/enable() protection because 1081 * we want to handle the fault gracefully. If the 1082 * access fails we try to fault in the futex with R/W 1083 * verification via get_user_pages. get_user() above 1084 * does not guarantee R/W access. If that fails we 1085 * give up and leave the futex locked. 1086 */ 1087 if ((err = futex_cmpxchg_value_locked(&nval, uaddr, uval, mval))) { 1088 switch (err) { 1089 case -EFAULT: 1090 if (fault_in_user_writeable(uaddr)) 1091 return -1; 1092 goto retry; 1093 1094 case -EAGAIN: 1095 cond_resched(); 1096 goto retry; 1097 1098 default: 1099 WARN_ON_ONCE(1); 1100 return err; 1101 } 1102 } 1103 1104 if (nval != uval) 1105 goto retry; 1106 1107 /* 1108 * Wake robust non-PI futexes here. The wakeup of 1109 * PI futexes happens in exit_pi_state(): 1110 */ 1111 if (!pi && (uval & FUTEX_WAITERS)) { 1112 futex_wake(uaddr, FLAGS_SIZE_32 | FLAGS_SHARED, NULL, 1, 1113 FUTEX_BITSET_MATCH_ANY); 1114 } 1115 1116 return 0; 1117 } 1118 1119 /* 1120 * Fetch a robust-list pointer. Bit 0 signals PI futexes: 1121 */ 1122 static inline int fetch_robust_entry(struct robust_list __user **entry, 1123 struct robust_list __user * __user *head, 1124 unsigned int *mod) 1125 { 1126 unsigned long uentry; 1127 1128 if (get_user(uentry, (unsigned long __user *)head)) 1129 return -EFAULT; 1130 1131 *entry = (void __user *)(uentry & ~FUTEX_ROBUST_MOD_MASK); 1132 *mod = uentry & FUTEX_ROBUST_MOD_MASK; 1133 1134 return 0; 1135 } 1136 1137 /* 1138 * Walk curr->futex.robust_list (very carefully, it's a userspace list!) 1139 * and mark any locks found there dead, and notify any waiters. 1140 * 1141 * We silently return on any sign of list-walking problem. 1142 */ 1143 static void exit_robust_list(struct task_struct *curr) 1144 { 1145 struct robust_list_head __user *head = curr->futex.robust_list; 1146 unsigned int limit = ROBUST_LIST_LIMIT, cur_mod, next_mod, pend_mod; 1147 struct robust_list __user *entry, *next_entry, *pending; 1148 unsigned long futex_offset; 1149 int rc; 1150 1151 /* 1152 * Fetch the list head (which was registered earlier, via 1153 * sys_set_robust_list()): 1154 */ 1155 if (fetch_robust_entry(&entry, &head->list.next, &cur_mod)) 1156 return; 1157 /* 1158 * Fetch the relative futex offset: 1159 */ 1160 if (get_user(futex_offset, &head->futex_offset)) 1161 return; 1162 /* 1163 * Fetch any possibly pending lock-add first, and handle it 1164 * if it exists: 1165 */ 1166 if (fetch_robust_entry(&pending, &head->list_op_pending, &pend_mod)) 1167 return; 1168 1169 next_entry = NULL; /* avoid warning with gcc */ 1170 while (entry != &head->list) { 1171 /* 1172 * Fetch the next entry in the list before calling 1173 * handle_futex_death: 1174 */ 1175 rc = fetch_robust_entry(&next_entry, &entry->next, &next_mod); 1176 /* 1177 * A pending lock might already be on the list, so 1178 * don't process it twice: 1179 */ 1180 if (entry != pending) { 1181 if (handle_futex_death((void __user *)entry + futex_offset, 1182 curr, cur_mod, HANDLE_DEATH_LIST)) 1183 return; 1184 } 1185 if (rc) 1186 return; 1187 entry = next_entry; 1188 cur_mod = next_mod; 1189 /* 1190 * Avoid excessively long or circular lists: 1191 */ 1192 if (!--limit) 1193 break; 1194 1195 cond_resched(); 1196 } 1197 1198 if (pending) { 1199 handle_futex_death((void __user *)pending + futex_offset, 1200 curr, pend_mod, HANDLE_DEATH_PENDING); 1201 } 1202 } 1203 1204 static bool robust_list_clear_pending(unsigned long __user *pop) 1205 { 1206 struct robust_list_head __user *head = current->futex.robust_list; 1207 1208 if (!put_user(0UL, pop)) 1209 return true; 1210 1211 /* 1212 * Just give up. The robust list head is usually part of TLS, so the 1213 * chance that this gets resolved is close to zero. 1214 * 1215 * If @pop_addr is the robust_list_head::list_op_pending pointer then 1216 * clear the robust list head pointer to prevent further damage when the 1217 * task exits. Better a few stale futexes than corrupted memory. But 1218 * that's mostly an academic exercise. 1219 */ 1220 if (pop == (unsigned long __user *)&head->list_op_pending) 1221 current->futex.robust_list = NULL; 1222 return false; 1223 } 1224 1225 #ifdef CONFIG_COMPAT 1226 static void __user *futex_uaddr(struct robust_list __user *entry, 1227 compat_long_t futex_offset) 1228 { 1229 compat_uptr_t base = ptr_to_compat(entry); 1230 void __user *uaddr = compat_ptr(base + futex_offset); 1231 1232 return uaddr; 1233 } 1234 1235 /* 1236 * Fetch a robust-list pointer. Bit 0 signals PI futexes: 1237 */ 1238 static inline int 1239 compat_fetch_robust_entry(compat_uptr_t *uentry, struct robust_list __user **entry, 1240 compat_uptr_t __user *head, unsigned int *pflags) 1241 { 1242 if (get_user(*uentry, head)) 1243 return -EFAULT; 1244 1245 *entry = compat_ptr((*uentry) & ~FUTEX_ROBUST_MOD_MASK); 1246 *pflags = (unsigned int)(*uentry) & FUTEX_ROBUST_MOD_MASK; 1247 1248 return 0; 1249 } 1250 1251 /* 1252 * Walk curr->futex.robust_list (very carefully, it's a userspace list!) 1253 * and mark any locks found there dead, and notify any waiters. 1254 * 1255 * We silently return on any sign of list-walking problem. 1256 */ 1257 static void compat_exit_robust_list(struct task_struct *curr) 1258 { 1259 struct compat_robust_list_head __user *head = current->futex.compat_robust_list; 1260 unsigned int limit = ROBUST_LIST_LIMIT, cur_mod, next_mod, pend_mod; 1261 struct robust_list __user *entry, *next_entry, *pending; 1262 compat_uptr_t uentry, next_uentry, upending; 1263 compat_long_t futex_offset; 1264 int rc; 1265 1266 /* 1267 * Fetch the list head (which was registered earlier, via 1268 * sys_set_robust_list()): 1269 */ 1270 if (compat_fetch_robust_entry(&uentry, &entry, &head->list.next, &cur_mod)) 1271 return; 1272 /* 1273 * Fetch the relative futex offset: 1274 */ 1275 if (get_user(futex_offset, &head->futex_offset)) 1276 return; 1277 /* 1278 * Fetch any possibly pending lock-add first, and handle it 1279 * if it exists: 1280 */ 1281 if (compat_fetch_robust_entry(&upending, &pending, &head->list_op_pending, &pend_mod)) 1282 return; 1283 1284 next_entry = NULL; /* avoid warning with gcc */ 1285 while (entry != (struct robust_list __user *) &head->list) { 1286 /* 1287 * Fetch the next entry in the list before calling 1288 * handle_futex_death: 1289 */ 1290 rc = compat_fetch_robust_entry(&next_uentry, &next_entry, 1291 (compat_uptr_t __user *)&entry->next, &next_mod); 1292 /* 1293 * A pending lock might already be on the list, so 1294 * dont process it twice: 1295 */ 1296 if (entry != pending) { 1297 void __user *uaddr = futex_uaddr(entry, futex_offset); 1298 1299 if (handle_futex_death(uaddr, curr, cur_mod, HANDLE_DEATH_LIST)) 1300 return; 1301 } 1302 if (rc) 1303 return; 1304 uentry = next_uentry; 1305 entry = next_entry; 1306 cur_mod = next_mod; 1307 /* 1308 * Avoid excessively long or circular lists: 1309 */ 1310 if (!--limit) 1311 break; 1312 1313 cond_resched(); 1314 } 1315 if (pending) { 1316 void __user *uaddr = futex_uaddr(pending, futex_offset); 1317 1318 handle_futex_death(uaddr, curr, pend_mod, HANDLE_DEATH_PENDING); 1319 } 1320 } 1321 1322 static bool compat_robust_list_clear_pending(u32 __user *pop) 1323 { 1324 struct compat_robust_list_head __user *head = current->futex.compat_robust_list; 1325 1326 if (!put_user(0U, pop)) 1327 return true; 1328 1329 /* See comment in robust_list_clear_pending(). */ 1330 if (pop == &head->list_op_pending) 1331 current->futex.compat_robust_list = NULL; 1332 return false; 1333 } 1334 #else 1335 static bool compat_robust_list_clear_pending(u32 __user *pop_addr) { return false; } 1336 #endif 1337 1338 #ifdef CONFIG_FUTEX_PI 1339 1340 /* 1341 * This task is holding PI mutexes at exit time => bad. 1342 * Kernel cleans up PI-state, but userspace is likely hosed. 1343 * (Robust-futex cleanup is separate and might save the day for userspace.) 1344 */ 1345 static void exit_pi_state_list(struct task_struct *curr) 1346 { 1347 struct list_head *next, *head = &curr->futex.pi_state_list; 1348 struct futex_pi_state *pi_state; 1349 union futex_key key = FUTEX_KEY_INIT; 1350 1351 /* 1352 * The mutex mm_struct::futex_hash_lock might be acquired. 1353 */ 1354 might_sleep(); 1355 /* 1356 * Ensure the hash remains stable (no resize) during the while loop 1357 * below. The hb pointer is acquired under the pi_lock so we can't block 1358 * on the mutex. 1359 */ 1360 WARN_ON(curr != current); 1361 guard(private_hash)(current->mm); 1362 /* 1363 * We are a ZOMBIE and nobody can enqueue itself on 1364 * pi_state_list anymore, but we have to be careful 1365 * versus waiters unqueueing themselves: 1366 */ 1367 raw_spin_lock_irq(&curr->pi_lock); 1368 while (!list_empty(head)) { 1369 next = head->next; 1370 pi_state = list_entry(next, struct futex_pi_state, list); 1371 key = pi_state->key; 1372 if (1) { 1373 CLASS(hbr, hbr)(&key); 1374 auto hb = hbr.hb; 1375 1376 /* 1377 * We can race against put_pi_state() removing itself from the 1378 * list (a waiter going away). put_pi_state() will first 1379 * decrement the reference count and then modify the list, so 1380 * its possible to see the list entry but fail this reference 1381 * acquire. 1382 * 1383 * In that case; drop the locks to let put_pi_state() make 1384 * progress and retry the loop. 1385 */ 1386 if (!refcount_inc_not_zero(&pi_state->refcount)) { 1387 raw_spin_unlock_irq(&curr->pi_lock); 1388 cpu_relax(); 1389 raw_spin_lock_irq(&curr->pi_lock); 1390 continue; 1391 } 1392 raw_spin_unlock_irq(&curr->pi_lock); 1393 1394 spin_lock(&hb->lock); 1395 raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); 1396 raw_spin_lock(&curr->pi_lock); 1397 /* 1398 * We dropped the pi-lock, so re-check whether this 1399 * task still owns the PI-state: 1400 */ 1401 if (head->next != next) { 1402 /* retain curr->pi_lock for the loop invariant */ 1403 raw_spin_unlock(&pi_state->pi_mutex.wait_lock); 1404 spin_unlock(&hb->lock); 1405 put_pi_state(pi_state); 1406 continue; 1407 } 1408 1409 WARN_ON(pi_state->owner != curr); 1410 WARN_ON(list_empty(&pi_state->list)); 1411 list_del_init(&pi_state->list); 1412 pi_state->owner = NULL; 1413 1414 raw_spin_unlock(&curr->pi_lock); 1415 raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); 1416 spin_unlock(&hb->lock); 1417 } 1418 1419 rt_mutex_futex_unlock(&pi_state->pi_mutex); 1420 put_pi_state(pi_state); 1421 1422 raw_spin_lock_irq(&curr->pi_lock); 1423 } 1424 raw_spin_unlock_irq(&curr->pi_lock); 1425 } 1426 #else 1427 static inline void exit_pi_state_list(struct task_struct *curr) { } 1428 #endif 1429 1430 bool futex_robust_list_clear_pending(void __user *pop, unsigned int flags) 1431 { 1432 bool size32bit = !!(flags & FLAGS_ROBUST_LIST32); 1433 1434 if (!IS_ENABLED(CONFIG_64BIT) && !size32bit) 1435 return false; 1436 1437 if (IS_ENABLED(CONFIG_64BIT) && size32bit) 1438 return compat_robust_list_clear_pending(pop); 1439 1440 return robust_list_clear_pending(pop); 1441 } 1442 1443 #ifdef CONFIG_FUTEX_ROBUST_UNLOCK 1444 void __futex_fixup_robust_unlock(struct pt_regs *regs, struct futex_unlock_cs_range *csr) 1445 { 1446 /* 1447 * arch_futex_robust_unlock_get_pop() returns the list pending op pointer from 1448 * @regs if the try_cmpxchg() succeeded. 1449 */ 1450 void __user *pop = arch_futex_robust_unlock_get_pop(regs); 1451 1452 if (!pop) 1453 return; 1454 1455 futex_robust_list_clear_pending(pop, csr->pop_size32 ? FLAGS_ROBUST_LIST32 : 0); 1456 } 1457 #endif /* CONFIG_FUTEX_ROBUST_UNLOCK */ 1458 1459 static void futex_cleanup(struct task_struct *tsk) 1460 { 1461 if (unlikely(tsk->futex.robust_list)) { 1462 exit_robust_list(tsk); 1463 tsk->futex.robust_list = NULL; 1464 } 1465 1466 #ifdef CONFIG_COMPAT 1467 if (unlikely(tsk->futex.compat_robust_list)) { 1468 compat_exit_robust_list(tsk); 1469 tsk->futex.compat_robust_list = NULL; 1470 } 1471 #endif 1472 1473 if (unlikely(!list_empty(&tsk->futex.pi_state_list))) 1474 exit_pi_state_list(tsk); 1475 } 1476 1477 /** 1478 * futex_exit_recursive - Set the tasks futex state to FUTEX_STATE_DEAD 1479 * @tsk: task to set the state on 1480 * 1481 * Set the futex exit state of the task lockless. The futex waiter code 1482 * observes that state when a task is exiting and loops until the task has 1483 * actually finished the futex cleanup. The worst case for this is that the 1484 * waiter runs through the wait loop until the state becomes visible. 1485 * 1486 * This is called from the recursive fault handling path in make_task_dead(). 1487 * 1488 * This is best effort. Either the futex exit code has run already or 1489 * not. If the OWNER_DIED bit has been set on the futex then the waiter can 1490 * take it over. If not, the problem is pushed back to user space. If the 1491 * futex exit code did not run yet, then an already queued waiter might 1492 * block forever, but there is nothing which can be done about that. 1493 */ 1494 void futex_exit_recursive(struct task_struct *tsk) 1495 { 1496 /* If the state is FUTEX_STATE_EXITING then futex_exit_mutex is held */ 1497 if (tsk->futex.state == FUTEX_STATE_EXITING) { 1498 __assume_ctx_lock(&tsk->futex.exit_mutex); 1499 mutex_unlock(&tsk->futex.exit_mutex); 1500 } 1501 tsk->futex.state = FUTEX_STATE_DEAD; 1502 } 1503 1504 static void futex_cleanup_begin(struct task_struct *tsk) 1505 __acquires(&tsk->futex.exit_mutex) 1506 { 1507 /* 1508 * Prevent various race issues against a concurrent incoming waiter 1509 * including live locks by forcing the waiter to block on 1510 * tsk->futex.exit_mutex when it observes FUTEX_STATE_EXITING in 1511 * attach_to_pi_owner(). 1512 */ 1513 mutex_lock(&tsk->futex.exit_mutex); 1514 1515 /* 1516 * Switch the state to FUTEX_STATE_EXITING under tsk->pi_lock. 1517 * 1518 * This ensures that all subsequent checks of tsk->futex_state in 1519 * attach_to_pi_owner() must observe FUTEX_STATE_EXITING with 1520 * tsk->pi_lock held. 1521 * 1522 * It guarantees also that a pi_state which was queued right before 1523 * the state change under tsk->pi_lock by a concurrent waiter must 1524 * be observed in exit_pi_state_list(). 1525 */ 1526 raw_spin_lock_irq(&tsk->pi_lock); 1527 tsk->futex.state = FUTEX_STATE_EXITING; 1528 raw_spin_unlock_irq(&tsk->pi_lock); 1529 } 1530 1531 static void futex_cleanup_end(struct task_struct *tsk) 1532 __releases(&tsk->futex.exit_mutex) 1533 { 1534 scoped_guard(raw_spinlock_irq, &tsk->pi_lock) 1535 tsk->futex.state = FUTEX_STATE_DEAD; 1536 1537 /* 1538 * Drop the exit protection. This unblocks waiters which observed 1539 * FUTEX_STATE_EXITING to reevaluate the state. 1540 */ 1541 mutex_unlock(&tsk->futex.exit_mutex); 1542 } 1543 1544 /* 1545 * Invoked from mm_exit_exec_release() to cleanup the robust lists and pi state 1546 * of the outgoing task. 1547 * 1548 * exec() makes it interesting for futexes because the TID of the task stays the 1549 * same, but from a futex perspective the task has to be treated like an exiting 1550 * task. This is especially important for the sanity check for private futexes 1551 * in attach_to_pi_owner() which compares the owner's mm with the waiter's mm. 1552 * 1553 * That check would give the wrong answer if futex_cleanup_end() would 1554 * set the state to FUTEX_STATE_OK as long as the task still has the old 1555 * mm. 1556 * 1557 * After the task has switched to the new mm it sets it to 1558 * FUTEX_STATE_OK again in futex_exec_done(). 1559 */ 1560 void futex_exit_exec_release(struct task_struct *tsk) 1561 { 1562 futex_cleanup_begin(tsk); 1563 futex_cleanup(tsk); 1564 futex_cleanup_end(tsk); 1565 } 1566 1567 /* 1568 * exec() has switched to the new mm. Futex operations are safe again. 1569 */ 1570 void futex_exec_done(struct task_struct *tsk) 1571 { 1572 /* 1573 * This store does not have to take tsk::futex::exit_mutex because the 1574 * phase where waiters block on it during state FUTEX_STATE_EXITING has 1575 * been finished when futex_cleanup_end() set the state to 1576 * FUTEX_STATE_DEAD. 1577 * 1578 * This transitions back from FUTEX_STATE_DEAD to FUTEX_STATE_OK. The 1579 * ordering guarantee required here is that the previous store to 1580 * tsk::mm in the calling code cannot be reordered against this store. 1581 */ 1582 guard(raw_spinlock_irq)(&tsk->pi_lock); 1583 tsk->futex.state = FUTEX_STATE_OK; 1584 } 1585 1586 static void futex_hash_bucket_init(struct futex_hash_bucket *fhb) 1587 { 1588 atomic_set(&fhb->waiters, 0); 1589 plist_head_init(&fhb->chain); 1590 spin_lock_init(&fhb->lock); 1591 } 1592 1593 #define FH_CUSTOM 0x01 1594 1595 #ifdef CONFIG_FUTEX_PRIVATE_HASH 1596 1597 /* 1598 * futex-ref 1599 * 1600 * Heavily inspired by percpu-rwsem/percpu-refcount; not reusing any of that 1601 * code because it just doesn't fit right. 1602 * 1603 * Dual counter, per-cpu / atomic approach like percpu-refcount, except it 1604 * re-initializes the state automatically, such that the fph swizzle is also a 1605 * transition back to per-cpu. 1606 */ 1607 1608 static void futex_ref_rcu(struct rcu_head *head); 1609 1610 static void __futex_ref_atomic_begin(struct futex_private_hash *fph) 1611 { 1612 struct mm_struct *mm = fph->mm; 1613 1614 /* 1615 * The counter we're about to switch to must have fully switched; 1616 * otherwise it would be impossible for it to have reported success 1617 * from futex_ref_is_dead(). 1618 */ 1619 WARN_ON_ONCE(atomic_long_read(&mm->futex.phash.atomic) != 0); 1620 1621 /* 1622 * Set the atomic to the bias value such that futex_ref_{get,put}() 1623 * will never observe 0. Will be fixed up in __futex_ref_atomic_end() 1624 * when folding in the percpu count. 1625 */ 1626 atomic_long_set(&mm->futex.phash.atomic, LONG_MAX); 1627 smp_store_release(&fph->state, FR_ATOMIC); 1628 1629 call_rcu_hurry(&mm->futex.phash.rcu, futex_ref_rcu); 1630 } 1631 1632 static void __futex_ref_atomic_end(struct futex_private_hash *fph) 1633 { 1634 struct mm_struct *mm = fph->mm; 1635 unsigned int count = 0; 1636 long ret; 1637 int cpu; 1638 1639 /* 1640 * Per __futex_ref_atomic_begin() the state of the fph must be ATOMIC 1641 * and per this RCU callback, everybody must now observe this state and 1642 * use the atomic variable. 1643 */ 1644 WARN_ON_ONCE(fph->state != FR_ATOMIC); 1645 1646 /* 1647 * Therefore the per-cpu counter is now stable, sum and reset. 1648 */ 1649 for_each_possible_cpu(cpu) { 1650 unsigned int *ptr = per_cpu_ptr(mm->futex.phash.ref, cpu); 1651 count += *ptr; 1652 *ptr = 0; 1653 } 1654 1655 /* 1656 * Re-init for the next cycle. 1657 */ 1658 this_cpu_inc(*mm->futex.phash.ref); /* 0 -> 1 */ 1659 1660 /* 1661 * Add actual count, subtract bias and initial refcount. 1662 * 1663 * The moment this atomic operation happens, futex_ref_is_dead() can 1664 * become true. 1665 */ 1666 ret = atomic_long_add_return(count - LONG_MAX - 1, &mm->futex.phash.atomic); 1667 if (!ret) 1668 wake_up_var(mm); 1669 1670 WARN_ON_ONCE(ret < 0); 1671 mmput_async(mm); 1672 } 1673 1674 static void futex_ref_rcu(struct rcu_head *head) 1675 { 1676 struct mm_struct *mm = container_of(head, struct mm_struct, futex.phash.rcu); 1677 struct futex_private_hash *fph = rcu_dereference_raw(mm->futex.phash.hash); 1678 1679 if (fph->state == FR_PERCPU) { 1680 /* 1681 * Per this extra grace-period, everybody must now observe 1682 * fph as the current fph and no previously observed fph's 1683 * are in-flight. 1684 * 1685 * Notably, nobody will now rely on the atomic 1686 * futex_ref_is_dead() state anymore so we can begin the 1687 * migration of the per-cpu counter into the atomic. 1688 */ 1689 __futex_ref_atomic_begin(fph); 1690 return; 1691 } 1692 1693 __futex_ref_atomic_end(fph); 1694 } 1695 1696 /* 1697 * Drop the initial refcount and transition to atomics. 1698 */ 1699 static void futex_ref_drop(struct futex_private_hash *fph) 1700 { 1701 struct mm_struct *mm = fph->mm; 1702 1703 /* 1704 * Can only transition the current fph; 1705 */ 1706 WARN_ON_ONCE(rcu_dereference_raw(mm->futex.phash.hash) != fph); 1707 /* 1708 * We enqueue at least one RCU callback. Ensure mm stays if the task 1709 * exits before the transition is completed. 1710 */ 1711 mmget(mm); 1712 1713 /* 1714 * In order to avoid the following scenario: 1715 * 1716 * futex_hash() __futex_pivot_hash() 1717 * guard(rcu); guard(mm->futex.phash.lock); 1718 * fph = mm->futex.phash.hash; 1719 * rcu_assign_pointer(&mm->futex.phash.hash, new); 1720 * futex_hash_allocate() 1721 * futex_ref_drop() 1722 * fph->state = FR_ATOMIC; 1723 * atomic_set(, BIAS); 1724 * 1725 * futex_private_hash_get(fph); // OOPS 1726 * 1727 * Where an old fph (which is FR_ATOMIC) and should fail on 1728 * inc_not_zero, will succeed because a new transition is started and 1729 * the atomic is bias'ed away from 0. 1730 * 1731 * There must be at least one full grace-period between publishing a 1732 * new fph and trying to replace it. 1733 */ 1734 if (poll_state_synchronize_rcu(mm->futex.phash.batches)) { 1735 /* 1736 * There was a grace-period, we can begin now. 1737 */ 1738 __futex_ref_atomic_begin(fph); 1739 return; 1740 } 1741 1742 call_rcu_hurry(&mm->futex.phash.rcu, futex_ref_rcu); 1743 } 1744 1745 static bool futex_ref_get(struct futex_private_hash *fph) 1746 { 1747 struct mm_struct *mm = fph->mm; 1748 1749 guard(preempt)(); 1750 1751 if (READ_ONCE(fph->state) == FR_PERCPU) { 1752 __this_cpu_inc(*mm->futex.phash.ref); 1753 return true; 1754 } 1755 1756 return atomic_long_inc_not_zero(&mm->futex.phash.atomic); 1757 } 1758 1759 static bool futex_ref_put(struct futex_private_hash *fph) 1760 { 1761 struct mm_struct *mm = fph->mm; 1762 1763 guard(preempt)(); 1764 1765 if (READ_ONCE(fph->state) == FR_PERCPU) { 1766 __this_cpu_dec(*mm->futex.phash.ref); 1767 return false; 1768 } 1769 1770 return atomic_long_dec_and_test(&mm->futex.phash.atomic); 1771 } 1772 1773 static bool futex_ref_is_dead(struct futex_private_hash *fph) 1774 { 1775 struct mm_struct *mm = fph->mm; 1776 1777 guard(rcu)(); 1778 1779 if (smp_load_acquire(&fph->state) == FR_PERCPU) 1780 return false; 1781 1782 return atomic_long_read(&mm->futex.phash.atomic) == 0; 1783 } 1784 1785 static void futex_hash_init_mm(struct futex_mm_data *fd) 1786 { 1787 memset(&fd->phash, 0, sizeof(fd->phash)); 1788 mutex_init(&fd->phash.lock); 1789 fd->phash.batches = get_state_synchronize_rcu(); 1790 } 1791 1792 void futex_hash_free(struct mm_struct *mm) 1793 { 1794 struct futex_private_hash *fph; 1795 1796 free_percpu(mm->futex.phash.ref); 1797 kvfree(mm->futex.phash.hash_new); 1798 fph = rcu_dereference_raw(mm->futex.phash.hash); 1799 kvfree(fph); 1800 } 1801 1802 static bool futex_pivot_pending(struct mm_struct *mm) 1803 { 1804 struct futex_mm_phash *mmph = &mm->futex.phash; 1805 struct futex_private_hash *fph; 1806 1807 guard(mutex)(&mmph->lock); 1808 1809 if (!mmph->hash_new) 1810 return true; 1811 1812 fph = rcu_dereference_raw(mmph->hash); 1813 return futex_ref_is_dead(fph); 1814 } 1815 1816 static bool futex_hash_less(struct futex_private_hash *a, 1817 struct futex_private_hash *b) 1818 { 1819 /* user provided always wins */ 1820 if (!a->custom && b->custom) 1821 return true; 1822 if (a->custom && !b->custom) 1823 return false; 1824 1825 /* zero-sized hash wins */ 1826 if (!b->hash_mask) 1827 return true; 1828 if (!a->hash_mask) 1829 return false; 1830 1831 /* keep the biggest */ 1832 if (a->hash_mask < b->hash_mask) 1833 return true; 1834 if (a->hash_mask > b->hash_mask) 1835 return false; 1836 1837 return false; /* equal */ 1838 } 1839 1840 static int futex_hash_allocate(unsigned int hash_slots, unsigned int flags) 1841 { 1842 struct mm_struct *mm = current->mm; 1843 struct futex_private_hash *fph; 1844 bool custom = flags & FH_CUSTOM; 1845 int i; 1846 1847 if (hash_slots && (hash_slots == 1 || !is_power_of_2(hash_slots))) 1848 return -EINVAL; 1849 1850 /* 1851 * Once we've disabled the global hash there is no way back. 1852 */ 1853 scoped_guard(rcu) { 1854 fph = rcu_dereference(mm->futex.phash.hash); 1855 if (fph && !fph->hash_mask) { 1856 if (custom) 1857 return -EBUSY; 1858 return 0; 1859 } 1860 } 1861 1862 if (!mm->futex.phash.ref) { 1863 unsigned int __percpu *ref = alloc_percpu(unsigned int); 1864 1865 if (!ref) 1866 return -ENOMEM; 1867 1868 /* 1869 * Tasks sharing the mm can run this concurrently, so take the 1870 * initial reference before publishing the counter. 1871 */ 1872 this_cpu_inc(*ref); /* 0 -> 1 */ 1873 if (cmpxchg(&mm->futex.phash.ref, NULL, ref)) 1874 free_percpu(ref); 1875 } 1876 1877 fph = kvzalloc_flex(*fph, queues, hash_slots, 1878 GFP_KERNEL_ACCOUNT | __GFP_NOWARN); 1879 if (!fph) 1880 return -ENOMEM; 1881 1882 fph->hash_mask = hash_slots ? hash_slots - 1 : 0; 1883 fph->custom = custom; 1884 fph->mm = mm; 1885 1886 for (i = 0; i < hash_slots; i++) 1887 futex_hash_bucket_init(&fph->queues[i]); 1888 1889 if (custom) { 1890 struct wait_bit_queue_entry __wbq_entry; 1891 struct wait_queue_head *__wq_head; 1892 1893 /* 1894 * Only let prctl() wait / retry; don't unduly delay clone(). 1895 */ 1896 again: 1897 __wq_head = __var_waitqueue(mm); 1898 init_wait_var_entry(&__wbq_entry, mm, 0); 1899 __wbq_entry.wq_entry.func = woken_wake_bit_function; 1900 add_wait_queue(__wq_head, &__wbq_entry.wq_entry); 1901 1902 /* 1903 * add_wait_queue() futex_ref_put() 1904 * MB (this) MB (implied) 1905 * futex_pivot_pending() wake_up_var() 1906 * waitqueue_active() 1907 * 1908 * Notably, it must not be possible to see 1909 * !futex_pivot_pending() && !waitqueue_active(). 1910 */ 1911 smp_mb(); 1912 1913 while (!futex_pivot_pending(mm) && 1914 wait_woken(&__wbq_entry.wq_entry, TASK_UNINTERRUPTIBLE, 1915 MAX_SCHEDULE_TIMEOUT)) 1916 /* empty */; 1917 1918 remove_wait_queue(__wq_head, &__wbq_entry.wq_entry); 1919 } 1920 1921 scoped_guard(mutex, &mm->futex.phash.lock) { 1922 struct futex_private_hash *free __free(kvfree) = NULL; 1923 struct futex_private_hash *cur, *new; 1924 1925 cur = rcu_dereference_protected(mm->futex.phash.hash, 1926 lockdep_is_held(&mm->futex.phash.lock)); 1927 new = mm->futex.phash.hash_new; 1928 mm->futex.phash.hash_new = NULL; 1929 1930 if (fph) { 1931 if (cur && !cur->hash_mask) { 1932 /* 1933 * If two threads simultaneously request the global 1934 * hash then the first one performs the switch, 1935 * the second one returns here. 1936 */ 1937 free = fph; 1938 mm->futex.phash.hash_new = new; 1939 return -EBUSY; 1940 } 1941 if (cur && !new) { 1942 /* 1943 * If we have an existing hash, but do not yet have 1944 * allocated a replacement hash, drop the initial 1945 * reference on the existing hash. 1946 */ 1947 futex_ref_drop(cur); 1948 } 1949 1950 if (new) { 1951 /* 1952 * Two updates raced; throw out the lesser one. 1953 */ 1954 if (futex_hash_less(new, fph)) { 1955 free = new; 1956 new = fph; 1957 } else { 1958 free = fph; 1959 } 1960 } else { 1961 new = fph; 1962 } 1963 fph = NULL; 1964 } 1965 1966 if (new) { 1967 /* 1968 * Will set mm->futex.phash.new_hash on failure; 1969 * futex_private_hash_get() will try again. 1970 */ 1971 if (!__futex_pivot_hash(mm, new) && custom) 1972 goto again; 1973 } 1974 } 1975 return 0; 1976 } 1977 1978 int futex_hash_allocate_default(void) 1979 { 1980 unsigned int threads, buckets, current_buckets = 0; 1981 struct futex_private_hash *fph; 1982 1983 if (!current->mm) 1984 return 0; 1985 1986 scoped_guard(rcu) { 1987 threads = min_t(unsigned int, get_nr_threads(current), num_online_cpus()); 1988 1989 fph = rcu_dereference(current->mm->futex.phash.hash); 1990 if (fph) { 1991 if (fph->custom) 1992 return 0; 1993 1994 current_buckets = fph->hash_mask + 1; 1995 } 1996 } 1997 1998 /* 1999 * The default allocation will remain within 2000 * 16 <= threads * 4 <= global hash size 2001 */ 2002 buckets = roundup_pow_of_two(4 * threads); 2003 buckets = clamp(buckets, 16, __futex_mask + 1); 2004 2005 if (current_buckets >= buckets) 2006 return 0; 2007 2008 return futex_hash_allocate(buckets, 0); 2009 } 2010 2011 static int futex_hash_get_slots(void) 2012 { 2013 struct futex_private_hash *fph; 2014 2015 guard(rcu)(); 2016 fph = rcu_dereference(current->mm->futex.phash.hash); 2017 if (fph && fph->hash_mask) 2018 return fph->hash_mask + 1; 2019 return 0; 2020 } 2021 #else /* CONFIG_FUTEX_PRIVATE_HASH */ 2022 static inline int futex_hash_allocate(unsigned int hslots, unsigned int flags) { return -EINVAL; } 2023 static inline int futex_hash_get_slots(void) { return 0; } 2024 static inline void futex_hash_init_mm(struct futex_mm_data *fd) { } 2025 #endif /* !CONFIG_FUTEX_PRIVATE_HASH */ 2026 2027 #ifdef CONFIG_FUTEX_ROBUST_UNLOCK 2028 static void futex_invalidate_cs_ranges(struct futex_mm_data *fd) 2029 { 2030 /* 2031 * Invalidate start_ip so that the quick check fails for ip >= start_ip 2032 * if VDSO is not mapped or the second slot is not available for compat 2033 * tasks as they use VDSO32 which does not provide the 64-bit pointer 2034 * variant. 2035 */ 2036 for (int i = 0; i < FUTEX_ROBUST_MAX_CS_RANGES; i++) 2037 fd->unlock.cs_ranges[i].start_ip = ~0UL; 2038 } 2039 2040 void futex_reset_cs_ranges(struct futex_mm_data *fd) 2041 { 2042 memset(fd->unlock.cs_ranges, 0, sizeof(fd->unlock.cs_ranges)); 2043 futex_invalidate_cs_ranges(fd); 2044 } 2045 2046 static void futex_robust_unlock_init_mm(struct futex_mm_data *fd) 2047 { 2048 /* mm_dup() preserves the range, mm_alloc() clears it */ 2049 if (!fd->unlock.cs_ranges[0].start_ip) 2050 futex_invalidate_cs_ranges(fd); 2051 } 2052 #else /* CONFIG_FUTEX_ROBUST_UNLOCK */ 2053 static inline void futex_robust_unlock_init_mm(struct futex_mm_data *fd) { } 2054 #endif /* !CONFIG_FUTEX_ROBUST_UNLOCK */ 2055 2056 #if defined(CONFIG_FUTEX_PRIVATE_HASH) || defined(CONFIG_FUTEX_ROBUST_UNLOCK) 2057 void futex_mm_init(struct mm_struct *mm) 2058 { 2059 futex_hash_init_mm(&mm->futex); 2060 futex_robust_unlock_init_mm(&mm->futex); 2061 } 2062 #endif 2063 2064 int futex_hash_prctl(unsigned long arg2, unsigned long arg3, unsigned long arg4) 2065 { 2066 unsigned int flags = FH_CUSTOM; 2067 int ret; 2068 2069 switch (arg2) { 2070 case PR_FUTEX_HASH_SET_SLOTS: 2071 if (arg4) 2072 return -EINVAL; 2073 ret = futex_hash_allocate(arg3, flags); 2074 break; 2075 2076 case PR_FUTEX_HASH_GET_SLOTS: 2077 ret = futex_hash_get_slots(); 2078 break; 2079 2080 default: 2081 ret = -EINVAL; 2082 break; 2083 } 2084 return ret; 2085 } 2086 2087 static int __init futex_init(void) 2088 { 2089 unsigned long hashsize, i; 2090 unsigned int order, n; 2091 unsigned long size; 2092 2093 #ifdef CONFIG_BASE_SMALL 2094 hashsize = 16; 2095 #else 2096 hashsize = 256 * num_possible_cpus(); 2097 hashsize /= num_possible_nodes(); 2098 hashsize = max(4, hashsize); 2099 hashsize = roundup_pow_of_two(hashsize); 2100 #endif 2101 __futex_mask = hashsize - 1; 2102 __futex_shift = ilog2(hashsize); 2103 size = sizeof(struct futex_hash_bucket) * hashsize; 2104 order = get_order(size); 2105 2106 __futex_queues = kzalloc_objs(*__futex_queues, nr_node_ids); 2107 kmemleak_not_leak(__futex_queues); 2108 2109 runtime_const_init(shift, __futex_shift); 2110 runtime_const_init(mask, __futex_mask); 2111 runtime_const_init(ptr, __futex_queues); 2112 2113 barrier(); 2114 2115 BUG_ON(!futex_queues()); 2116 2117 for_each_node(n) { 2118 struct futex_hash_bucket *table; 2119 2120 if (order > MAX_PAGE_ORDER) 2121 table = vmalloc_huge_node(size, GFP_KERNEL, n); 2122 else 2123 table = alloc_pages_exact_nid(n, size, GFP_KERNEL); 2124 2125 BUG_ON(!table); 2126 2127 for (i = 0; i < hashsize; i++) 2128 futex_hash_bucket_init(&table[i]); 2129 2130 futex_queues()[n] = table; 2131 } 2132 2133 pr_info("futex hash table entries: %lu (%lu bytes on %d NUMA nodes, total %lu KiB, %s).\n", 2134 hashsize, size, num_possible_nodes(), size * num_possible_nodes() / 1024, 2135 order > MAX_PAGE_ORDER ? "vmalloc" : "linear"); 2136 return 0; 2137 } 2138 core_initcall(futex_init); 2139