|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT/LIBMEMCACHED PATCH 6/7] Add patches folder
From: gaulthier gain <gaulthier.gain@xxxxxxxxx>
The first patch fixes an internal declaration with `trace.h` to avoid
conflicts with unikraft. The second removes the daemonize mode. The
third one renames the `stats_init` function to avoid conflicts.
Finally, the last patch removes the root user mode.
Signed-off-by: gaulthier gain <gaulthier.gain@xxxxxxxxx>
---
patches/0001-fix-trace-conflict.patch | 43 +++++++++
...d-to-avoid-conflicts-with-stats_init.patch | 44 +++++++++
patches/0003-remove-daemonize-mode.patch | 92 +++++++++++++++++++
patches/0004-remove-root-user-check.patch | 47 ++++++++++
4 files changed, 226 insertions(+)
create mode 100644 patches/0001-fix-trace-conflict.patch
create mode 100644
patches/0002-update-memcached-to-avoid-conflicts-with-stats_init.patch
create mode 100644 patches/0003-remove-daemonize-mode.patch
create mode 100644 patches/0004-remove-root-user-check.patch
diff --git a/patches/0001-fix-trace-conflict.patch
b/patches/0001-fix-trace-conflict.patch
new file mode 100644
index 0000000..1a25194
--- /dev/null
+++ b/patches/0001-fix-trace-conflict.patch
@@ -0,0 +1,43 @@
+From e22039da0cfc9ebd10b3483c1a5aa6224c390f88 Mon Sep 17 00:00:00 2001
+From: Gaulthier Gain <gaulthier.gain@xxxxxxxxx>
+Date: Tue, 20 Aug 2019 11:07:41 +0200
+Subject: [PATCH] Rename trace.h to avoid conflicts with unikraft
+
+Signed-off-by: Gaulthier Gain <gaulthier.gain@xxxxxxxxx>
+---
+ memcached.h | 2 +-
+ trace.h => memcachedtrace.h | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+ rename trace.h => memcachedtrace.h (98%)
+
+diff --git a/memcached.h b/memcached.h
+index a8dd59d..9258ed4 100644
+--- a/memcached.h
++++ b/memcached.h
+@@ -728,7 +728,7 @@ extern int daemonize(int nochdir, int noclose);
+ #include "assoc.h"
+ #include "items.h"
+ #include "crawler.h"
+-#include "trace.h"
++#include "memcachedtrace.h"
+ #include "hash.h"
+ #include "util.h"
+
+diff --git a/trace.h b/memcachedtrace.h
+similarity index 98%
+rename from trace.h
+rename to memcachedtrace.h
+index 94e585d..a2c422d 100644
+--- a/trace.h
++++ b/memcachedtrace.h
+@@ -1,5 +1,5 @@
+-#ifndef TRACE_H
+-#define TRACE_H
++#ifndef MEMCACHEDTRACE_H
++#define MEMCACHEDTRACE_H
+
+ #ifdef ENABLE_DTRACE
+ #include "memcached_dtrace.h"
+--
+2.11.0
+
diff --git
a/patches/0002-update-memcached-to-avoid-conflicts-with-stats_init.patch
b/patches/0002-update-memcached-to-avoid-conflicts-with-stats_init.patch
new file mode 100644
index 0000000..5af2976
--- /dev/null
+++ b/patches/0002-update-memcached-to-avoid-conflicts-with-stats_init.patch
@@ -0,0 +1,44 @@
+From 1e59864136b472d4f31757b420f374c1bb8acf83 Mon Sep 17 00:00:00 2001
+From: gaulthier gain <gaulthier.gain@xxxxxxxxx>
+Date: Mon, 10 Aug 2020 12:59:19 +0000
+Subject: [PATCH] Update memcached.c to avoid conflicts with stats_init
+
+Signed-off-by: gaulthier gain <gaulthier.gain@xxxxxxxxx>
+---
+ memcached.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/memcached.c b/memcached.c
+index 884469c..224016a 100644
+--- a/memcached.c
++++ b/memcached.c
+@@ -105,7 +105,7 @@ static void conn_set_state(conn *c, enum conn_states
state);
+ static int start_conn_timeout_thread();
+
+ /* stats */
+-static void stats_init(void);
++static void stats_init_memcached(void);
+ static void server_stats(ADD_STAT add_stats, conn *c);
+ static void process_stat_settings(ADD_STAT add_stats, void *c);
+ static void conn_to_str(const conn *c, char *addr, char *svr_addr);
+@@ -232,7 +232,7 @@ static rel_time_t realtime(const time_t exptime) {
+ }
+ }
+
+-static void stats_init(void) {
++static void stats_init_memcached(void) {
+ memset(&stats, 0, sizeof(struct stats));
+ memset(&stats_state, 0, sizeof(struct stats_state));
+ stats_state.accepting_conns = true; /* assuming we start in this state. */
+@@ -8554,7 +8554,7 @@ int main (int argc, char **argv) {
+
+ /* initialize other stuff */
+ logger_init();
+- stats_init();
++ stats_init_memcached();
+ conn_init();
+ bool reuse_mem = false;
+ void *mem_base = NULL;
+--
+2.17.1
+
diff --git a/patches/0003-remove-daemonize-mode.patch
b/patches/0003-remove-daemonize-mode.patch
new file mode 100644
index 0000000..1cdceb2
--- /dev/null
+++ b/patches/0003-remove-daemonize-mode.patch
@@ -0,0 +1,92 @@
+From 102035fe58ebfc77f1c3ff8415304f11059734fc Mon Sep 17 00:00:00 2001
+From: gaulthier gain <gaulthier.gain@xxxxxxxxx>
+Date: Mon, 10 Aug 2020 13:05:05 +0000
+Subject: [PATCH] Remove daemonize mode
+
+This patch temporary removes the daemonize mode of memcached which is
+based on `fork()`. Since this primitive is not yet supported in
+Unikraft, we disable it.
+
+Signed-off-by: gaulthier gain <gaulthier.gain@xxxxxxxxx>
+---
+ memcached.c | 22 ----------------------
+ 1 file changed, 22 deletions(-)
+
+diff --git a/memcached.c b/memcached.c
+index 224016a..5368542 100644
+--- a/memcached.c
++++ b/memcached.c
+@@ -6595,7 +6595,6 @@ static void usage(void) {
+ " if TLS/SSL is enabled, 'notls' prefix
can be used to\n"
+ " disable for specific listeners (-l
notls:<ip>:<port>) \n"
+ #endif
+- "-d, --daemon run as a daemon\n"
+ "-r, --enable-coredumps maximize core file limit\n"
+ "-u, --user=<user> assume identity of <username> (only
when run as root)\n"
+ "-m, --memory-limit=<num> item memory in megabytes (default: 64
MB)\n"
+@@ -7281,7 +7280,6 @@ static int _mc_meta_load_cb(const char *tag, void *ctx,
void *data) {
+ int main (int argc, char **argv) {
+ int c;
+ bool lock_memory = false;
+- bool do_daemonize = false;
+ bool preallocate = false;
+ int maxcore = 0;
+ char *username = NULL;
+@@ -7501,7 +7499,6 @@ int main (int argc, char **argv) {
+ "hiV" /* help, licence info, version */
+ "r" /* maximize core file limit */
+ "v" /* verbose */
+- "d" /* daemon mode */
+ "l:" /* interface to listen on */
+ "u:" /* user identity to run as */
+ "P:" /* save PID in file */
+@@ -7541,7 +7538,6 @@ int main (int argc, char **argv) {
+ {"version", no_argument, 0, 'V'},
+ {"enable-coredumps", no_argument, 0, 'r'},
+ {"verbose", optional_argument, 0, 'v'},
+- {"daemon", no_argument, 0, 'd'},
+ {"listen", required_argument, 0, 'l'},
+ {"user", required_argument, 0, 'u'},
+ {"pidfile", required_argument, 0, 'P'},
+@@ -7643,9 +7639,6 @@ int main (int argc, char **argv) {
+ settings.inter= strdup(optarg);
+ }
+ break;
+- case 'd':
+- do_daemonize = true;
+- break;
+ case 'r':
+ maxcore = 1;
+ break;
+@@ -8488,18 +8481,6 @@ int main (int argc, char **argv) {
+ init_sasl();
+ }
+
+- /* daemonize if requested */
+- /* if we want to ensure our ability to dump core, don't chdir to / */
+- if (do_daemonize) {
+- if (sigignore(SIGHUP) == -1) {
+- perror("Failed to ignore SIGHUP");
+- }
+- if (daemonize(maxcore, settings.verbose) == -1) {
+- fprintf(stderr, "failed to daemon() in order to daemonize\n");
+- exit(EXIT_FAILURE);
+- }
+- }
+-
+ /* lock paged memory if needed */
+ if (lock_memory) {
+ #ifdef HAVE_MLOCKALL
+@@ -8811,9 +8792,6 @@ int main (int argc, char **argv) {
+ restart_mmap_close();
+ }
+
+- /* remove the PID file if we're a daemon */
+- if (do_daemonize)
+- remove_pidfile(pid_file);
+ /* Clean up strdup() call for bind() address */
+ if (settings.inter)
+ free(settings.inter);
+--
+2.17.1
+
diff --git a/patches/0004-remove-root-user-check.patch
b/patches/0004-remove-root-user-check.patch
new file mode 100644
index 0000000..c5ff784
--- /dev/null
+++ b/patches/0004-remove-root-user-check.patch
@@ -0,0 +1,47 @@
+From ecacaab5b500780eb99d8f58e57b0688f6d3119e Mon Sep 17 00:00:00 2001
+From: gaulthier gain <gaulthier.gain@xxxxxxxxx>
+Date: Mon, 10 Aug 2020 13:39:28 +0000
+Subject: [PATCH] Remove root user check
+
+Since unikraft does not support multi-user support, this patch
+removes this feature.
+
+Signed-off-by: gaulthier gain <gaulthier.gain@xxxxxxxxx>
+---
+ memcached.c | 20 --------------------
+ 1 file changed, 20 deletions(-)
+
+diff --git a/memcached.c b/memcached.c
+index 884469c..63590c6 100644
+--- a/memcached.c
++++ b/memcached.c
+@@ -8463,26 +8463,6 @@ int main (int argc, char **argv) {
+ }
+ }
+
+- /* lose root privileges if we have them */
+- if (getuid() == 0 || geteuid() == 0) {
+- if (username == 0 || *username == '\0') {
+- fprintf(stderr, "can't run as root without the -u switch\n");
+- exit(EX_USAGE);
+- }
+- if ((pw = getpwnam(username)) == 0) {
+- fprintf(stderr, "can't find the user %s to switch to\n",
username);
+- exit(EX_NOUSER);
+- }
+- if (setgroups(0, NULL) < 0) {
+- fprintf(stderr, "failed to drop supplementary groups\n");
+- exit(EX_OSERR);
+- }
+- if (setgid(pw->pw_gid) < 0 || setuid(pw->pw_uid) < 0) {
+- fprintf(stderr, "failed to assume identity of user %s\n",
username);
+- exit(EX_OSERR);
+- }
+- }
+-
+ /* Initialize Sasl if -S was specified */
+ if (settings.sasl) {
+ init_sasl();
+--
+2.17.1
+
--
2.17.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |