diff options
Diffstat (limited to 'openonload-201606-bug63982-ilog2.patch')
-rw-r--r-- | openonload-201606-bug63982-ilog2.patch | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/openonload-201606-bug63982-ilog2.patch b/openonload-201606-bug63982-ilog2.patch new file mode 100644 index 000000000000..dc6414d51eec --- /dev/null +++ b/openonload-201606-bug63982-ilog2.patch @@ -0,0 +1,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" + |