summarylogtreecommitdiffstats
path: root/openonload-201606-bug63982-ilog2.patch
blob: dc6414d51eec70bce32648f6fc2502b282977bec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
diff --git a/src/lib/efrm/vi_resource_alloc.c b/src/lib/efrm/vi_resource_alloc.c
--- a/src/lib/efrm/vi_resource_alloc.c
+++ b/src/lib/efrm/vi_resource_alloc.c
@@ -1432,6 +1432,15 @@
 
 	qso->q_len_entries = n_q_entries;
 	qso->q_len_bytes = efrm_vi_q_bytes(virs, q_type, n_q_entries);
+
+	/* This value should always be positive, but if we don't check for this
+	 * explicitly, some compilers will assume that undefined logarithms
+	 * can be taken in get_order() and will generate code that won't link.
+	 * See bug63982. */
+	EFRM_ASSERT(qso->q_len_bytes > 0);
+	if (qso->q_len_bytes <= 0)
+		return -EINVAL;
+
 	qso->q_len_page_order = get_order(qso->q_len_bytes);
 	return 0;
 }
--- a/src/include/onload/version.h
+++ b/src/include/onload/version.h
@@ -29,7 +29,7 @@


 #ifndef ONLOAD_VERSION
-# define ONLOAD_VERSION "201606"
+# define ONLOAD_VERSION "201606-patch63982"
 #endif

 #define ONLOAD_PRODUCT "OpenOnload"