FreeBSD Bugzilla – Attachment 200960 Details for
Bug 234442
libnetgraph race condition
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
atomically increment gMsgId
diff (text/plain), 1.40 KB, created by
Mark Johnston
on 2019-01-09 16:55:12 UTC
(
hide
)
Description:
atomically increment gMsgId
Filename:
MIME Type:
Creator:
Mark Johnston
Created:
2019-01-09 16:55:12 UTC
Size:
1.40 KB
patch
obsolete
>diff --git a/lib/libnetgraph/msg.c b/lib/libnetgraph/msg.c >index c94645997acb..061bdc233ff5 100644 >--- a/lib/libnetgraph/msg.c >+++ b/lib/libnetgraph/msg.c >@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); > #include <sys/types.h> > #include <sys/socket.h> > #include <stdarg.h> >+#include <stdatomic.h> > #include <netgraph/ng_message.h> > #include <netgraph/ng_socket.h> > >@@ -51,7 +52,7 @@ __FBSDID("$FreeBSD$"); > #include "internal.h" > > /* Next message token value */ >-static int gMsgId; >+static _Atomic(unsigned int) gMsgId; > > /* For delivering both messages and replies */ > static int NgDeliverMsg(int cs, const char *path, >@@ -72,9 +73,7 @@ NgSendMsg(int cs, const char *path, > memset(&msg, 0, sizeof(msg)); > msg.header.version = NG_VERSION; > msg.header.typecookie = cookie; >- if (++gMsgId < 0) >- gMsgId = 1; >- msg.header.token = gMsgId; >+ msg.header.token = atomic_fetch_add(&gMsgId, 1) & INT_MAX; > msg.header.flags = NGF_ORIG; > msg.header.cmd = cmd; > snprintf((char *)msg.header.cmdstr, NG_CMDSTRSIZ, "cmd%d", cmd); >@@ -143,9 +142,7 @@ NgSendAsciiMsg(int cs, const char *path, const char *fmt, ...) > > /* Now send binary version */ > binary = (struct ng_mesg *)reply->data; >- if (++gMsgId < 0) >- gMsgId = 1; >- binary->header.token = gMsgId; >+ binary->header.token = atomic_fetch_add(&gMsgId, 1) & INT_MAX; > binary->header.version = NG_VERSION; > if (NgDeliverMsg(cs, > path, binary, binary->data, binary->header.arglen) < 0) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 234442
:
200557
| 200960