From patchwork Fri Nov 15 09:06:17 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sonic Zhang X-Patchwork-Id: 291514 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ozlabs.org (Postfix) with ESMTP id F3E332C00BD for ; Fri, 15 Nov 2013 20:06:50 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id BA0808F6E9; Fri, 15 Nov 2013 09:06:49 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TqQztAdj7lcn; Fri, 15 Nov 2013 09:06:47 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id B55588F580; Fri, 15 Nov 2013 09:06:47 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id D10631C107B for ; Fri, 15 Nov 2013 09:06:46 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id CAB428F578 for ; Fri, 15 Nov 2013 09:06:46 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DSqU0L6gKZge for ; Fri, 15 Nov 2013 09:06:46 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pd0-f171.google.com (mail-pd0-f171.google.com [209.85.192.171]) by whitealder.osuosl.org (Postfix) with ESMTPS id 2D24A8F580 for ; Fri, 15 Nov 2013 09:06:46 +0000 (UTC) Received: by mail-pd0-f171.google.com with SMTP id z10so1672562pdj.2 for ; Fri, 15 Nov 2013 01:06:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=S7Vyf6sEFtqFaqTax+LcFfcDd/6voZjbvKrt/f5bnts=; b=zyK5c7R2uRKdN4I98kg5q5zEFj7n11nK0Boj8t5ytswkrzlaU4snzpvuzGiBAO/E2g FobYbBW+gEFlhkKKohdufzY5OBE2qnmm/rrkX6v5OOiU2yzl3DKLErjjYiKhEecfycAX YG9MmkEt2vzGvgCemLRD4fs52JdNvogF6Ynwy2ER4iPxe4CoQ1urHCbdALSce7TLLW2j 9JMuN68kRasWbeTm+1sPJX6rT5ibHqNYjiDTYDeU3dg/uKdd89NhuJPoCettrHMIWCiZ mJjwtbsn8P7YBcuskRFT9gMSkRrMZQjtRrXqJ3l/qYcVYRcXFDCSZGe7u4L/ibijXGBz MNOQ== X-Received: by 10.66.242.17 with SMTP id wm17mr5933579pac.102.1384506405843; Fri, 15 Nov 2013 01:06:45 -0800 (PST) Received: from localhost.localdomain ([180.166.220.34]) by mx.google.com with ESMTPSA id dq3sm3048730pbc.35.2013.11.15.01.06.42 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 15 Nov 2013 01:06:45 -0800 (PST) From: sonic.adi@gmail.com To: Thomas Petazzoni , buildroot@busybox.net Date: Fri, 15 Nov 2013 17:06:17 +0800 Message-Id: <1384506378-2818-1-git-send-email-Sonic.adi@gmail.com> X-Mailer: git-send-email 1.8.2.3 Cc: Sonic Zhang Subject: [Buildroot] [PATCH v2 1/3] e2fsprogs: nommu: Add patch to use vfork in nommu arch. X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net From: Sonic Zhang Signed-off-by: Sonic Zhang --- .../e2fsprogs-0002-add-nommu-support.patch | 235 +++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 package/e2fsprogs/e2fsprogs-0002-add-nommu-support.patch diff --git a/package/e2fsprogs/e2fsprogs-0002-add-nommu-support.patch b/package/e2fsprogs/e2fsprogs-0002-add-nommu-support.patch new file mode 100644 index 0000000..77d4603 --- /dev/null +++ b/package/e2fsprogs/e2fsprogs-0002-add-nommu-support.patch @@ -0,0 +1,235 @@ +Patch to use vfork other than fork in nommu arch. + +Signed-off-by: Sonic Zhang + +--- e2fsprogs-1.42.4/e2fsck/logfile.c 2012-05-29 09:29:48.000000000 +0800 ++++ e2fsprogs-1.42.4.nommu/e2fsck/logfile.c 2012-09-24 17:49:18.878104451 +0800 +@@ -220,7 +220,11 @@ + exit(1); + } + ++#ifndef HAVE_FORK ++ pid = vfork(); ++#else + pid = fork(); ++#endif + if (pid < 0) { + perror("fork"); + exit(1); +@@ -264,7 +268,11 @@ + outbufsize -= c; + cp += c; + } ++#ifndef HAVE_FORK ++ _exit(0); ++#else + exit(0); ++#endif + } + + close(fds[0]); +--- e2fsprogs-1.42.4/lib/ss/pager.c 2012-03-19 02:18:33.000000000 +0800 ++++ e2fsprogs-1.42.4.nommu/lib/ss/pager.c 2012-09-24 17:54:33.862356418 +0800 +@@ -79,7 +79,11 @@ + if (pipe(filedes) != 0) + return(-1); + ++#ifndef HAVE_FORK ++ switch(vfork()) { ++#else + switch(fork()) { ++#endif + case -1: + return(-1); + case 0: +--- e2fsprogs-1.42.4/lib/ss/help.c 2012-03-19 02:18:33.000000000 +0800 ++++ e2fsprogs-1.42.4.nommu/lib/ss/help.c 2012-09-24 17:55:00.326105930 +0800 +@@ -107,7 +107,11 @@ + free(buf); + return; + } ++#ifndef HAVE_FORK ++ switch (child = vfork()) { ++#else + switch (child = fork()) { ++#endif + case -1: + ss_perror(sci_idx, errno, "Can't fork for pager"); + return; +--- e2fsprogs-1.42.4/lib/fpopen.c 2012-03-19 02:18:33.000000000 +0800 ++++ e2fsprogs-1.42.4.nommu/lib/fpopen.c 2012-09-24 17:55:54.050106645 +0800 +@@ -94,7 +94,11 @@ + return NULL; + + /* Fork and execute the correct program. */ ++#ifndef HAVE_FORK ++ if ((pid = vfork()) < 0) { ++#else + if ((pid = fork()) < 0) { ++#endif + perror("fork"); + return NULL; + } else if (pid == 0) { +@@ -109,7 +113,11 @@ + } + (void) execvp(prog, argv); + perror(prog); ++#ifndef HAVE_FORK ++ _exit(1); ++#else + exit(1); ++#endif + } + return fdopen(do_stdin ? fds[1] : fds[0], mode); + } +--- e2fsprogs-1.42.4/lib/uuid/gen_uuid.c 2012-03-19 02:18:33.000000000 +0800 ++++ e2fsprogs-1.42.4.nommu/lib/uuid/gen_uuid.c 2012-09-24 17:56:41.186106057 +0800 +@@ -504,11 +504,19 @@ + if (access_ret == 0 && (st.st_mode & (S_ISUID | S_ISGID)) == 0) + access_ret = access(UUIDD_DIR, W_OK); + if (access_ret == 0 && start_attempts++ < 5) { ++#ifndef HAVE_FORK ++ if ((pid = vfork()) == 0) { ++#else + if ((pid = fork()) == 0) { ++#endif + close_all_fds(); + execl(uuidd_path, "uuidd", "-qT", "300", + (char *) NULL); ++#ifndef HAVE_FORK ++ _exit(1); ++#else + exit(1); ++#endif + } + (void) waitpid(pid, 0, 0); + if (connect(s, (const struct sockaddr *) &srv_addr, +--- e2fsprogs-1.42.4/misc/uuidd.c 2012-03-19 02:18:33.000000000 +0800 ++++ e2fsprogs-1.42.4.nommu/misc/uuidd.c 2012-09-24 17:57:49.630106531 +0800 +@@ -56,7 +56,11 @@ + static void die(const char *msg) + { + perror(msg); ++#ifndef HAVE_FORK ++ _exit(1); ++#else + exit(1); ++#endif + } + + static void create_daemon(void) +@@ -64,7 +68,11 @@ + pid_t pid; + uid_t euid; + ++#ifndef HAVE_FORK ++ pid = vfork(); ++#else + pid = fork(); ++#endif + if (pid == -1) { + perror("fork"); + exit(1); +--- e2fsprogs-1.42.4/misc/fsck.c 2012-04-27 06:44:12.000000000 +0800 ++++ e2fsprogs-1.42.4.nommu/misc/fsck.c 2012-09-24 17:52:49.297070304 +0800 +@@ -491,7 +491,11 @@ + /* Fork and execute the correct program. */ + if (noexecute) + pid = -1; ++#ifndef HAVE_FORK ++ else if ((pid = vfork()) < 0) { ++#else + else if ((pid = fork()) < 0) { ++#endif + perror("fork"); + free(inst); + return errno; +@@ -501,7 +505,11 @@ + (void) execv(s, argv); + perror(argv[0]); + free(inst); ++#ifndef HAVE_FORK ++ _exit(EXIT_ERROR); ++#else + exit(EXIT_ERROR); ++#endif + } + + for (i=0; i < argc; i++) +@@ -641,10 +649,18 @@ + * time to set up the signal handler + */ + if (inst2->start_time < time(0)+2) { ++#ifndef HAVE_FORK ++ if (vfork() == 0) { ++#else + if (fork() == 0) { ++#endif + sleep(1); + kill(inst2->pid, SIGUSR1); ++#ifndef HAVE_FORK ++ _exit(0); ++#else + exit(0); ++#endif + } + } else + kill(inst2->pid, SIGUSR1); +--- e2fsprogs-1.42.4/misc/logsave.c 2012-03-19 02:18:33.000000000 +0800 ++++ e2fsprogs-1.42.4.nommu/misc/logsave.c 2012-09-24 17:51:18.062105881 +0800 +@@ -181,7 +181,11 @@ + #endif + #endif + ++#ifndef HAVE_FORK ++ pid = vfork(); ++#else + pid = fork(); ++#endif + if (pid < 0) { + perror("vfork"); + exit(1); +@@ -193,7 +197,11 @@ + + execvp(argv[0], argv); + perror(argv[0]); ++#ifndef HAVE_FORK ++ _exit(1); ++#else + exit(1); ++#endif + } + child_pid = pid; + close(fds[1]); +@@ -307,7 +315,11 @@ + send_output("----------------\n", 0, send_flag); + + if (outbuf) { ++#ifndef HAVE_FORK ++ pid = vfork(); ++#else + pid = fork(); ++#endif + if (pid < 0) { + perror("fork"); + exit(1); +@@ -329,5 +341,9 @@ + if (outfd >= 0) + close(outfd); + ++#ifndef HAVE_FORK ++ _exit(rc); ++#else + exit(rc); ++#endif + } +--- e2fsprogs-1.42.8/configure.in.old 2013-11-11 15:31:35.626098053 +0800 ++++ e2fsprogs-1.42.8/configure.in 2013-11-11 15:31:08.652956982 +0800 +@@ -1020,6 +1020,7 @@ + fallocate64 + fchown + fdatasync ++ fork + fstat64 + ftruncate64 + getdtablesize