diff --git a/.gitignore b/.gitignore
index b7840e4..53bd540 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@
 *.o.*
 *.a
 *.s
+Kbuild
 
 #
 # Never ignore these
diff --git a/archival/unzip.c b/archival/unzip.c
index 1d3291a..84081c0 100644
--- a/archival/unzip.c
+++ b/archival/unzip.c
@@ -150,23 +150,26 @@
 
 
 #if ENABLE_DESKTOP
+
+#define PEEK_FROM_END 16384
+
 /* NB: does not preserve file position! */
 static uint32_t find_cdf_offset(void)
 {
-	unsigned char buf[1024];
 	cde_header_t cde_header;
 	unsigned char *p;
 	off_t end;
+	unsigned char *buf = xzalloc(PEEK_FROM_END);
 
 	end = xlseek(zip_fd, 0, SEEK_END);
-	end -= 1024;
+	end -= PEEK_FROM_END;
 	if (end < 0)
 		end = 0;
 	xlseek(zip_fd, end, SEEK_SET);
-	full_read(zip_fd, buf, 1024);
+	full_read(zip_fd, buf, PEEK_FROM_END);
 
 	p = buf;
-	while (p <= buf + 1024 - CDE_HEADER_LEN - 4) {
+	while (p <= buf + PEEK_FROM_END - CDE_HEADER_LEN - 4) {
 		if (*p != 'P') {
 			p++;
 			continue;
@@ -180,8 +183,10 @@
 		/* we found CDE! */
 		memcpy(cde_header.raw, p + 1, CDE_HEADER_LEN);
 		FIX_ENDIANNESS_CDE(cde_header);
+		free(buf);
 		return cde_header.formatted.cdf_offset;
 	}
+	//free(buf);
 	bb_error_msg_and_die("can't find file table");
 };
 
diff --git a/e2fsprogs/old_e2fsprogs/e2fsck.c b/e2fsprogs/old_e2fsprogs/e2fsck.c
index 7384bc4..4c4c78d 100644
--- a/e2fsprogs/old_e2fsprogs/e2fsck.c
+++ b/e2fsprogs/old_e2fsprogs/e2fsck.c
@@ -29,10 +29,6 @@
  * Licensed under GPLv2 or later, see file License in this tarball for details.
  */
 
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE 1 /* get strnlen() */
-#endif
-
 #include "e2fsck.h"	/*Put all of our defines here to clean things up*/
 
 #define _(x) x
diff --git a/libbb/get_line_from_file.c b/libbb/get_line_from_file.c
index 3cb46d2..cbfb45b 100644
--- a/libbb/get_line_from_file.c
+++ b/libbb/get_line_from_file.c
@@ -9,11 +9,6 @@
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-/* for getline() [GNUism]
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE 1
-#endif
-*/
 #include "libbb.h"
 
 /* This function reads an entire line from a text file, up to a newline
diff --git a/modutils/depmod.c b/modutils/depmod.c
index 4718c4d..c734f14 100644
--- a/modutils/depmod.c
+++ b/modutils/depmod.c
@@ -8,8 +8,6 @@
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-#undef _GNU_SOURCE
-#define _GNU_SOURCE
 #include "libbb.h"
 #include "modutils.h"
 #include <sys/utsname.h> /* uname() */
diff --git a/shell/ash.c b/shell/ash.c
index 90680e8..f581b5b 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -36,16 +36,11 @@
 
 #define JOBS ENABLE_ASH_JOB_CONTROL
 
-#if DEBUG
-# ifndef _GNU_SOURCE
-#  define _GNU_SOURCE
-# endif
-#endif
-
 #include "busybox.h" /* for applet_names */
 #include <paths.h>
 #include <setjmp.h>
 #include <fnmatch.h>
+#include <sys/times.h>
 
 #include "shell_common.h"
 #include "math.h"
@@ -7251,6 +7246,7 @@
 #if ENABLE_FEATURE_SH_STANDALONE
 	if (applet_no >= 0) {
 		if (APPLET_IS_NOEXEC(applet_no)) {
+			clearenv();
 			while (*envp)
 				putenv(*envp++);
 			run_applet_no_and_exit(applet_no, argv);
@@ -7310,7 +7306,7 @@
 #endif
 
 	clearredir(/*drop:*/ 1);
-	envp = listvars(VEXPORT, VUNSET, 0);
+	envp = listvars(VEXPORT, VUNSET, /*end:*/ NULL);
 	if (strchr(argv[0], '/') != NULL
 #if ENABLE_FEATURE_SH_STANDALONE
 	 || (applet_no = find_applet_by_name(argv[0])) >= 0
@@ -12468,7 +12464,7 @@
 	struct tblentry *cmdp;
 
 	cmdp = cmdlookup(name, 0);
-	if (cmdp!= NULL && cmdp->cmdtype == CMDFUNCTION)
+	if (cmdp != NULL && cmdp->cmdtype == CMDFUNCTION)
 		delete_cmd_entry();
 }
 
@@ -12485,7 +12481,7 @@
 	int flag = 0;
 	int ret = 0;
 
-	while ((i = nextopt("vf")) != '\0') {
+	while ((i = nextopt("vf")) != 0) {
 		flag = i;
 	}
 
@@ -12502,11 +12498,6 @@
 	return ret & 1;
 }
 
-
-/*      setmode.c      */
-
-#include <sys/times.h>
-
 static const unsigned char timescmd_str[] ALIGN1 = {
 	' ',  offsetof(struct tms, tms_utime),
 	'\n', offsetof(struct tms, tms_stime),
@@ -12514,11 +12505,10 @@
 	'\n', offsetof(struct tms, tms_cstime),
 	0
 };
-
 static int FAST_FUNC
 timescmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 {
-	long clk_tck, s, t;
+	unsigned long clk_tck, s, t;
 	const unsigned char *p;
 	struct tms buf;
 
@@ -12529,18 +12519,20 @@
 	do {
 		t = *(clock_t *)(((char *) &buf) + p[1]);
 		s = t / clk_tck;
-		out1fmt("%ldm%ld.%.3lds%c",
-			s/60, s%60,
-			((t - s * clk_tck) * 1000) / clk_tck,
+		t = t % clk_tck;
+		out1fmt("%lum%lu.%03lus%c",
+			s / 60, s % 60,
+			(t * 1000) / clk_tck,
 			p[0]);
-	} while (*(p += 2));
+		p += 2;
+	} while (*p);
 
 	return 0;
 }
 
 #if ENABLE_SH_MATH_SUPPORT
 /*
- * The let builtin. partial stolen from GNU Bash, the Bourne Again SHell.
+ * The let builtin. Partially stolen from GNU Bash, the Bourne Again SHell.
  * Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc.
  *
  * Copyright (C) 2003 Vladimir Oleynik <dzo@simtreas.ru>
@@ -12559,18 +12551,6 @@
 
 	return !i;
 }
-#endif /* SH_MATH_SUPPORT */
-
-
-/* ============ miscbltin.c
- *
- * Miscellaneous builtins.
- */
-
-#undef rflag
-
-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 1
-typedef enum __rlimit_resource rlim_t;
 #endif
 
 /*
diff --git a/shell/ash_test/ash-standalone/var_standalone1.right b/shell/ash_test/ash-standalone/var_standalone1.right
new file mode 100644
index 0000000..37457fd
--- /dev/null
+++ b/shell/ash_test/ash-standalone/var_standalone1.right
@@ -0,0 +1 @@
+Done: 1
diff --git a/shell/ash_test/ash-standalone/var_standalone1.tests b/shell/ash_test/ash-standalone/var_standalone1.tests
new file mode 100755
index 0000000..1e905ba
--- /dev/null
+++ b/shell/ash_test/ash-standalone/var_standalone1.tests
@@ -0,0 +1,2 @@
+VAR=42 $THIS_SH -c 'unset VAR; env | grep ^VAR'
+echo Done: $?
diff --git a/testsuite/cpio.tests b/testsuite/cpio.tests
index 42e3ff8..5b397b0 100755
--- a/testsuite/cpio.tests
+++ b/testsuite/cpio.tests
@@ -97,14 +97,14 @@
 " "" ""
 SKIP=
 
-# chown on a link was affecting file, dropping its sgid bits
+# chown on a link was affecting file, dropping its suid/sgid bits
 rm -rf cpio.testdir
 optional FEATURE_CPIO_O
 mkdir cpio.testdir
 touch cpio.testdir/file
-chmod 6755 cpio.testdir/file  # set the suid/sgid bit
+chmod 6755 cpio.testdir/file  # sets suid/sgid bits
 ln -sf file cpio.testdir/link
-testing "cpio restores sgid bits" \
+testing "cpio restores suid/sgid bits" \
 "cd cpio.testdir && { echo file; echo link; } | cpio -ovHnewc >pack.cpio && rm ???? && cpio -idmvu <pack.cpio 2>/dev/null;
  stat -c '%a %n' file" \
 "\
diff --git a/util-linux/Config.src b/util-linux/Config.src
index e971259..3c3e05e 100644
--- a/util-linux/Config.src
+++ b/util-linux/Config.src
@@ -472,7 +472,7 @@
 
 config VOLUMEID
 	bool #No description makes it a hidden option
-	default y
+	default n
 
 config FEATURE_VOLUMEID_EXT
 	bool "Ext filesystem"
@@ -725,7 +725,7 @@
 	  The idea is to use such virtual filesystems in /etc/fstab.
 
 config FEATURE_MOUNT_LABEL
-	bool "Support specifiying devices by label or UUID"
+	bool "Support specifying devices by label or UUID"
 	default y
 	depends on MOUNT
 	select VOLUMEID
@@ -930,7 +930,7 @@
 	  If you must use this, keep in mind it's inherently brittle (for
 	  example a mount under chroot won't update it), can't handle modern
 	  features like separate per-process filesystem namespaces, requires
-	  that your /etc directory be writeable, tends to get easily confused
+	  that your /etc directory be writable, tends to get easily confused
 	  by --bind or --move mounts, won't update if you rename a directory
 	  that contains a mount point, and so on. (In brief: avoid.)
 
diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c
index 416271b..3da2e23 100644
--- a/util-linux/hwclock.c
+++ b/util-linux/hwclock.c
@@ -12,13 +12,6 @@
 #include <sys/utsname.h>
 #include "rtc_.h"
 
-#if ENABLE_FEATURE_HWCLOCK_LONG_OPTIONS
-# ifndef _GNU_SOURCE
-#  define _GNU_SOURCE
-# endif
-#endif
-
-
 /* diff code is disabled: it's not sys/hw clock diff, it's some useless
  * "time between hwclock was started and we saw CMOS tick" quantity.
  * It's useless since hwclock is started at a random moment,
diff --git a/util-linux/mkfs_ext2.c b/util-linux/mkfs_ext2.c
index fd54734..14feb92 100644
--- a/util-linux/mkfs_ext2.c
+++ b/util-linux/mkfs_ext2.c
@@ -140,7 +140,7 @@
 // only for directories, which never need i_size_high).
 //
 // Standard mke2fs creates a filesystem with 256-byte inodes if it is
-// bigger than 0.5GB. So far, we do not do this.
+// bigger than 0.5GB.
 
 // Standard mke2fs 1.41.9:
 // Usage: mke2fs [-c|-l filename] [-b block-size] [-f fragment-size]
@@ -210,17 +210,20 @@
 
 	// using global "option_mask32" instead of local "opts":
 	// we are register starved here
-	opt_complementary = "-1:b+:m+:i+";
+	opt_complementary = "-1:b+:i+:I+:m+";
 	/*opts =*/ getopt32(argv, "cl:b:f:i:I:J:G:N:m:o:g:L:M:O:r:E:T:U:jnqvFS",
-		NULL, &bs, NULL, &bpi, &user_inodesize, NULL, NULL, NULL,
-		&reserved_percent, NULL, NULL, &label, NULL, NULL, NULL, NULL, NULL, NULL);
+		/*lbfi:*/ NULL, &bs, NULL, &bpi,
+		/*IJGN:*/ &user_inodesize, NULL, NULL, NULL,
+		/*mogL:*/ &reserved_percent, NULL, NULL, &label,
+		/*MOrE:*/ NULL, NULL, NULL, NULL,
+		/*TU:*/ NULL, NULL);
 	argv += optind; // argv[0] -- device
 
 	// open the device, check the device is a block device
 	xmove_fd(xopen(argv[0], O_WRONLY), fd);
 	fstat(fd, &st);
 	if (!S_ISBLK(st.st_mode) && !(option_mask32 & OPT_F))
-		bb_error_msg_and_die("not a block device");
+		bb_error_msg_and_die("%s: not a block device", argv[0]);
 
 	// check if it is mounted
 	// N.B. what if we format a file? find_mount_point will return false negative since
