---
# System prepended metadata

title: Meeting 2023-02-22
tags: [meeting notes]

---

# Meeting 2023-02-22

* [ ] `krealloc` alignment guarantee
    * `kmalloc()` guarantees "aligned to size" for size is a power of 2
    * otherwise the alignment is `SLAB_MINALIGN` (usually is `size_of::<usize>()` )
    * right now, our allocator is just
        * `bindings::krealloc(ptr::null(), layout.size(), bindings::GFP_KERNEL)`
    * WIP fix: https://github.com/fbq/linux-rust/commit/d168fc8ca37eb4c2b196f26e0a2ddaeac84f3bad
    * [ ] is this a safety issue?
    * Not found any real problem yet, but in theory
    ```rust
    #[repr(align(64))]
    struct A64 {
        ...    
    }

    let b = Box::new(A64 {});

    // Maybe triggerred.
    assert!((b.leak() as *mut _ as usize) % 64 == 0);
    ```
* If size is not a power of two, and alignment >= SLAB_MINALIGN
* align to powers of two 

* if size == k * 2^n, aligned to 2^n
    * can we have C side to guarantee this?

* If `size % align != 0` and `align > SLAB_MINALIGN`, then pass `size + align - size%align` to `kmalloc`.
