svn commit: r333453 - head/sys/contrib/ena-com
Marcin Wojtas
mw at FreeBSD.org
Thu May 10 09:25:52 UTC 2018
Author: mw
Date: Thu May 10 09:25:51 2018
New Revision: 333453
URL: https://svnweb.freebsd.org/changeset/base/333453
Log:
Apply fixes in ena-com
* Change ena-com BIT macro to work on unsigned value.
To make the shifting operations safer, they should be working on
unsigned values.
* Fix a mutex not owned ASSERT panic in ENA control path.
A thread calling cv_broadcast()/cv_signal() must hold the mutex used for
cv_wait(). Fix the ENA control path code that has this problem.
Submitted by: Krishna Yenduri <kyenduri at brkt.com>
Reviewed by: Michal Krawczyk <mk at semihalf.com>
Tested by: Michal Krawczyk <mk at semihalf.com>
Modified:
head/sys/contrib/ena-com/ena_plat.h
Directory Properties:
head/sys/contrib/ena-com/ (props changed)
Modified: head/sys/contrib/ena-com/ena_plat.h
==============================================================================
--- head/sys/contrib/ena-com/ena_plat.h Thu May 10 09:21:49 2018 (r333452)
+++ head/sys/contrib/ena-com/ena_plat.h Thu May 10 09:25:51 2018 (r333453)
@@ -165,7 +165,7 @@ static inline long PTR_ERR(const void *ptr)
#define GENMASK(h, l) (((1U << ((h) - (l) + 1)) - 1) << (l))
#define GENMASK_ULL(h, l) (((~0ULL) << (l)) & (~0ULL >> (64 - 1 - (h))))
-#define BIT(x) (1 << (x))
+#define BIT(x) (1UL << (x))
#define ENA_ABORT() BUG()
#define BUG() panic("ENA BUG")
@@ -244,7 +244,12 @@ static inline long PTR_ERR(const void *ptr)
timeout_us * hz / 1000 / 1000 ); \
mtx_unlock(&((waitqueue).mtx)); \
} while (0)
-#define ENA_WAIT_EVENT_SIGNAL(waitqueue) cv_broadcast(&((waitqueue).wq))
+#define ENA_WAIT_EVENT_SIGNAL(waitqueue) \
+ do { \
+ mtx_lock(&((waitqueue).mtx)); \
+ cv_broadcast(&((waitqueue).wq)); \
+ mtx_unlock(&((waitqueue).mtx)); \
+ } while (0)
#define dma_addr_t bus_addr_t
#define u8 uint8_t
More information about the svn-src-all
mailing list