busybox: squashed commit of merging cm-12.1

With fixes to LOCAL_C_INCLUDES for libsepol in M and fixed
some missing includes to enable building for 64 bit devices

Conflicts:
	Android.mk
	android/libc/arch-x86/syscalls/swapoff.S
	android/libc/arch-x86/syscalls/swapon.S
	android/libc/arch-x86/syscalls/sysinfo.S
	android/librpc/pmap_rmt.c
	android/reboot.c
	include-full/copy-current.sh
	include-minimal/copy-current.sh
	include/platform.h
	networking/interface.c
	networking/nslookup.c

Change-Id: If6092fa87f3d21190db1af4f70daa150eb462660
diff --git a/miscutils/setsid.c b/miscutils/setsid.c
index ad2c8a4..637081b 100644
--- a/miscutils/setsid.c
+++ b/miscutils/setsid.c
@@ -31,7 +31,17 @@
 
 	/* setsid() is allowed only when we are not a process group leader.
 	 * Otherwise our PID serves as PGID of some existing process group
-	 * and cannot be used as PGID of a new process group. */
+	 * and cannot be used as PGID of a new process group.
+	 *
+	 * Example: setsid() below fails when run alone in interactive shell:
+	 *  $ setsid PROG
+	 * because shell's child (setsid) is put in a new process group.
+	 * But doesn't fail if shell is not interactive
+	 * (and therefore doesn't create process groups for pipes),
+	 * or if setsid is not the first process in the process group:
+	 *  $ true | setsid PROG
+	 * or if setsid is executed in backquotes (`setsid PROG`)...
+	 */
 	if (setsid() < 0) {
 		pid_t pid = fork_or_rexec(argv);
 		if (pid != 0) {
@@ -43,7 +53,7 @@
 			 * However, the code is larger and upstream
 			 * does not do such trick.
 			 */
-			exit(EXIT_SUCCESS);
+			return EXIT_SUCCESS;
 		}
 
 		/* child */