Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit efff3931 authored by Neeraj Upadhyay's avatar Neeraj Upadhyay
Browse files

msm_rtb: Evaluate parameter only once in reads/writes



This reverts commit fc44c0ba ("msm_rtb: Don't lose
the __user tag on relaxed reads/writes"). This causes
address parameter, with side effects, to be evaluated
more than once.

Change-Id: Ib37665763736bdf562afcc8335b014a2724a7598
Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
parent fc44c0ba
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -69,10 +69,11 @@ int uncached_logk(enum logk_event_type log_type, void *data);
/* Override the #defines in asm/io.h with the logged ones */
#define __raw_read_logged(a, _l, _t)    ({ \
	_t __a; \
	void *_addr = (void *)(a); \
	int _ret; \
	_ret = uncached_logk(LOGK_READL, (__force void *) a); \
	_ret = uncached_logk(LOGK_READL, _addr); \
	ETB_WAYPOINT; \
	__a = __raw_read##_l(a); \
	__a = __raw_read##_l(_addr); \
	if (_ret) \
		LOG_BARRIER; \
	__a; \
@@ -135,9 +136,10 @@ int uncached_logk(enum logk_event_type log_type, void *data);

#define __raw_write_logged(v, a, _t) ({ \
	int _ret; \
	_ret = uncached_logk(LOGK_WRITEL, (__force void *) a); \
	void *_addr = (void *)(a); \
	_ret = uncached_logk(LOGK_WRITEL, _addr); \
	ETB_WAYPOINT; \
	__raw_write##_t((v), a); \
	__raw_write##_t((v), _addr); \
	if (_ret) \
		LOG_BARRIER; \
	})