diff options
| author | Michael Biebl <biebl@debian.org> | 2022-05-18 18:40:15 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2022-05-18 18:40:15 +0200 |
| commit | 133423d532ca75a3fc51e675288d9721d78ffdb0 (patch) | |
| tree | 1de2a4f608bd76c29657ae3ea76f4081794a7fce | |
| parent | 1a31bc3c63474ca02c83b02add85ea4e740e5597 (diff) | |
Cherry-pick a couple of fixes from upstream nm-1-38 branch
| -rw-r--r-- | debian/patches/c-rbtree-fix-alignment-assertion-on-m64k.patch | 56 | ||||
| -rw-r--r-- | debian/patches/device-don-t-require-a-hardware-address-for-DHCPv6.patch | 36 | ||||
| -rw-r--r-- | debian/patches/series | 2 |
3 files changed, 94 insertions, 0 deletions
diff --git a/debian/patches/c-rbtree-fix-alignment-assertion-on-m64k.patch b/debian/patches/c-rbtree-fix-alignment-assertion-on-m64k.patch new file mode 100644 index 00000000..c00cd520 --- /dev/null +++ b/debian/patches/c-rbtree-fix-alignment-assertion-on-m64k.patch @@ -0,0 +1,56 @@ +From: David Rheinsberg <david.rheinsberg@gmail.com> +Date: Wed, 18 May 2022 11:31:45 +0200 +Subject: c-rbtree: fix alignment assertion on m64k + +We want to assert that our alignment-guarantees do not exceed the +guarantees of the system-linker or system-allocator on the target +platform. Hence, we check against max_align_t. This is a lower bound, +but not the exact check we actually want. And as it turns out, on m64k +it is too low. Add a static check against 4-byte alignment for m64k as +a workaround. + +Reported-by: Michael Biebl +Signed-off-by: David Rheinsberg <david.rheinsberg@gmail.com> + +https://github.com/c-util/c-rbtree/issues/9 +https://github.com/c-util/c-rbtree/commit/eb778d39694a0f3389f2438bbc45fb21685a047d +(cherry picked from commit 78831d127fa169b26783ccaa6b534edfbb0adad4) +(cherry picked from commit a83c884fb6e13aad783d547691620d43bed4db84) +--- + src/c-rbtree/src/c-rbtree.c | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +diff --git a/src/c-rbtree/src/c-rbtree.c b/src/c-rbtree/src/c-rbtree.c +index 2f0e608..28de4d9 100644 +--- a/src/c-rbtree/src/c-rbtree.c ++++ b/src/c-rbtree/src/c-rbtree.c +@@ -35,12 +35,25 @@ + * CRBNode is 4-byte aligned, so the lower 2 bits are actually unused. We also + * sometimes store a pointer to the root-node, so make sure this one is also 4 + * byte aligned. +- * Note that there are actually some architectures where `max_align_t` is 4, so +- * we do not have much wiggle-room to extend this flag-set. ++ * ++ * Additionally, we want to avoid an alignment that is bigger than the ++ * alignment guaranteed by the system allocator or supported by the system ++ * linker. As there is no standard way to check this, we simply verify against ++ * `alignof(max_align_t)`, as this alignment must be supported by the ++ * toolchain. ++ * ++ * m64k is special here, as it only has a 2-byte max-alignment, but still ++ * guarantees a >=4-byte alignment on allocations. So hard-code the maximum for ++ * it. + */ +-static_assert(alignof(CRBNode) <= alignof(max_align_t), "Invalid RBNode alignment"); ++#ifdef __m68k__ ++# define C_RBTREE_MAX_ALIGN (C_MAX(4, alignof(max_align_t))) ++#else ++# define C_RBTREE_MAX_ALIGN (alignof(max_align_t)) ++#endif ++static_assert(alignof(CRBNode) <= C_RBTREE_MAX_ALIGN, "Invalid RBNode alignment"); + static_assert(alignof(CRBNode) >= 4, "Invalid CRBNode alignment"); +-static_assert(alignof(CRBTree) <= alignof(max_align_t), "Invalid RBTree alignment"); ++static_assert(alignof(CRBTree) <= C_RBTREE_MAX_ALIGN, "Invalid RBTree alignment"); + static_assert(alignof(CRBTree) >= 4, "Invalid CRBTree alignment"); + + /** diff --git a/debian/patches/device-don-t-require-a-hardware-address-for-DHCPv6.patch b/debian/patches/device-don-t-require-a-hardware-address-for-DHCPv6.patch new file mode 100644 index 00000000..09d48282 --- /dev/null +++ b/debian/patches/device-don-t-require-a-hardware-address-for-DHCPv6.patch @@ -0,0 +1,36 @@ +From: Beniamino Galvani <bgalvani@redhat.com> +Date: Mon, 16 May 2022 17:53:51 +0200 +Subject: device: don't require a hardware address for DHCPv6 + +DHCPv4 requires a hardware address, while DHCPv6 does not. + +Anyway, the DHCP manager already checks that an address is available +when needed, so drop the check here. + +Fixes: 58287cbcc0c8 ('core: rework IP configuration in NetworkManager using layer 3 configuration') + +https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1228 +(cherry picked from commit 9bc7278da369d9dd69cc7687a5d050dfea793faa) +(cherry picked from commit 1dbcc1c4412de43c6c5def417eef221b84535d7a) +--- + src/core/devices/nm-device.c | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c +index 70b52b1..9e2c1f9 100644 +--- a/src/core/devices/nm-device.c ++++ b/src/core/devices/nm-device.c +@@ -10117,13 +10117,6 @@ _dev_ipdhcpx_start(NMDevice *self, int addr_family) + + hwaddr = nmp_link_address_get_as_bytes(&pllink->l_address); + +- if (!IS_IPv4) { +- if (!hwaddr) { +- fail_reason = "interface has no MAC address to start DHCPv6"; +- goto out_fail; +- } +- } +- + request_broadcast = FALSE; + if (pllink) { + str = nmp_object_link_udev_device_get_property_value(NMP_OBJECT_UP_CAST(pllink), diff --git a/debian/patches/series b/debian/patches/series index a2d7e06d..cf412f3b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,3 @@ Force-online-state-with-unmanaged-devices.patch +c-rbtree-fix-alignment-assertion-on-m64k.patch +device-don-t-require-a-hardware-address-for-DHCPv6.patch |