{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":207181317,"defaultBranch":"rust-next","name":"linux","ownerLogin":"Rust-for-Linux","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2019-09-08T22:26:32.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/54721195?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1725571719.0","currentOid":""},"activityList":{"items":[{"before":"53bd83d95bb0c07a0101fdeba56b867efd8e113f","after":"a2f11547052001bd448ccec81dd1e68409078fbb","ref":"refs/heads/rust-next","pushedAt":"2024-09-16T16:14:13.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"kasan: rust: Add KASAN smoke test via UAF\n\nAdds a smoke test to ensure that KASAN in Rust is actually detecting a\nRust-native UAF. There is significant room to expand this test suite,\nbut this will at least ensure that flags are having the intended effect.\n\nThe rename from kasan_test.c to kasan_test_c.c is in order to allow the\nsingle kasan_test.ko test suite to contain both a .o file produced\nby the C compiler and one produced by rustc.\n\nSigned-off-by: Matthew Maurer \nReviewed-by: Andrey Konovalov \nLink: https://lore.kernel.org/r/20240820194910.187826-5-mmaurer@google.com\n[ Applied empty line nit, removed double empty line,\n applied `rustfmt` and formatted crate comment. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"kasan: rust: Add KASAN smoke test via UAF"}},{"before":"d077242d68a31075ef5f5da041bf8f6fc19aa231","after":"53bd83d95bb0c07a0101fdeba56b867efd8e113f","ref":"refs/heads/rust-next","pushedAt":"2024-09-15T19:06:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: cfi: add support for CFI_CLANG with Rust\n\nMake it possible to use the Control Flow Integrity (CFI) sanitizer when\nRust is enabled. Enabling CFI with Rust requires that CFI is configured\nto normalize integer types so that all integer types of the same size\nand signedness are compatible under CFI.\n\nRust and C use the same LLVM backend for code generation, so Rust KCFI\nis compatible with the KCFI used in the kernel for C. In the case of\nFineIBT, CFI also depends on -Zpatchable-function-entry for rewriting\nthe function prolouge, so we set that flag for Rust as well. The flag\nfor FineIBT requires rustc 1.80.0 or later, so include a Kconfig\nrequirement for that.\n\nEnabling Rust will select CFI_ICALL_NORMALIZE_INTEGERS because the flag\nis required to use Rust with CFI. Using select rather than `depends on`\navoids the case where Rust is not visible in menuconfig due to\nCFI_ICALL_NORMALIZE_INTEGERS not being enabled. One disadvantage of\nselect is that RUST must `depends on` all of the things that\nCFI_ICALL_NORMALIZE_INTEGERS depends on to avoid invalid configurations.\n\nAlice has been using KCFI on her phone for several months, so it is\nreasonably well tested on arm64.\n\nSigned-off-by: Matthew Maurer \nCo-developed-by: Alice Ryhl \nSigned-off-by: Alice Ryhl \nReviewed-by: Sami Tolvanen \nTested-by: Gatlin Newhouse \nAcked-by: Kees Cook \nAcked-by: Peter Zijlstra (Intel) \nLink: https://lore.kernel.org/r/20240801-kcfi-v2-2-c93caed3d121@google.com\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: cfi: add support for CFI_CLANG with Rust"}},{"before":"99a838e39088f3c333191a2dbacbaab05c47c002","after":"d077242d68a31075ef5f5da041bf8f6fc19aa231","ref":"refs/heads/rust-next","pushedAt":"2024-09-12T22:06:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: support for shadow call stack sanitizer\n\nAdd all of the flags that are needed to support the shadow call stack\n(SCS) sanitizer with Rust, and updates Kconfig to allow only\nconfigurations that work.\n\nThe -Zfixed-x18 flag is required to use SCS on arm64, and requires rustc\nversion 1.80.0 or greater. This restriction is reflected in Kconfig.\n\nWhen CONFIG_DYNAMIC_SCS is enabled, the build will be configured to\ninclude unwind tables in the build artifacts. Dynamic SCS uses the\nunwind tables at boot to find all places that need to be patched. The\n-Cforce-unwind-tables=y flag ensures that unwind tables are available\nfor Rust code.\n\nIn non-dynamic mode, the -Zsanitizer=shadow-call-stack flag is what\nenables the SCS sanitizer. Using this flag requires rustc version 1.82.0\nor greater on the targets used by Rust in the kernel. This restriction\nis reflected in Kconfig.\n\nIt is possible to avoid the requirement of rustc 1.80.0 by using\n-Ctarget-feature=+reserve-x18 instead of -Zfixed-x18. However, this flag\nemits a warning during the build, so this patch does not add support for\nusing it and instead requires 1.80.0 or greater.\n\nThe dependency is placed on `select HAVE_RUST` to avoid a situation\nwhere enabling Rust silently turns off the sanitizer. Instead, turning\non the sanitizer results in Rust being disabled. We generally do not\nwant changes to CONFIG_RUST to result in any mitigations being changed\nor turned off.\n\nAt the time of writing, rustc 1.82.0 only exists via the nightly release\nchannel. There is a chance that the -Zsanitizer=shadow-call-stack flag\nwill end up needing 1.83.0 instead, but I think it is small.\n\nReviewed-by: Sami Tolvanen \nReviewed-by: Ard Biesheuvel \nReviewed-by: Kees Cook \nAcked-by: Will Deacon \nSigned-off-by: Alice Ryhl \nLink: https://lore.kernel.org/r/20240829-shadow-call-stack-v7-1-2f62a4432abf@google.com\n[ Fixed indentation using spaces. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: support for shadow call stack sanitizer"}},{"before":"93dc3be19450447a3a7090bd1dfb9f3daac3e8d2","after":"99a838e39088f3c333191a2dbacbaab05c47c002","ref":"refs/heads/rust-next","pushedAt":"2024-09-12T21:53:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: support for shadow call stack sanitizer\n\nAdd all of the flags that are needed to support the shadow call stack\n(SCS) sanitizer with Rust, and updates Kconfig to allow only\nconfigurations that work.\n\nThe -Zfixed-x18 flag is required to use SCS on arm64, and requires rustc\nversion 1.80.0 or greater. This restriction is reflected in Kconfig.\n\nWhen CONFIG_DYNAMIC_SCS is enabled, the build will be configured to\ninclude unwind tables in the build artifacts. Dynamic SCS uses the\nunwind tables at boot to find all places that need to be patched. The\n-Cforce-unwind-tables=y flag ensures that unwind tables are available\nfor Rust code.\n\nIn non-dynamic mode, the -Zsanitizer=shadow-call-stack flag is what\nenables the SCS sanitizer. Using this flag requires rustc version 1.82.0\nor greater on the targets used by Rust in the kernel. This restriction\nis reflected in Kconfig.\n\nIt is possible to avoid the requirement of rustc 1.80.0 by using\n-Ctarget-feature=+reserve-x18 instead of -Zfixed-x18. However, this flag\nemits a warning during the build, so this patch does not add support for\nusing it and instead requires 1.80.0 or greater.\n\nThe dependency is placed on `select HAVE_RUST` to avoid a situation\nwhere enabling Rust silently turns off the sanitizer. Instead, turning\non the sanitizer results in Rust being disabled. We generally do not\nwant changes to CONFIG_RUST to result in any mitigations being changed\nor turned off.\n\nAt the time of writing, rustc 1.82.0 only exists via the nightly release\nchannel. There is a chance that the -Zsanitizer=shadow-call-stack flag\nwill end up needing 1.83.0 instead, but I think it is small.\n\nReviewed-by: Sami Tolvanen \nReviewed-by: Ard Biesheuvel \nReviewed-by: Kees Cook \nAcked-by: Will Deacon \nSigned-off-by: Alice Ryhl \nLink: https://lore.kernel.org/r/20240829-shadow-call-stack-v7-1-2f62a4432abf@google.com\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: support for shadow call stack sanitizer"}},{"before":"77e1dd1d0f912f79d3c40b6bf35d45ba4953c066","after":"93dc3be19450447a3a7090bd1dfb9f3daac3e8d2","ref":"refs/heads/rust-next","pushedAt":"2024-09-05T20:46:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"docs: rust: include other expressions in conditional compilation section\n\nExpand the conditional compilation section to explain how to support\nother expressions, such as testing whether `RUSTC_VERSION` is at least\na given version, which requires a numerical comparison that Rust's `cfg`\npredicates do not support (yet?).\n\nReviewed-by: Nicolas Schier \nTested-by: Alice Ryhl \nAcked-by: Masahiro Yamada \nLink: https://lore.kernel.org/r/20240902165535.1101978-7-ojeda@kernel.org\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"docs: rust: include other expressions in conditional compilation section"}},{"before":"68d3b6aa08708bb3907c2c13eaf4b3ccf4805160","after":"77e1dd1d0f912f79d3c40b6bf35d45ba4953c066","ref":"refs/heads/rust-next","pushedAt":"2024-09-04T21:14:12.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"docs: rust: include other expressions in conditional compilation section\n\nExpand the conditional compilation section to explain how to support\nother expressions, such as testing whether `RUSTC_VERSION` is at least\na given version, which requires a numerical comparison that Rust's `cfg`\npredicates do not support (yet?).\n\nReviewed-by: Nicolas Schier \nTested-by: Alice Ryhl \nLink: https://lore.kernel.org/r/20240902165535.1101978-7-ojeda@kernel.org\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"docs: rust: include other expressions in conditional compilation section"}},{"before":"a335e95914046c6bed45c0d17cabcd483682cf5e","after":"68d3b6aa08708bb3907c2c13eaf4b3ccf4805160","ref":"refs/heads/rust-next","pushedAt":"2024-09-03T21:55:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"MAINTAINERS: add Trevor Gross as Rust reviewer\n\nTrevor has been involved with the Rust for Linux project for more than\na year now. He has been active reviewing Rust code in the mailing list,\nand he already is a formal reviewer of the Rust PHY library and the two\nPHY drivers.\n\nIn addition, he is also part of several upstream Rust teams:\ncompiler-contributors team (contributors to the Rust compiler on a regular\nbasis), libs-contributors (contributors to the Rust standard library on a\nregular basis), crate-maintainers (maintainers of official Rust crates),\nthe binary size working group and the Rust for Linux ping group.\n\nHis expertise with the language will be very useful to have around in\nthe future if Rust keeps growing within the kernel, thus add him to the\n`RUST` entry as a reviewer.\n\nAcked-by: Boqun Feng \nAcked-by: Trevor Gross \nLink: https://lore.kernel.org/r/20240902173255.1105340-1-ojeda@kernel.org\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"MAINTAINERS: add Trevor Gross as Rust reviewer"}},{"before":"376174f5a49ac8701df15a68e9d3269c5b62abed","after":"cff56ff737e2da095ca9f228e2c5afc903bfca69","ref":"refs/heads/rust-fixes","pushedAt":"2024-09-03T21:51:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"MAINTAINERS: update Andreas Hindborg's email address\n\nMove away from corporate infrastructure for upstream work. Also update\nmailmap.\n\nSigned-off-by: Andreas Hindborg \nLink: https://lore.kernel.org/r/20240903200956.68231-1-a.hindborg@kernel.org\n[ Reworded title slightly. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"MAINTAINERS: update Andreas Hindborg's email address"}},{"before":"8e95e53ca379a03d7f5bfc567a610baa85e15424","after":"376174f5a49ac8701df15a68e9d3269c5b62abed","ref":"refs/heads/rust-fixes","pushedAt":"2024-09-02T09:36:12.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"MAINTAINERS: Remove Wedson as Rust maintainer\n\nI am retiring from the project, so removing myself from MAINTAINERS as I won't\nhave time to dedicate to it.\n\nSigned-off-by: Wedson Almeida Filho \nLink: https://lore.kernel.org/r/20240828211117.9422-2-wedsonaf@gmail.com\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"MAINTAINERS: Remove Wedson as Rust maintainer"}},{"before":"6e6efc5fef4a1cdcccca3cffd5b73fd25d093352","after":"a335e95914046c6bed45c0d17cabcd483682cf5e","ref":"refs/heads/rust-next","pushedAt":"2024-08-31T15:36:30.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: rbtree: add `RBTree::entry`\n\nThis mirrors the entry API [1] from the Rust standard library on\n`RBTree`. This API can be used to access the entry at a specific key and\nmake modifications depending on whether the key is vacant or occupied.\nThis API is useful because it can often be used to avoid traversing the\ntree multiple times.\n\nThis is used by binder to look up and conditionally access or insert a\nvalue, depending on whether it is there or not [2].\n\nLink: https://doc.rust-lang.org/stable/std/collections/btree_map/enum.Entry.html [1]\nLink: https://android-review.googlesource.com/c/kernel/common/+/2849906 [2]\nSigned-off-by: Alice Ryhl \nTested-by: Alice Ryhl \nReviewed-by: Boqun Feng \nReviewed-by: Benno Lossin \nSigned-off-by: Matt Gilbride \nLink: https://lore.kernel.org/r/20240822-b4-rbtree-v12-5-014561758a57@google.com\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: rbtree: add RBTree::entry"}},{"before":"0903b9e2a46cb6252a13d6b19d0502da9be191cf","after":"8e95e53ca379a03d7f5bfc567a610baa85e15424","ref":"refs/heads/rust-fixes","pushedAt":"2024-08-27T20:57:33.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: allow `stable_features` lint\n\nSupport for several Rust compiler versions started in commit 63b27f4a0074\n(\"rust: start supporting several compiler versions\"). Since we currently\nneed to use a number of unstable features in the kernel, it is a matter\nof time until one gets stabilized and the `stable_features` lint warns.\n\nFor instance, the `new_uninit` feature may become stable soon, which\nwould give us multiple warnings like the following:\n\n warning: the feature `new_uninit` has been stable since 1.82.0-dev\n and no longer requires an attribute to enable\n --> rust/kernel/lib.rs:17:12\n |\n 17 | #![feature(new_uninit)]\n | ^^^^^^^^^^\n |\n = note: `#[warn(stable_features)]` on by default\n\nThus allow the `stable_features` lint to avoid such warnings. This is\nthe simplest approach -- we do not have that many cases (and the goal\nis to stop using unstable features anyway) and cleanups can be easily\ndone when we decide to update the minimum version.\n\nAn alternative would be to conditionally enable them based on the\ncompiler version (with the upcoming `RUSTC_VERSION` or maybe with the\nunstable `cfg(version(...))`, but that one apparently will not work for\nthe nightly case). However, doing so is more complex and may not work\nwell for different nightlies of the same version, unless we do not care\nabout older nightlies.\n\nAnother alternative is using explicit tests of the feature calling\n`rustc`, but that is also more complex and slower.\n\nReviewed-by: Alice Ryhl \nLink: https://lore.kernel.org/r/20240827100403.376389-1-ojeda@kernel.org\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: allow stable_features lint"}},{"before":"4b34441608dbf0286d8346c4205f1fa6c6541fab","after":"47e2ca44b7cfd5b0346c48ed6e4572cd98526071","ref":"refs/heads/rust-dev","pushedAt":"2024-08-27T19:16:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"fbq","name":"Boqun Feng","path":"/fbq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/673448?s=80&v=4"},"commit":{"message":"MAINTAINERS: add entry for the Rust `alloc` module\n\nAdd maintainers entry for the Rust `alloc` module.\n\nCurrently, this includes the `Allocator` API itself, `Allocator`\nimplementations, such as `Kmalloc` or `Vmalloc`, as well as the kernel's\nimplementation of the primary memory allocation data structures, `Box`\nand `Vec`.\n\nSigned-off-by: Danilo Krummrich \nLink: https://lore.kernel.org/r/20240816001216.26575-27-dakr@kernel.org","shortMessageHtmlLink":"MAINTAINERS: add entry for the Rust alloc module"}},{"before":"3197de1326a29dda8aaf21c25767ea1d89a97961","after":"0903b9e2a46cb6252a13d6b19d0502da9be191cf","ref":"refs/heads/rust-fixes","pushedAt":"2024-08-26T22:08:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: alloc: eschew `Box>::write`\n\nUpstream Rust's libs-api team has consensus for stabilizing some of\n`feature(new_uninit)`, but not for `Box>::write`. Instead,\nwe can use `MaybeUninit::write`, so Rust for Linux can drop the\nfeature after stabilization. That will happen after merging, as the FCP\nhas completed [1].\n\nThis is required before stabilization because remaining-unstable API\nwill be divided into new features. This code doesn't know about those\nyet. It can't: they haven't landed, as the relevant PR is blocked on\nrustc's CI testing Rust-for-Linux without this patch.\n\n[ The PR has landed [2] and will be released in Rust 1.82.0 (expected on\n 2024-10-17), so we could conditionally enable the new unstable feature\n (`box_uninit_write` [3]) instead, but just for a single `unsafe` block\n it is probably not worth it. For the time being, I added it to the\n \"nice to have\" section of our unstable features list. - Miguel ]\n\nLink: https://github.com/rust-lang/rust/issues/63291#issuecomment-2183022955 [1]\nLink: https://github.com/rust-lang/rust/pull/129416 [2]\nLink: https://github.com/rust-lang/rust/issues/129397 [3]\nSigned-off-by: Jubilee Young \nReviewed-by: Alice Ryhl \nReviewed-by: Trevor Gross \n[ Reworded slightly. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: alloc: eschew Box<MaybeUninit<T>>::write"}},{"before":"0ff8f3f0979559b0d7494d580f2597beab3f159b","after":"3197de1326a29dda8aaf21c25767ea1d89a97961","ref":"refs/heads/rust-fixes","pushedAt":"2024-08-26T22:06:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: alloc: eschew `Box>::write`\n\nUpstream Rust's libs-api team has consensus for stabilizing some of\n`feature(new_uninit)`, but not for `Box>::write`. Instead,\nwe can use `MaybeUninit::write`, so Rust for Linux can drop the\nfeature after stabilization. That will happen after merging, as the FCP\nhas completed [1].\n\nThis is required before stabilization because remaining-unstable API\nwill be divided into new features. This code doesn't know about those\nyet. It can't: they haven't landed, as the relevant PR is blocked on\nrustc's CI testing Rust-for-Linux without this patch.\n\n[ The PR has landed [2], so we could conditionally enable the new\n unstable feature (`box_uninit_write` [3]) instead, but just for a\n single `unsafe` block it is probably not worth it. For the time being,\n I added it to the \"nice to have\" section of our unstable features\n list. - Miguel ]\n\nLink: https://github.com/rust-lang/rust/issues/63291#issuecomment-2183022955 [1]\nLink: https://github.com/rust-lang/rust/pull/129416 [2]\nLink: https://github.com/rust-lang/rust/issues/129397 [3]\nSigned-off-by: Jubilee Young \nReviewed-by: Alice Ryhl \nReviewed-by: Trevor Gross \n[ Reworded slightly. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: alloc: eschew Box<MaybeUninit<T>>::write"}},{"before":"96fff2dc2954dcaf7affe7da212aba3f5107d06d","after":"6e6efc5fef4a1cdcccca3cffd5b73fd25d093352","ref":"refs/heads/rust-next","pushedAt":"2024-08-25T20:17:34.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: enable rustdoc's `--generate-link-to-definition`\n\nIn Rust 1.56.0 [1], rustdoc introduced the \"jump to definition\"\nfeature [2], i.e. the unstable flag `--generate-link-to-definition`.\nIt adds links to the source view of the documentation.\n\nFor instance, in the source view of `rust/kernel/sync.rs`, for this code:\n\n impl Default for LockClassKey {\n fn default() -> Self {\n Self::new()\n }\n }\n\nIt will add three hyperlinks:\n\n - `Default` points to the rendered \"Trait `core::default::Default`\"\n page (not the source view, since it goes to another crate, though\n this may change).\n\n - `LockClassKey` points to the `pub struct LockClassKey(...);` line\n in the same page, highlighting the line number.\n\n - `Self::new()` points to the `pub const fn new() -> Self { ... }`\n associated function, highlighting its line numbers (i.e. for the\n full function).\n\nThis makes the source view more useful and a bit closer to the experience\nin e.g. the Elixir Cross Referencer [3].\n\nI have provisionally enabled it for rust.docs.kernel.org [4] -- one can\ntake a look at the source view there for an example of how it looks like.\n\nThus enable it.\n\nCc: Guillaume Gomez \nLink: https://github.com/rust-lang/rust/pull/84176 [1]\nLink: https://github.com/rust-lang/rust/issues/89095 [2]\nLink: https://elixir.bootlin.com [3]\nLink: https://rust.docs.kernel.org [4]\nReviewed-by: Gary Guo \nLink: https://lore.kernel.org/r/20240818141249.387166-1-ojeda@kernel.org\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: enable rustdoc's --generate-link-to-definition"}},{"before":"093f6b5facd6e21359e4182b2897b9d6d83cc4ad","after":"96fff2dc2954dcaf7affe7da212aba3f5107d06d","ref":"refs/heads/rust-next","pushedAt":"2024-08-25T12:45:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: types: add `ARef::into_raw`\n\nAdd a method for `ARef` that is analogous to `Arc::into_raw`. It is the\ninverse operation of `ARef::from_raw`, and allows you to convert the\n`ARef` back into a raw pointer while retaining ownership of the\nrefcount.\n\nThis new function will be used by [1] for converting the type in an\n`ARef` using `ARef::from_raw(ARef::into_raw(me).cast())`. Alice has\nalso needed the same function for other use-cases in the past, but [1]\nis the first to go upstream.\n\nThis was implemented independently by Kartik and Alice. The two versions\nwere merged by Alice, so all mistakes are Alice's.\n\nLink: https://lore.kernel.org/r/20240801-vma-v3-1-db6c1c0afda9@google.com [1]\nLink: https://github.com/Rust-for-Linux/linux/issues/1044\nSigned-off-by: Kartik Prajapati \nCo-developed-by: Alice Ryhl \nSigned-off-by: Alice Ryhl \nReviewed-by: Benno Lossin \n[ Reworded to correct the author reference and changed tag to Link\n since it is not a bug. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: types: add ARef::into_raw"}},{"before":"b204bbc53f958fc3119d63bf2cda5a526e7267a4","after":"093f6b5facd6e21359e4182b2897b9d6d83cc4ad","ref":"refs/heads/rust-next","pushedAt":"2024-08-25T12:43:45.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: add `ARef::into_raw`\n\nAdd a method for `ARef` that is analogous to `Arc::into_raw`. It is the\ninverse operation of `ARef::from_raw`, and allows you to convert the\n`ARef` back into a raw pointer while retaining ownership of the\nrefcount.\n\nThis new function will be used by [1] for converting the type in an\n`ARef` using `ARef::from_raw(ARef::into_raw(me).cast())`. Alice has\nalso needed the same function for other use-cases in the past, but [1]\nis the first to go upstream.\n\nThis was implemented independently by Kartik and Alice. The two versions\nwere merged by Alice, so all mistakes are Alice's.\n\nLink: https://lore.kernel.org/r/20240801-vma-v3-1-db6c1c0afda9@google.com [1]\nLink: https://github.com/Rust-for-Linux/linux/issues/1044\nSigned-off-by: Kartik Prajapati \nCo-developed-by: Alice Ryhl \nSigned-off-by: Alice Ryhl \nReviewed-by: Benno Lossin \n[ Reworded to correct the author reference and changed tag to Link\n since it is not a bug. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: add ARef::into_raw"}},{"before":null,"after":"4c7864e81d8bbd51036dacf92fb0a400e13aaeee","ref":"refs/heads/for-rust-upstream-ci","pushedAt":"2024-08-23T07:36:08.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: Eschew `Box>::write`\n\nT-libs-api has consensus for stabilizing some of `feature(new_uninit)`,\nbut not for `Box>::write`. Instead, we can use\n`MaybeUninit::write`, so Rust for Linux can drop the feature after\nstabilization. That will happen after merging, as the FCP has completed:\nhttps://github.com/rust-lang/rust/issues/63291#issuecomment-2183022955\n\nThis is required before stabilization because remaining-unstable API\nwill be divided into new features. This code doesn't know about those\nyet. It can't: they haven't landed, as the relevant PR is blocked on\nrustc's CI testing Rust-for-Linux without this patch.\n\nSigned-off-by: Jubilee Young \nReviewed-by: Trevor Gross \nLink: https://lore.kernel.org/r/20240823050359.1737893-1-workingjubilee@gmail.com","shortMessageHtmlLink":"rust: Eschew Box<MaybeUninit<T>>::write"}},{"before":"6d1c22d0ace31d096b0dab5318c6a0d3219d6456","after":"b204bbc53f958fc3119d63bf2cda5a526e7267a4","ref":"refs/heads/rust-next","pushedAt":"2024-08-23T04:30:44.000Z","pushType":"push","commitsCount":11,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: list: add ListArcField\n\nOne way to explain what `ListArc` does is that it controls exclusive\naccess to the prev/next pointer field in a refcounted object. The\nfeature of having a special reference to a refcounted object with\nexclusive access to specific fields is useful for other things, so\nprovide a general utility for that.\n\nThis is used by Rust Binder to keep track of which processes have a\nreference to a given node. This involves an object for each process/node\npair, that is referenced by both the process and the node. For some\nfields in this object, only the process's reference needs to access\nthem (and it needs mutable access), so Binder uses a ListArc to give the\nprocess's reference exclusive access.\n\nReviewed-by: Benno Lossin \nSigned-off-by: Alice Ryhl \nLink: https://lore.kernel.org/r/20240814-linked-list-v5-10-f5f5e8075da0@google.com\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: list: add ListArcField"}},{"before":"a4198467af9a4d804d6974aaf7de621aa3dcbced","after":"6d1c22d0ace31d096b0dab5318c6a0d3219d6456","ref":"refs/heads/rust-next","pushedAt":"2024-08-21T22:16:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: init: add `write_[pin_]init` functions\n\nSometimes it is necessary to split allocation and initialization into\ntwo steps. One such situation is when reusing existing allocations\nobtained via `Box::drop_contents`. See [1] for an example.\n\nIn order to support this use case add `write_[pin_]init` functions to the\npin-init API. These functions operate on already allocated smart\npointers that wrap `MaybeUninit`.\n\nLink: https://lore.kernel.org/rust-for-linux/f026532f-8594-4f18-9aa5-57ad3f5bc592@proton.me/ [1]\nSigned-off-by: Benno Lossin \nReviewed-by: Boqun Feng \nReviewed-by: Alice Ryhl \nReviewed-by: Gary Guo \nLink: https://lore.kernel.org/r/20240819112415.99810-2-benno.lossin@proton.me\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: init: add write_[pin_]init functions"}},{"before":"cfc3edac0ca7c8be3d2fdb7045ce867ab4f0de96","after":"a4198467af9a4d804d6974aaf7de621aa3dcbced","ref":"refs/heads/rust-next","pushedAt":"2024-08-21T22:14:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: init: add `write_[pin_]init` functions\n\nSometimes it is necessary to split allocation and initialization into\ntwo steps. One such situation is when reusing existing allocations\nobtained via `Box::drop_contents`. See [1] for an example.\n\nIn order to support this use case add `write_[pin_]init` functions to the\npin-init API. These functions operate on already allocated smart\npointers that wrap `MaybeUninit`.\n\nSigned-off-by: Benno Lossin \nLink: https://lore.kernel.org/rust-for-linux/f026532f-8594-4f18-9aa5-57ad3f5bc592@proton.me/ [1]\nReviewed-by: Boqun Feng \nReviewed-by: Alice Ryhl \nReviewed-by: Gary Guo \nLink: https://lore.kernel.org/r/20240819112415.99810-2-benno.lossin@proton.me\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: init: add write_[pin_]init functions"}},{"before":"e26fa546042add70944d018b930530d16b3cf626","after":"cfc3edac0ca7c8be3d2fdb7045ce867ab4f0de96","ref":"refs/heads/rust-next","pushedAt":"2024-08-21T22:12:01.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: init: add `write_[pin_]init` functions\n\nSometimes it is necessary to split allocation and initialization into\ntwo steps. One such situation is when reusing existing allocations\nobtained via `Box::drop_contents`. See [1] for an example.\nIn order to support this use case add `write_[pin_]init` functions to the\npin-init API. These functions operate on already allocated smart\npointers that wrap `MaybeUninit`.\n\nSigned-off-by: Benno Lossin \nLink: https://lore.kernel.org/rust-for-linux/f026532f-8594-4f18-9aa5-57ad3f5bc592@proton.me/ [1]\nReviewed-by: Boqun Feng \nReviewed-by: Alice Ryhl \nReviewed-by: Gary Guo \nLink: https://lore.kernel.org/r/20240819112415.99810-2-benno.lossin@proton.me\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: init: add write_[pin_]init functions"}},{"before":"6a0bfe9aa46a61cedf23ceaebff727f193fc0d83","after":"0ff8f3f0979559b0d7494d580f2597beab3f159b","ref":"refs/heads/rust-fixes","pushedAt":"2024-08-21T11:30:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: kernel: fix typos in code comments\n\nFix spelling mistakes in code comments.\n\nSigned-off-by: Michael Vetter \nReviewed-by: Alice Ryhl \nReviewed-by: Benno Lossin \nLink: https://lore.kernel.org/r/20240819205731.2163-1-jubalh@iodoru.org\n[ Reworded slightly. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: kernel: fix typos in code comments"}},{"before":"3c12f2e953fc1ea2f1f86e2cd399800eb960ce96","after":"6a0bfe9aa46a61cedf23ceaebff727f193fc0d83","ref":"refs/heads/rust-fixes","pushedAt":"2024-08-21T11:02:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: kernel: fix typos in code comments\n\nFix spelling mistakes in code comments.\n\nSigned-off-by: Michael Vetter \nReviewed-by: Alice Ryhl \nReviewed-by: Benno Lossin \nLink: https://lore.kernel.org/r/20240819205731.2163-1-jubalh@iodoru.org\n[ Reworded slightly. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: kernel: fix typos in code comments"}},{"before":"47ac09b91befbb6a235ab620c32af719f8208399","after":"3c12f2e953fc1ea2f1f86e2cd399800eb960ce96","ref":"refs/heads/rust-fixes","pushedAt":"2024-08-21T10:47:24.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"docs: rust: remove unintended blockquote in Coding Guidelines\n\nAn unordered list in coding-guidelines.rst was indented, producing\na blockquote around it and making it look more indented than expected.\nRemove the indentation to only output an unordered list.\n\nReported-by: Miguel Ojeda \nCloses: https://github.com/Rust-for-Linux/linux/issues/1063\nFixes: d07479b211b7 (\"docs: add Rust documentation\")\nSigned-off-by: Vincent Woltmann \nLink: https://lore.kernel.org/r/20240816200339.2495875-1-vincent@woltmann.art\n[ Reworded title. - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"docs: rust: remove unintended blockquote in Coding Guidelines"}},{"before":"0d6e3e8d3677ee7b5cccf9bc002e18f140c02a4e","after":null,"ref":"refs/heads/rust-next-exports","pushedAt":"2024-08-20T08:40:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"}},{"before":"7d03eaab6e310f6f856950231615acff68952a1d","after":"4b34441608dbf0286d8346c4205f1fa6c6541fab","ref":"refs/heads/rust-dev","pushedAt":"2024-08-19T17:27:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"fbq","name":"Boqun Feng","path":"/fbq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/673448?s=80&v=4"},"commit":{"message":"rust: rbtree: add `RBTree::entry`\n\nThis mirrors the entry API [1] from the Rust standard library on\n`RBTree`. This API can be used to access the entry at a specific key and\nmake modifications depending on whether the key is vacant or occupied.\nThis API is useful because it can often be used to avoid traversing the\ntree multiple times.\n\nThis is used by binder to look up and conditionally access or insert a\nvalue, depending on whether it is there or not [2].\n\nLink: https://doc.rust-lang.org/stable/std/collections/btree_map/enum.Entry.html [1]\nLink: https://android-review.googlesource.com/c/kernel/common/+/2849906 [2]\nSigned-off-by: Alice Ryhl \nTested-by: Alice Ryhl \nReviewed-by: Boqun Feng \nSigned-off-by: Matt Gilbride \nLink: https://lore.kernel.org/r/20240819-b4-rbtree-v10-5-3b3b2c4d73af@google.com","shortMessageHtmlLink":"rust: rbtree: add RBTree::entry"}},{"before":"0eba65f0310d3c7d5516c7fd4c172d0bfa8b285b","after":"47ac09b91befbb6a235ab620c32af719f8208399","ref":"refs/heads/rust-fixes","pushedAt":"2024-08-19T13:04:47.000Z","pushType":"push","commitsCount":1013,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"Linux 6.11-rc4","shortMessageHtmlLink":"Linux 6.11-rc4"}},{"before":"c4d7f546dd9aa9780716cdb07416ca97264dce43","after":"e26fa546042add70944d018b930530d16b3cf626","ref":"refs/heads/rust-next","pushedAt":"2024-08-19T13:02:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: kbuild: auto generate helper exports\n\nThis removes the need to explicitly export all symbols.\n\nGenerate helper exports similarly to what's currently done for Rust\ncrates. These helpers are exclusively called from within Rust code and\ntherefore can be treated similar as other Rust symbols.\n\nSigned-off-by: Gary Guo \nReviewed-by: Boqun Feng \nTested-by: Boqun Feng \nLink: https://lore.kernel.org/r/20240817165302.3852499-1-gary@garyguo.net\n[ Fixed dependency path, reworded slightly, edited comment a bit and\n rebased on top of the changes made when applying Andreas' patch\n (e.g. no `README.md` anymore, so moved the edits). - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: kbuild: auto generate helper exports"}},{"before":null,"after":"0d6e3e8d3677ee7b5cccf9bc002e18f140c02a4e","ref":"refs/heads/rust-next-exports","pushedAt":"2024-08-18T23:36:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ojeda","name":"Miguel Ojeda","path":"/ojeda","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1054456?s=80&v=4"},"commit":{"message":"rust: kbuild: auto generate helper exports\n\nThis removes the need to explicitly export all symbols.\n\nGenerate helper exports similarly to what's currently done for Rust\ncrates. These helpers are exclusively called from within Rust code and\ntherefore can be treated similar as other Rust symbols.\n\nSigned-off-by: Gary Guo \nReviewed-by: Boqun Feng \nLink: https://lore.kernel.org/r/20240817165302.3852499-1-gary@garyguo.net\n[ Fixed dependency path, reworded slightly, edited comment a bit and\n rebased on top of the changes made when applying Andreas' patch\n (e.g. no `README.md` anymore, so moved the edits). - Miguel ]\nSigned-off-by: Miguel Ojeda ","shortMessageHtmlLink":"rust: kbuild: auto generate helper exports"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNlQxNjoxNDoxMy4wMDAwMDBazwAAAAS3o_Xb","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNlQxNjoxNDoxMy4wMDAwMDBazwAAAAS3o_Xb","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0xOFQyMzozNjoyOC4wMDAwMDBazwAAAASdgQ-g"}},"title":"Activity ยท Rust-for-Linux/linux"}