Thread (9 messages) flat view 9 messages, 2 authors, 2020-06-25

Re: [PATCH ipsec-next v2 2/6] xfrm: replay: get rid of duplicated notification code

From: Sabrina Dubroca <sd@queasysnail.net>
Date: 2020-06-25 07:07:52

Hi Florian,

2020-06-24, 10:08:00 +0200, Florian Westphal wrote:
quoted hunk ↗ jump to hunk
After previous patch, we can consolidate some code:

xfrm_replay_notify, xfrm_replay_notify_bmp and _esn all contain the
same code at the end.

Remove it from xfrm_replay_notify_bmp/esn and reuse the one
in xfrm_replay_notify.

Signed-off-by: Florian Westphal <fw@strlen.de>
---
 net/xfrm/xfrm_replay.c | 22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)
diff --git a/net/xfrm/xfrm_replay.c b/net/xfrm/xfrm_replay.c
index e42a7afb8ee5..fac2f3af4c1a 100644
--- a/net/xfrm/xfrm_replay.c
+++ b/net/xfrm/xfrm_replay.c
@@ -56,10 +56,10 @@ void xfrm_replay_notify(struct xfrm_state *x, int event)
 		break;
 	case XFRM_REPLAY_MODE_BMP:
 		xfrm_replay_notify_bmp(x, event);
-		return;
+		goto notify;
 	case XFRM_REPLAY_MODE_ESN:
 		xfrm_replay_notify_esn(x, event);
-		return;
+		goto notify;
These two functions have some early returns that skip the
notification, but now the notification will be sent in all cases:

	static void xfrm_replay_notify_bmp(struct xfrm_state *x, int event)
	{
		<snip>

		switch (event) {
		case XFRM_REPLAY_UPDATE:
			if (...) {
				if (x->xflags & XFRM_TIME_DEFER)
					event = XFRM_REPLAY_TIMEOUT;
				else
					return;
			}

			break;


And this also changes the value that ends up in c.data.aevent. That
change will be lost after this patch.
quoted hunk ↗ jump to hunk
 	}
 
 	switch (event) {
@@ -86,6 +86,8 @@ void xfrm_replay_notify(struct xfrm_state *x, int event)
 	}
 
 	memcpy(&x->preplay, &x->replay, sizeof(struct xfrm_replay_state));
+
+notify:
 	c.event = XFRM_MSG_NEWAE;
 	c.data.aevent = event;
 	km_state_notify(x, &c);
-- 
Sabrina
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help