aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@gmail.com>2023-05-21 18:30:14 +0200
committerDaniel Golle <daniel@makrotopia.org>2023-05-24 19:25:39 +0100
commite22fba1694376fd1396fe7a7aaedb1273c66f094 (patch)
tree9298d6d9bc9e55b53d40c5d8f4b7d9de201a12c3
parent6b9f405324d1767aceb4993933336da12a55bf32 (diff)
downloadupstream-e22fba1694376fd1396fe7a7aaedb1273c66f094.tar.gz
upstream-e22fba1694376fd1396fe7a7aaedb1273c66f094.tar.bz2
upstream-e22fba1694376fd1396fe7a7aaedb1273c66f094.zip
uml: fix build error due to frame size > 1024
the UML build fails during the kernel build: | arch/um/drivers/net_kern.c: In function 'compute_hash': | arch/um/drivers/net_kern.c:322:1: error: the frame size of 1072 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] | 322 | } | | ^ |cc1: all warnings being treated as errors The compute_hash() function is added by our patch: 102-pseudo-random-mac.patch Instead of allocating a 1024 byte buffer on the stack for the SHA1 digest input, let's allocate the data on the heap. We should be able to do that since crypto_alloc_ahash and ahash_request_alloc also need to allocate structures on the heap. Signed-off-by: Christian Lamparter <chunkeey@gmail.com> (cherry picked from commit aed2569d3780cab1a1a2d75c9f9e3fe413a9844d) Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r--target/linux/uml/patches-5.15/102-pseudo-random-mac.patch24
1 files changed, 14 insertions, 10 deletions
diff --git a/target/linux/uml/patches-5.15/102-pseudo-random-mac.patch b/target/linux/uml/patches-5.15/102-pseudo-random-mac.patch
index 925b9d7710..045d2d0dbd 100644
--- a/target/linux/uml/patches-5.15/102-pseudo-random-mac.patch
+++ b/target/linux/uml/patches-5.15/102-pseudo-random-mac.patch
@@ -49,7 +49,7 @@ Applies to vanilla kernel 3.9.4.
#define DRIVER_NAME "uml-netdev"
static DEFINE_SPINLOCK(opened_lock);
-@@ -274,9 +282,51 @@ static const struct ethtool_ops uml_net_
+@@ -274,9 +282,55 @@ static const struct ethtool_ops uml_net_
.get_ts_info = ethtool_op_get_ts_info,
};
@@ -59,24 +59,26 @@ Applies to vanilla kernel 3.9.4.
+ * * an interface name. */
+static int compute_hash(const char *umid, const char *ifname, char *hash)
+{
-+ struct ahash_request *desc;
-+ struct crypto_ahash *tfm;
++ struct ahash_request *desc = NULL;
++ struct crypto_ahash *tfm = NULL;
+ struct scatterlist sg;
-+ char vmif[1024];
-+ int ret;
++ char *vmif = NULL;
++ int ret = -ENOMEM;
++
++ vmif = kmalloc(1024, GFP_KERNEL);
++ if (!vmif)
++ goto out;
+
+ strcpy (vmif, umid);
+ strcat (vmif, ifname);
+
+ tfm = crypto_alloc_ahash("sha1", 0, CRYPTO_ALG_ASYNC);
+ if (IS_ERR(tfm))
-+ return -ENOMEM;
++ goto out;
+
+ desc = ahash_request_alloc(tfm, GFP_KERNEL);
-+ if (!desc) {
-+ ret = -ENOMEM;
++ if (!desc)
+ goto out;
-+ }
+
+ crypto_ahash_clear_flags(tfm, ~0);
+
@@ -88,6 +90,8 @@ Applies to vanilla kernel 3.9.4.
+ ret = crypto_ahash_digest(desc);
+out:
+ crypto_free_ahash(tfm);
++ ahash_request_free(desc);
++ kfree(vmif);
+
+ return ret;
+}
@@ -101,7 +105,7 @@ Applies to vanilla kernel 3.9.4.
char *end;
int i;
-@@ -319,9 +369,26 @@ void uml_net_setup_etheraddr(struct net_
+@@ -319,9 +373,26 @@ void uml_net_setup_etheraddr(struct net_
return;
random: