diff -druNp --no-dereference linux-libre-3.18.47-gnu/arch/x86/boot/compressed/misc.h linux-libre-3.18.48-gnu/arch/x86/boot/compressed/misc.h
--- linux-libre-3.18.47-gnu/arch/x86/boot/compressed/misc.h	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/arch/x86/boot/compressed/misc.h	2017-02-08 03:43:17.000000000 -0500
@@ -2,14 +2,13 @@
 #define BOOT_COMPRESSED_MISC_H
 
 /*
- * we have to be careful, because no indirections are allowed here, and
- * paravirt_ops is a kind of one. As it will only run in baremetal anyway,
- * we just keep it from happening
+ * Special hack: we have to be careful, because no indirections are allowed here,
+ * and paravirt_ops is a kind of one. As it will only run in baremetal anyway,
+ * we just keep it from happening. (This list needs to be extended when new
+ * paravirt and debugging variants are added.)
  */
 #undef CONFIG_PARAVIRT
-#ifdef CONFIG_X86_32
-#define _ASM_X86_DESC_H 1
-#endif
+#undef CONFIG_PARAVIRT_SPINLOCKS
 
 #include <linux/linkage.h>
 #include <linux/screen_info.h>
diff -druNp --no-dereference linux-libre-3.18.47-gnu/arch/x86/xen/mmu.c linux-libre-3.18.48-gnu/arch/x86/xen/mmu.c
--- linux-libre-3.18.47-gnu/arch/x86/xen/mmu.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/arch/x86/xen/mmu.c	2017-02-08 03:43:17.000000000 -0500
@@ -1147,7 +1147,7 @@ static void __init xen_cleanhighmap(unsi
 
 	/* NOTE: The loop is more greedy than the cleanup_highmap variant.
 	 * We include the PMD passed in on _both_ boundaries. */
-	for (; vaddr <= vaddr_end && (pmd < (level2_kernel_pgt + PAGE_SIZE));
+	for (; vaddr <= vaddr_end && (pmd < (level2_kernel_pgt + PTRS_PER_PMD));
 			pmd++, vaddr += PMD_SIZE) {
 		if (pmd_none(*pmd))
 			continue;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/crypto/algif_hash.c linux-libre-3.18.48-gnu/crypto/algif_hash.c
--- linux-libre-3.18.47-gnu/crypto/algif_hash.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/crypto/algif_hash.c	2017-02-08 03:43:17.000000000 -0500
@@ -283,8 +283,8 @@ unlock_child:
 	return err;
 }
 
-static int hash_sendmsg_nokey(struct socket *sock, struct msghdr *msg,
-			      size_t size)
+static int hash_sendmsg_nokey(struct kiocb *unused, struct socket *sock,
+			      struct msghdr *msg, size_t size)
 {
 	int err;
 
@@ -307,8 +307,8 @@ static ssize_t hash_sendpage_nokey(struc
 	return hash_sendpage(sock, page, offset, size, flags);
 }
 
-static int hash_recvmsg_nokey(struct socket *sock, struct msghdr *msg,
-			      size_t ignored, int flags)
+static int hash_recvmsg_nokey(struct kiocb *unused, struct socket *sock,
+			      struct msghdr *msg, size_t ignored, int flags)
 {
 	int err;
 
diff -druNp --no-dereference linux-libre-3.18.47-gnu/Documentation/arm/Makefile linux-libre-3.18.48-gnu/Documentation/arm/Makefile
--- linux-libre-3.18.47-gnu/Documentation/arm/Makefile	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/Documentation/arm/Makefile	1969-12-31 19:00:00.000000000 -0500
@@ -1 +0,0 @@
-subdir-y := SH-Mobile
diff -druNp --no-dereference linux-libre-3.18.47-gnu/Documentation/arm/SH-Mobile/Makefile linux-libre-3.18.48-gnu/Documentation/arm/SH-Mobile/Makefile
--- linux-libre-3.18.47-gnu/Documentation/arm/SH-Mobile/Makefile	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/Documentation/arm/SH-Mobile/Makefile	1969-12-31 19:00:00.000000000 -0500
@@ -1,7 +0,0 @@
-# List of programs to build
-hostprogs-y := vrl4
-
-# Tell kbuild to always build the programs
-always := $(hostprogs-y)
-
-HOSTCFLAGS_vrl4.o += -I$(objtree)/usr/include -I$(srctree)/tools/include
diff -druNp --no-dereference linux-libre-3.18.47-gnu/Documentation/arm/SH-Mobile/vrl4.c linux-libre-3.18.48-gnu/Documentation/arm/SH-Mobile/vrl4.c
--- linux-libre-3.18.47-gnu/Documentation/arm/SH-Mobile/vrl4.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/Documentation/arm/SH-Mobile/vrl4.c	1969-12-31 19:00:00.000000000 -0500
@@ -1,170 +0,0 @@
-/*
- * vrl4 format generator
- *
- * Copyright (C) 2010 Simon Horman
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- */
-
-/*
- * usage: vrl4 < zImage > out
- *	  dd if=out of=/dev/sdx bs=512 seek=1 # Write the image to sector 1
- *
- * Reads a zImage from stdin and writes a vrl4 image to stdout.
- * In practice this means writing a padded vrl4 header to stdout followed
- * by the zImage.
- *
- * The padding places the zImage at ALIGN bytes into the output.
- * The vrl4 uses ALIGN + START_BASE as the start_address.
- * This is where the mask ROM will jump to after verifying the header.
- *
- * The header sets copy_size to min(sizeof(zImage), MAX_BOOT_PROG_LEN) + ALIGN.
- * That is, the mask ROM will load the padded header (ALIGN bytes)
- * And then MAX_BOOT_PROG_LEN bytes of the image, or the entire image,
- * whichever is smaller.
- *
- * The zImage is not modified in any way.
- */
-
-#define _BSD_SOURCE
-#include <endian.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <errno.h>
-#include <tools/endian.h>
-
-struct hdr {
-	uint32_t magic1;
-	uint32_t reserved1;
-	uint32_t magic2;
-	uint32_t reserved2;
-	uint16_t copy_size;
-	uint16_t boot_options;
-	uint32_t reserved3;
-	uint32_t start_address;
-	uint32_t reserved4;
-	uint32_t reserved5;
-	char     reserved6[308];
-};
-
-#define DECLARE_HDR(h)					\
-	struct hdr (h) = {				\
-		.magic1 =	htole32(0xea000000),	\
-		.reserved1 =	htole32(0x56),		\
-		.magic2 =	htole32(0xe59ff008),	\
-		.reserved3 =	htole16(0x1) }
-
-/* Align to 512 bytes, the MMCIF sector size */
-#define ALIGN_BITS	9
-#define ALIGN		(1 << ALIGN_BITS)
-
-#define START_BASE	0xe55b0000
-
-/*
- * With an alignment of 512 the header uses the first sector.
- * There is a 128 sector (64kbyte) limit on the data loaded by the mask ROM.
- * So there are 127 sectors left for the boot programme. But in practice
- * Only a small portion of a zImage is needed, 16 sectors should be more
- * than enough.
- *
- * Note that this sets how much of the zImage is copied by the mask ROM.
- * The entire zImage is present after the header and is loaded
- * by the code in the boot program (which is the first portion of the zImage).
- */
-#define	MAX_BOOT_PROG_LEN (16 * 512)
-
-#define ROUND_UP(x)	((x + ALIGN - 1) & ~(ALIGN - 1))
-
-static ssize_t do_read(int fd, void *buf, size_t count)
-{
-	size_t offset = 0;
-	ssize_t l;
-
-	while (offset < count) {
-		l = read(fd, buf + offset, count - offset);
-		if (!l)
-			break;
-		if (l < 0) {
-			if (errno == EAGAIN || errno == EWOULDBLOCK)
-				continue;
-			perror("read");
-			return -1;
-		}
-		offset += l;
-	}
-
-	return offset;
-}
-
-static ssize_t do_write(int fd, const void *buf, size_t count)
-{
-	size_t offset = 0;
-	ssize_t l;
-
-	while (offset < count) {
-		l = write(fd, buf + offset, count - offset);
-		if (l < 0) {
-			if (errno == EAGAIN || errno == EWOULDBLOCK)
-				continue;
-			perror("write");
-			return -1;
-		}
-		offset += l;
-	}
-
-	return offset;
-}
-
-static ssize_t write_zero(int fd, size_t len)
-{
-	size_t i = len;
-
-	while (i--) {
-		const char x = 0;
-		if (do_write(fd, &x, 1) < 0)
-			return -1;
-	}
-
-	return len;
-}
-
-int main(void)
-{
-	DECLARE_HDR(hdr);
-	char boot_program[MAX_BOOT_PROG_LEN];
-	size_t aligned_hdr_len, alligned_prog_len;
-	ssize_t prog_len;
-
-	prog_len = do_read(0, boot_program, sizeof(boot_program));
-	if (prog_len <= 0)
-		return -1;
-
-	aligned_hdr_len = ROUND_UP(sizeof(hdr));
-	hdr.start_address = htole32(START_BASE + aligned_hdr_len);
-	alligned_prog_len = ROUND_UP(prog_len);
-	hdr.copy_size = htole16(aligned_hdr_len + alligned_prog_len);
-
-	if (do_write(1, &hdr, sizeof(hdr)) < 0)
-		return -1;
-	if (write_zero(1, aligned_hdr_len - sizeof(hdr)) < 0)
-		return -1;
-
-	if (do_write(1, boot_program, prog_len) < 0)
-		return 1;
-
-	/* Write out the rest of the kernel */
-	while (1) {
-		prog_len = do_read(0, boot_program, sizeof(boot_program));
-		if (prog_len < 0)
-			return 1;
-		if (prog_len == 0)
-			break;
-		if (do_write(1, boot_program, prog_len) < 0)
-			return 1;
-	}
-
-	return 0;
-}
diff -druNp --no-dereference linux-libre-3.18.47-gnu/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt linux-libre-3.18.48-gnu/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt
--- linux-libre-3.18.47-gnu/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt	1969-12-31 19:00:00.000000000 -0500
@@ -1,29 +0,0 @@
-ROM-able zImage boot from MMC
------------------------------
-
-An ROM-able zImage compiled with ZBOOT_ROM_MMCIF may be written to MMC and
-SuperH Mobile ARM will to boot directly from the MMCIF hardware block.
-
-This is achieved by the mask ROM loading the first portion of the image into
-MERAM and then jumping to it. This portion contains loader code which
-copies the entire image to SDRAM and jumps to it. From there the zImage
-boot code proceeds as normal, uncompressing the image into its final
-location and then jumping to it.
-
-This code has been tested on an AP4EB board using the developer 1A eMMC
-boot mode which is configured using the following jumper settings.
-The board used for testing required a patched mask ROM in order for
-this mode to function.
-
-   8 7 6 5 4 3 2 1
-   x|x|x|x|x| |x|
-S4 -+-+-+-+-+-+-+-
-    | | | | |x| |x on
-
-The zImage must be written to the MMC card at sector 1 (512 bytes) in
-vrl4 format. A utility vrl4 is supplied to accomplish this.
-
-e.g.
-	vrl4 < zImage | dd of=/dev/sdX bs=512 seek=1
-
-A dual-voltage MMC 4.0 card was used for testing.
diff -druNp --no-dereference linux-libre-3.18.47-gnu/Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt linux-libre-3.18.48-gnu/Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt
--- linux-libre-3.18.47-gnu/Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/Documentation/arm/SH-Mobile/zboot-rom-sdhi.txt	1969-12-31 19:00:00.000000000 -0500
@@ -1,42 +0,0 @@
-ROM-able zImage boot from eSD
------------------------------
-
-An ROM-able zImage compiled with ZBOOT_ROM_SDHI may be written to eSD and
-SuperH Mobile ARM will to boot directly from the SDHI hardware block.
-
-This is achieved by the mask ROM loading the first portion of the image into
-MERAM and then jumping to it. This portion contains loader code which
-copies the entire image to SDRAM and jumps to it. From there the zImage
-boot code proceeds as normal, uncompressing the image into its final
-location and then jumping to it.
-
-This code has been tested on an mackerel board using the developer 1A eSD
-boot mode which is configured using the following jumper settings.
-
-   8 7 6 5 4 3 2 1
-   x|x|x|x| |x|x|
-S4 -+-+-+-+-+-+-+-
-    | | | |x| | |x on
-
-The eSD card needs to be present in SDHI slot 1 (CN7).
-As such S1 and S33 also need to be configured as per
-the notes in arch/arm/mach-shmobile/board-mackerel.c.
-
-A partial zImage must be written to physical partition #1 (boot)
-of the eSD at sector 0 in vrl4 format. A utility vrl4 is supplied to
-accomplish this.
-
-e.g.
-	vrl4 < zImage | dd of=/dev/sdX bs=512 count=17
-
-A full copy of _the same_ zImage should be written to physical partition #1
-(boot) of the eSD at sector 0. This should _not_ be in vrl4 format.
-
-	vrl4 < zImage | dd of=/dev/sdX bs=512
-
-Note: The commands above assume that the physical partition has been
-switched. No such facility currently exists in the Linux Kernel.
-
-Physical partitions are described in the eSD specification.  At the time of
-writing they are not the same as partitions that are typically configured
-using fdisk and visible through /proc/partitions
diff -druNp --no-dereference linux-libre-3.18.47-gnu/Documentation/Makefile linux-libre-3.18.48-gnu/Documentation/Makefile
--- linux-libre-3.18.47-gnu/Documentation/Makefile	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/Documentation/Makefile	2017-02-08 03:43:17.000000000 -0500
@@ -1,4 +1,4 @@
-subdir-y := accounting arm auxdisplay blackfin connector \
+subdir-y := accounting auxdisplay blackfin connector \
 	filesystems filesystems ia64 laptops mic misc-devices \
 	networking pcmcia prctl ptp spi timers vDSO video4linux \
 	watchdog
diff -druNp --no-dereference linux-libre-3.18.47-gnu/Documentation/video4linux/v4l2-pci-skeleton.c linux-libre-3.18.48-gnu/Documentation/video4linux/v4l2-pci-skeleton.c
--- linux-libre-3.18.47-gnu/Documentation/video4linux/v4l2-pci-skeleton.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/Documentation/video4linux/v4l2-pci-skeleton.c	2017-02-08 03:43:17.000000000 -0500
@@ -42,7 +42,6 @@
 MODULE_DESCRIPTION("V4L2 PCI Skeleton Driver");
 MODULE_AUTHOR("Hans Verkuil");
 MODULE_LICENSE("GPL v2");
-MODULE_DEVICE_TABLE(pci, skeleton_pci_tbl);
 
 /**
  * struct skeleton - All internal data for one instance of device
@@ -95,6 +94,7 @@ static const struct pci_device_id skelet
 	/* { PCI_DEVICE(PCI_VENDOR_ID_, PCI_DEVICE_ID_) }, */
 	{ 0, }
 };
+MODULE_DEVICE_TABLE(pci, skeleton_pci_tbl);
 
 /*
  * HDTV: this structure has the capabilities of the HDTV receiver.
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/ata/pata_hpt366.c linux-libre-3.18.48-gnu/drivers/ata/pata_hpt366.c
--- linux-libre-3.18.47-gnu/drivers/ata/pata_hpt366.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/ata/pata_hpt366.c	2017-02-08 03:43:17.000000000 -0500
@@ -352,7 +352,7 @@ static int hpt36x_init_one(struct pci_de
 	};
 	const struct ata_port_info *ppi[] = { &info_hpt366, NULL };
 
-	void *hpriv = NULL;
+	const void *hpriv = NULL;
 	u32 reg1;
 	int rc;
 
@@ -383,7 +383,7 @@ static int hpt36x_init_one(struct pci_de
 		break;
 	}
 	/* Now kick off ATA set up */
-	return ata_pci_bmdma_init_one(dev, ppi, &hpt36x_sht, hpriv, 0);
+	return ata_pci_bmdma_init_one(dev, ppi, &hpt36x_sht, (void *)hpriv, 0);
 }
 
 #ifdef CONFIG_PM_SLEEP
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/atm/iphase.c linux-libre-3.18.48-gnu/drivers/atm/iphase.c
--- linux-libre-3.18.47-gnu/drivers/atm/iphase.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/atm/iphase.c	2017-02-08 03:43:17.000000000 -0500
@@ -1175,7 +1175,7 @@ static int rx_pkt(struct atm_dev *dev)
         if (!(skb = atm_alloc_charge(vcc, len, GFP_ATOMIC))) {
            if (vcc->vci < 32)
               printk("Drop control packets\n");
-	      goto out_free_desc;
+	   goto out_free_desc;
         }
 	skb_put(skb,len);  
         // pwang_test
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/block/paride/pg.c linux-libre-3.18.48-gnu/drivers/block/paride/pg.c
--- linux-libre-3.18.47-gnu/drivers/block/paride/pg.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/block/paride/pg.c	2017-02-08 03:43:17.000000000 -0500
@@ -137,7 +137,7 @@
 
 */
 
-static bool verbose = 0;
+static int verbose;
 static int major = PG_MAJOR;
 static char *name = PG_NAME;
 static int disable = 0;
@@ -168,7 +168,7 @@ enum {D_PRT, D_PRO, D_UNI, D_MOD, D_SLV,
 
 #include <asm/uaccess.h>
 
-module_param(verbose, bool, 0644);
+module_param(verbose, int, 0644);
 module_param(major, int, 0);
 module_param(name, charp, 0);
 module_param_array(drive0, int, NULL, 0);
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/gpu/drm/i915/i915_debugfs.c linux-libre-3.18.48-gnu/drivers/gpu/drm/i915/i915_debugfs.c
--- linux-libre-3.18.47-gnu/drivers/gpu/drm/i915/i915_debugfs.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/gpu/drm/i915/i915_debugfs.c	2017-02-08 03:43:17.000000000 -0500
@@ -141,10 +141,11 @@ describe_obj(struct seq_file *m, struct
 		   obj->madv == I915_MADV_DONTNEED ? " purgeable" : "");
 	if (obj->base.name)
 		seq_printf(m, " (name: %d)", obj->base.name);
-	list_for_each_entry(vma, &obj->vma_list, vma_link)
+	list_for_each_entry(vma, &obj->vma_list, vma_link) {
 		if (vma->pin_count > 0)
 			pin_count++;
-		seq_printf(m, " (pinned x %d)", pin_count);
+	}
+	seq_printf(m, " (pinned x %d)", pin_count);
 	if (obj->pin_display)
 		seq_printf(m, " (display)");
 	if (obj->fence_reg != I915_FENCE_REG_NONE)
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/hid/hid-input.c linux-libre-3.18.48-gnu/drivers/hid/hid-input.c
--- linux-libre-3.18.47-gnu/drivers/hid/hid-input.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/hid/hid-input.c	2017-02-08 03:43:17.000000000 -0500
@@ -1122,7 +1122,7 @@ void hidinput_hid_event(struct hid_devic
 		return;
 
 	/* report the usage code as scancode if the key status has changed */
-	if (usage->type == EV_KEY && !!test_bit(usage->code, input->key) != value)
+	if (usage->type == EV_KEY && (!!test_bit(usage->code, input->key)) != value)
 		input_event(input, EV_MSC, MSC_SCAN, usage->hid);
 
 	input_event(input, usage->type, usage->code, value);
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/media/platform/s3c-camif/camif-capture.c linux-libre-3.18.48-gnu/drivers/media/platform/s3c-camif/camif-capture.c
--- linux-libre-3.18.47-gnu/drivers/media/platform/s3c-camif/camif-capture.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/media/platform/s3c-camif/camif-capture.c	2017-02-08 03:43:17.000000000 -0500
@@ -115,7 +115,7 @@ static int sensor_set_power(struct camif
 	struct cam_sensor *sensor = &camif->sensor;
 	int err = 0;
 
-	if (!on == camif->sensor.power_count)
+	if (camif->sensor.power_count == !on)
 		err = v4l2_subdev_call(sensor->sd, core, s_power, on);
 	if (!err)
 		sensor->power_count += on ? 1 : -1;
@@ -131,7 +131,7 @@ static int sensor_set_streaming(struct c
 	struct cam_sensor *sensor = &camif->sensor;
 	int err = 0;
 
-	if (!on == camif->sensor.stream_count)
+	if (camif->sensor.stream_count == !on)
 		err = v4l2_subdev_call(sensor->sd, video, s_stream, on);
 	if (!err)
 		sensor->stream_count += on ? 1 : -1;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/media/v4l2-core/videobuf2-core.c linux-libre-3.18.48-gnu/drivers/media/v4l2-core/videobuf2-core.c
--- linux-libre-3.18.47-gnu/drivers/media/v4l2-core/videobuf2-core.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/media/v4l2-core/videobuf2-core.c	2017-02-08 03:43:17.000000000 -0500
@@ -3221,7 +3221,6 @@ EXPORT_SYMBOL_GPL(vb2_thread_start);
 int vb2_thread_stop(struct vb2_queue *q)
 {
 	struct vb2_threadio_data *threadio = q->threadio;
-	struct vb2_fileio_data *fileio = q->fileio;
 	int err;
 
 	if (threadio == NULL)
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/mtd/mtd_blkdevs.c linux-libre-3.18.48-gnu/drivers/mtd/mtd_blkdevs.c
--- linux-libre-3.18.47-gnu/drivers/mtd/mtd_blkdevs.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/mtd/mtd_blkdevs.c	2017-02-08 03:43:17.000000000 -0500
@@ -97,14 +97,13 @@ static int do_blktrans_request(struct mt
 	if (req->cmd_flags & REQ_DISCARD)
 		return tr->discard(dev, block, nsect);
 
-	switch(rq_data_dir(req)) {
-	case READ:
+	if (rq_data_dir(req) == READ) {
 		for (; nsect > 0; nsect--, block++, buf += tr->blksize)
 			if (tr->readsect(dev, block, buf))
 				return -EIO;
 		rq_flush_dcache_pages(req);
 		return 0;
-	case WRITE:
+	} else {
 		if (!tr->writesect)
 			return -EIO;
 
@@ -113,9 +112,6 @@ static int do_blktrans_request(struct mt
 			if (tr->writesect(dev, block, buf))
 				return -EIO;
 		return 0;
-	default:
-		printk(KERN_NOTICE "Unknown request %u\n", rq_data_dir(req));
-		return -EIO;
 	}
 }
 
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/net/ethernet/dec/tulip/uli526x.c linux-libre-3.18.48-gnu/drivers/net/ethernet/dec/tulip/uli526x.c
--- linux-libre-3.18.47-gnu/drivers/net/ethernet/dec/tulip/uli526x.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/net/ethernet/dec/tulip/uli526x.c	2017-02-08 03:43:17.000000000 -0500
@@ -1115,7 +1115,7 @@ static void uli526x_timer(unsigned long
 				netif_carrier_off(dev);
 			}
 		}
-		db->init=0;
+	db->init = 0;
 
 	/* Timer active again */
 	db->timer.expires = ULI526X_TIMER_WUT;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/net/ethernet/emulex/benet/be_main.c linux-libre-3.18.48-gnu/drivers/net/ethernet/emulex/benet/be_main.c
--- linux-libre-3.18.47-gnu/drivers/net/ethernet/emulex/benet/be_main.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/net/ethernet/emulex/benet/be_main.c	2017-02-08 03:43:17.000000000 -0500
@@ -26,7 +26,6 @@
 #include <net/vxlan.h>
 
 MODULE_VERSION(DRV_VER);
-MODULE_DEVICE_TABLE(pci, be_dev_ids);
 MODULE_DESCRIPTION(DRV_DESC " " DRV_VER);
 MODULE_AUTHOR("Emulex Corporation");
 MODULE_LICENSE("GPL");
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/net/ethernet/intel/i40e/i40e_debugfs.c linux-libre-3.18.48-gnu/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
--- linux-libre-3.18.47-gnu/drivers/net/ethernet/intel/i40e/i40e_debugfs.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/net/ethernet/intel/i40e/i40e_debugfs.c	2017-02-08 03:43:17.000000000 -0500
@@ -773,7 +773,7 @@ static void i40e_dbg_dump_desc(int cnt,
 {
 	struct i40e_tx_desc *txd;
 	union i40e_rx_desc *rxd;
-	struct i40e_ring ring;
+	struct i40e_ring *ring;
 	struct i40e_vsi *vsi;
 	int i;
 
@@ -792,29 +792,32 @@ static void i40e_dbg_dump_desc(int cnt,
 			 vsi_seid);
 		return;
 	}
-	if (is_rx_ring)
-		ring = *vsi->rx_rings[ring_id];
-	else
-		ring = *vsi->tx_rings[ring_id];
+
+	ring = kmemdup(is_rx_ring
+		       ? vsi->rx_rings[ring_id] : vsi->tx_rings[ring_id],
+		       sizeof(*ring), GFP_KERNEL);
+	if (!ring)
+		return;
+
 	if (cnt == 2) {
 		dev_info(&pf->pdev->dev, "vsi = %02i %s ring = %02i\n",
 			 vsi_seid, is_rx_ring ? "rx" : "tx", ring_id);
-		for (i = 0; i < ring.count; i++) {
+		for (i = 0; i < ring->count; i++) {
 			if (!is_rx_ring) {
-				txd = I40E_TX_DESC(&ring, i);
+				txd = I40E_TX_DESC(ring, i);
 				dev_info(&pf->pdev->dev,
 					 "   d[%03i] = 0x%016llx 0x%016llx\n",
 					 i, txd->buffer_addr,
 					 txd->cmd_type_offset_bsz);
 			} else if (sizeof(union i40e_rx_desc) ==
 				   sizeof(union i40e_16byte_rx_desc)) {
-				rxd = I40E_RX_DESC(&ring, i);
+				rxd = I40E_RX_DESC(ring, i);
 				dev_info(&pf->pdev->dev,
 					 "   d[%03i] = 0x%016llx 0x%016llx\n",
 					 i, rxd->read.pkt_addr,
 					 rxd->read.hdr_addr);
 			} else {
-				rxd = I40E_RX_DESC(&ring, i);
+				rxd = I40E_RX_DESC(ring, i);
 				dev_info(&pf->pdev->dev,
 					 "   d[%03i] = 0x%016llx 0x%016llx 0x%016llx 0x%016llx\n",
 					 i, rxd->read.pkt_addr,
@@ -823,26 +826,26 @@ static void i40e_dbg_dump_desc(int cnt,
 			}
 		}
 	} else if (cnt == 3) {
-		if (desc_n >= ring.count || desc_n < 0) {
+		if (desc_n >= ring->count || desc_n < 0) {
 			dev_info(&pf->pdev->dev,
 				 "descriptor %d not found\n", desc_n);
 			return;
 		}
 		if (!is_rx_ring) {
-			txd = I40E_TX_DESC(&ring, desc_n);
+			txd = I40E_TX_DESC(ring, desc_n);
 			dev_info(&pf->pdev->dev,
 				 "vsi = %02i tx ring = %02i d[%03i] = 0x%016llx 0x%016llx\n",
 				 vsi_seid, ring_id, desc_n,
 				 txd->buffer_addr, txd->cmd_type_offset_bsz);
 		} else if (sizeof(union i40e_rx_desc) ==
 			   sizeof(union i40e_16byte_rx_desc)) {
-			rxd = I40E_RX_DESC(&ring, desc_n);
+			rxd = I40E_RX_DESC(ring, desc_n);
 			dev_info(&pf->pdev->dev,
 				 "vsi = %02i rx ring = %02i d[%03i] = 0x%016llx 0x%016llx\n",
 				 vsi_seid, ring_id, desc_n,
 				 rxd->read.pkt_addr, rxd->read.hdr_addr);
 		} else {
-			rxd = I40E_RX_DESC(&ring, desc_n);
+			rxd = I40E_RX_DESC(ring, desc_n);
 			dev_info(&pf->pdev->dev,
 				 "vsi = %02i rx ring = %02i d[%03i] = 0x%016llx 0x%016llx 0x%016llx 0x%016llx\n",
 				 vsi_seid, ring_id, desc_n,
@@ -852,6 +855,7 @@ static void i40e_dbg_dump_desc(int cnt,
 	} else {
 		dev_info(&pf->pdev->dev, "dump desc rx/tx <vsi_seid> <ring_id> [<desc_n>]\n");
 	}
+	kfree(ring);
 }
 
 /**
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/net/wireless/iwlegacy/3945.c linux-libre-3.18.48-gnu/drivers/net/wireless/iwlegacy/3945.c
--- linux-libre-3.18.47-gnu/drivers/net/wireless/iwlegacy/3945.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/net/wireless/iwlegacy/3945.c	2017-02-08 03:43:17.000000000 -0500
@@ -1019,12 +1019,13 @@ il3945_hw_txq_ctx_free(struct il_priv *i
 	int txq_id;
 
 	/* Tx queues */
-	if (il->txq)
+	if (il->txq) {
 		for (txq_id = 0; txq_id < il->hw_params.max_txq_num; txq_id++)
 			if (txq_id == IL39_CMD_QUEUE_NUM)
 				il_cmd_queue_free(il);
 			else
 				il_tx_queue_free(il, txq_id);
+	}
 
 	/* free tx queue structure */
 	il_free_txq_mem(il);
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/scsi/be2iscsi/be_main.c linux-libre-3.18.48-gnu/drivers/scsi/be2iscsi/be_main.c
--- linux-libre-3.18.47-gnu/drivers/scsi/be2iscsi/be_main.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/scsi/be2iscsi/be_main.c	2017-02-08 03:43:17.000000000 -0500
@@ -48,7 +48,6 @@ static unsigned int be_iopoll_budget = 1
 static unsigned int be_max_phys_size = 64;
 static unsigned int enable_msix = 1;
 
-MODULE_DEVICE_TABLE(pci, beiscsi_pci_id_table);
 MODULE_DESCRIPTION(DRV_DESC " " BUILD_STR);
 MODULE_VERSION(BUILD_STR);
 MODULE_AUTHOR("Emulex Corporation");
@@ -3166,7 +3165,7 @@ be_sgl_create_contiguous(void *virtual_a
 {
 	WARN_ON(!virtual_address);
 	WARN_ON(!physical_address);
-	WARN_ON(!length > 0);
+	WARN_ON(!length);
 	WARN_ON(!sgl);
 
 	sgl->va = virtual_address;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/scsi/bfa/bfa_ioc.c linux-libre-3.18.48-gnu/drivers/scsi/bfa/bfa_ioc.c
--- linux-libre-3.18.47-gnu/drivers/scsi/bfa/bfa_ioc.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/scsi/bfa/bfa_ioc.c	2017-02-08 03:43:17.000000000 -0500
@@ -3665,19 +3665,19 @@ bfa_cb_sfp_state_query(struct bfa_sfp_s
 		if (sfp->state_query_cbfn)
 			sfp->state_query_cbfn(sfp->state_query_cbarg,
 					sfp->status);
-			sfp->media = NULL;
-		}
+		sfp->media = NULL;
+	}
 
-		if (sfp->portspeed) {
-			sfp->status = bfa_sfp_speed_valid(sfp, sfp->portspeed);
-			if (sfp->state_query_cbfn)
-				sfp->state_query_cbfn(sfp->state_query_cbarg,
-						sfp->status);
-				sfp->portspeed = BFA_PORT_SPEED_UNKNOWN;
-		}
+	if (sfp->portspeed) {
+		sfp->status = bfa_sfp_speed_valid(sfp, sfp->portspeed);
+		if (sfp->state_query_cbfn)
+			sfp->state_query_cbfn(sfp->state_query_cbarg,
+					sfp->status);
+		sfp->portspeed = BFA_PORT_SPEED_UNKNOWN;
+	}
 
-		sfp->state_query_lock = 0;
-		sfp->state_query_cbfn = NULL;
+	sfp->state_query_lock = 0;
+	sfp->state_query_cbfn = NULL;
 }
 
 /*
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/scsi/qla2xxx/qla_target.c linux-libre-3.18.48-gnu/drivers/scsi/qla2xxx/qla_target.c
--- linux-libre-3.18.47-gnu/drivers/scsi/qla2xxx/qla_target.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/scsi/qla2xxx/qla_target.c	2017-02-08 03:43:17.000000000 -0500
@@ -3075,11 +3075,10 @@ void qlt_abort_cmd(struct qla_tgt_cmd *c
 {
 	struct qla_tgt *tgt = cmd->tgt;
 	struct scsi_qla_host *vha = tgt->vha;
-	struct se_cmd *se_cmd = &cmd->se_cmd;
 
 	ql_dbg(ql_dbg_tgt_mgt, vha, 0xf014,
 	    "qla_target(%d): terminating exchange for aborted cmd=%p "
-	    "(se_cmd=%p, tag=%llu)", vha->vp_idx, cmd, &cmd->se_cmd,
+	    "(se_cmd=%p, tag=%d)", vha->vp_idx, cmd, &cmd->se_cmd,
 	    cmd->tag);
 
 	cmd->state = QLA_TGT_STATE_ABORTED;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/spi/spi-dw-mid.c linux-libre-3.18.48-gnu/drivers/spi/spi-dw-mid.c
--- linux-libre-3.18.47-gnu/drivers/spi/spi-dw-mid.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/spi/spi-dw-mid.c	2017-02-08 03:43:17.000000000 -0500
@@ -111,28 +111,11 @@ static void dw_spi_dma_done(void *arg)
 	dw_spi_xfer_done(dws);
 }
 
-static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
+static struct dma_async_tx_descriptor *dw_spi_dma_prepare_tx(struct dw_spi *dws)
 {
-	struct dma_async_tx_descriptor *txdesc, *rxdesc;
-	struct dma_slave_config txconf, rxconf;
-	u16 dma_ctrl = 0;
-
-	/* 1. setup DMA related registers */
-	if (cs_change) {
-		spi_enable_chip(dws, 0);
-		dw_writew(dws, DW_SPI_DMARDLR, 0xf);
-		dw_writew(dws, DW_SPI_DMATDLR, 0x10);
-		if (dws->tx_dma)
-			dma_ctrl |= SPI_DMA_TDMAE;
-		if (dws->rx_dma)
-			dma_ctrl |= SPI_DMA_RDMAE;
-		dw_writew(dws, DW_SPI_DMACR, dma_ctrl);
-		spi_enable_chip(dws, 1);
-	}
-
-	dws->dma_chan_done = 0;
+	struct dma_slave_config txconf;
+	struct dma_async_tx_descriptor *txdesc;
 
-	/* 2. Prepare the TX dma transfer */
 	txconf.direction = DMA_MEM_TO_DEV;
 	txconf.dst_addr = dws->dma_addr;
 	txconf.dst_maxburst = LNW_DMA_MSIZE_16;
@@ -157,7 +140,14 @@ static int mid_spi_dma_transfer(struct d
 	txdesc->callback = dw_spi_dma_done;
 	txdesc->callback_param = dws;
 
-	/* 3. Prepare the RX dma transfer */
+	return txdesc;
+}
+
+static struct dma_async_tx_descriptor *dw_spi_dma_prepare_rx(struct dw_spi *dws)
+{
+	struct dma_slave_config rxconf;
+	struct dma_async_tx_descriptor *rxdesc;
+
 	rxconf.direction = DMA_DEV_TO_MEM;
 	rxconf.src_addr = dws->dma_addr;
 	rxconf.src_maxburst = LNW_DMA_MSIZE_16;
@@ -182,6 +172,43 @@ static int mid_spi_dma_transfer(struct d
 	rxdesc->callback = dw_spi_dma_done;
 	rxdesc->callback_param = dws;
 
+	return rxdesc;
+}
+
+static void dw_spi_dma_setup(struct dw_spi *dws)
+{
+	u16 dma_ctrl = 0;
+
+	spi_enable_chip(dws, 0);
+
+	dw_writew(dws, DW_SPI_DMARDLR, 0xf);
+	dw_writew(dws, DW_SPI_DMATDLR, 0x10);
+
+	if (dws->tx_dma)
+		dma_ctrl |= SPI_DMA_TDMAE;
+	if (dws->rx_dma)
+		dma_ctrl |= SPI_DMA_RDMAE;
+	dw_writew(dws, DW_SPI_DMACR, dma_ctrl);
+
+	spi_enable_chip(dws, 1);
+}
+
+static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
+{
+	struct dma_async_tx_descriptor *txdesc, *rxdesc;
+
+	/* 1. setup DMA related registers */
+	if (cs_change)
+		dw_spi_dma_setup(dws);
+
+	dws->dma_chan_done = 0;
+
+	/* 2. Prepare the TX dma transfer */
+	txdesc = dw_spi_dma_prepare_tx(dws);
+
+	/* 3. Prepare the RX dma transfer */
+	rxdesc = dw_spi_dma_prepare_rx(dws);
+
 	/* rx must be started before tx due to spi instinct */
 	dmaengine_submit(rxdesc);
 	dma_async_issue_pending(dws->rxchan);
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/staging/iio/adc/ad7192.c linux-libre-3.18.48-gnu/drivers/staging/iio/adc/ad7192.c
--- linux-libre-3.18.47-gnu/drivers/staging/iio/adc/ad7192.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/staging/iio/adc/ad7192.c	2017-02-08 03:43:17.000000000 -0500
@@ -236,7 +236,7 @@ static int ad7192_setup(struct ad7192_st
 			st->mclk = pdata->ext_clk_Hz;
 		else
 			st->mclk = AD7192_INT_FREQ_MHz;
-			break;
+		break;
 	default:
 		ret = -EINVAL;
 		goto out;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/staging/lustre/lustre/llite/llite_lib.c linux-libre-3.18.48-gnu/drivers/staging/lustre/lustre/llite/llite_lib.c
--- linux-libre-3.18.47-gnu/drivers/staging/lustre/lustre/llite/llite_lib.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/staging/lustre/lustre/llite/llite_lib.c	2017-02-08 03:43:17.000000000 -0500
@@ -1504,7 +1504,7 @@ int ll_setattr_raw(struct dentry *dentry
 
 	if (attr->ia_valid & (ATTR_SIZE |
 			      ATTR_ATIME | ATTR_ATIME_SET |
-			      ATTR_MTIME | ATTR_MTIME_SET))
+			      ATTR_MTIME | ATTR_MTIME_SET)) {
 		/* For truncate and utimes sending attributes to OSTs, setting
 		 * mtime/atime to the past will be performed under PW [0:EOF]
 		 * extent lock (new_size:EOF for truncate).  It may seem
@@ -1516,6 +1516,7 @@ int ll_setattr_raw(struct dentry *dentry
 		rc = ll_setattr_ost(inode, attr);
 		if (attr->ia_valid & ATTR_SIZE)
 			up_write(&lli->lli_trunc_sem);
+	}
 out:
 	if (op_data) {
 		if (op_data->op_ioepoch) {
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/staging/rtl8723au/core/rtw_wlan_util.c linux-libre-3.18.48-gnu/drivers/staging/rtl8723au/core/rtw_wlan_util.c
--- linux-libre-3.18.47-gnu/drivers/staging/rtl8723au/core/rtw_wlan_util.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/staging/rtl8723au/core/rtw_wlan_util.c	2017-02-08 03:43:17.000000000 -0500
@@ -525,7 +525,7 @@ void WMMOnAssocRsp23a(struct rtw_adapter
 	else
 		aSifsTime = 16;
 
-		for (i = 0; i < 4; i++) {
+	for (i = 0; i < 4; i++) {
 		ACI = (pmlmeinfo->WMM_param.ac_param[i].ACI_AIFSN >> 5) & 0x03;
 		ACM = (pmlmeinfo->WMM_param.ac_param[i].ACI_AIFSN >> 4) & 0x01;
 
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/usb/gadget/udc/udc-xilinx.c linux-libre-3.18.48-gnu/drivers/usb/gadget/udc/udc-xilinx.c
--- linux-libre-3.18.47-gnu/drivers/usb/gadget/udc/udc-xilinx.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/usb/gadget/udc/udc-xilinx.c	2017-02-08 03:43:17.000000000 -0500
@@ -2132,8 +2132,8 @@ static int xudc_probe(struct platform_de
 
 	platform_set_drvdata(pdev, udc);
 
-	dev_vdbg(&pdev->dev, "%s at 0x%08X mapped to 0x%08X %s\n",
-		 driver_name, (u32)res->start, (u32 __force)udc->addr,
+	dev_vdbg(&pdev->dev, "%s at 0x%08X mapped to %p %s\n",
+		 driver_name, (u32)res->start, udc->addr,
 		 udc->dma_enabled ? "with DMA" : "without DMA");
 
 	return 0;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/drivers/usb/renesas_usbhs/common.c linux-libre-3.18.48-gnu/drivers/usb/renesas_usbhs/common.c
--- linux-libre-3.18.47-gnu/drivers/usb/renesas_usbhs/common.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/drivers/usb/renesas_usbhs/common.c	2017-02-08 03:43:17.000000000 -0500
@@ -466,7 +466,7 @@ static struct renesas_usbhs_platform_inf
 		return NULL;
 
 	dparam = &info->driver_param;
-	dparam->type = of_id ? (u32)of_id->data : 0;
+	dparam->type = of_id ? (uintptr_t)of_id->data : 0;
 	if (!of_property_read_u32(dev->of_node, "renesas,buswait", &tmp))
 		dparam->buswait_bwait = tmp;
 	gpio = of_get_named_gpio_flags(dev->of_node, "renesas,enable-gpio", 0,
diff -druNp --no-dereference linux-libre-3.18.47-gnu/include/linux/blkdev.h linux-libre-3.18.48-gnu/include/linux/blkdev.h
--- linux-libre-3.18.47-gnu/include/linux/blkdev.h	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/include/linux/blkdev.h	2017-02-08 03:43:17.000000000 -0500
@@ -616,7 +616,7 @@ static inline void queue_flag_clear(unsi
 
 #define list_entry_rq(ptr)	list_entry((ptr), struct request, queuelist)
 
-#define rq_data_dir(rq)		(((rq)->cmd_flags & 1) != 0)
+#define rq_data_dir(rq)		((int)((rq)->cmd_flags & 1))
 
 /*
  * Driver can handle struct request, if it either has an old style
diff -druNp --no-dereference linux-libre-3.18.47-gnu/include/linux/module.h linux-libre-3.18.48-gnu/include/linux/module.h
--- linux-libre-3.18.47-gnu/include/linux/module.h	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/include/linux/module.h	2017-02-08 03:43:17.000000000 -0500
@@ -135,7 +135,7 @@ void trim_init_extable(struct module *m)
 #ifdef MODULE
 /* Creates an alias so file2alias.c can find device table. */
 #define MODULE_DEVICE_TABLE(type, name)					\
-  extern const struct type##_device_id __mod_##type##__##name##_device_table \
+extern const typeof(name) __mod_##type##__##name##_device_table		\
   __attribute__ ((unused, alias(__stringify(name))))
 #else  /* !MODULE */
 #define MODULE_DEVICE_TABLE(type, name)
diff -druNp --no-dereference linux-libre-3.18.47-gnu/include/linux/skbuff.h linux-libre-3.18.48-gnu/include/linux/skbuff.h
--- linux-libre-3.18.47-gnu/include/linux/skbuff.h	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/include/linux/skbuff.h	2017-02-08 03:43:17.000000000 -0500
@@ -188,6 +188,7 @@ struct sk_buff;
 #else
 #define MAX_SKB_FRAGS (65536/PAGE_SIZE + 1)
 #endif
+extern int sysctl_max_skb_frags;
 
 typedef struct skb_frag_struct skb_frag_t;
 
diff -druNp --no-dereference linux-libre-3.18.47-gnu/include/linux/usb/renesas_usbhs.h linux-libre-3.18.48-gnu/include/linux/usb/renesas_usbhs.h
--- linux-libre-3.18.47-gnu/include/linux/usb/renesas_usbhs.h	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/include/linux/usb/renesas_usbhs.h	2017-02-08 03:43:17.000000000 -0500
@@ -153,7 +153,7 @@ struct renesas_usbhs_driver_param {
 	 */
 	int pio_dma_border; /* default is 64byte */
 
-	u32 type;
+	uintptr_t type;
 	u32 enable_gpio;
 
 	/*
diff -druNp --no-dereference linux-libre-3.18.47-gnu/Makefile linux-libre-3.18.48-gnu/Makefile
--- linux-libre-3.18.47-gnu/Makefile	2017-01-18 22:03:29.000000000 -0500
+++ linux-libre-3.18.48-gnu/Makefile	2017-02-08 11:34:31.000000000 -0500
@@ -1,6 +1,6 @@
 VERSION = 3
 PATCHLEVEL = 18
-SUBLEVEL = 47
+SUBLEVEL = 48
 EXTRAVERSION =-gnu
 NAME = Diseased Newt
 
@@ -610,6 +610,7 @@ all: vmlinux
 include $(srctree)/arch/$(SRCARCH)/Makefile
 
 KBUILD_CFLAGS	+= $(call cc-option,-fno-delete-null-pointer-checks,)
+KBUILD_CFLAGS	+= $(call cc-disable-warning,frame-address,)
 KBUILD_CFLAGS	+= $(call cc-option,-fno-PIE)
 KBUILD_AFLAGS	+= $(call cc-option,-fno-PIE)
 
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/bluetooth/hci_sock.c linux-libre-3.18.48-gnu/net/bluetooth/hci_sock.c
--- linux-libre-3.18.47-gnu/net/bluetooth/hci_sock.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/bluetooth/hci_sock.c	2017-02-08 03:43:17.000000000 -0500
@@ -46,9 +46,9 @@ struct hci_pinfo {
 	unsigned short    channel;
 };
 
-static inline int hci_test_bit(int nr, void *addr)
+static inline int hci_test_bit(int nr, const void *addr)
 {
-	return *((__u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
+	return *((const __u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
 }
 
 /* Security filter */
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/bridge/netfilter/nft_reject_bridge.c linux-libre-3.18.48-gnu/net/bridge/netfilter/nft_reject_bridge.c
--- linux-libre-3.18.47-gnu/net/bridge/netfilter/nft_reject_bridge.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/bridge/netfilter/nft_reject_bridge.c	2017-02-08 03:43:17.000000000 -0500
@@ -375,6 +375,8 @@ static int nft_reject_bridge_dump(struct
 		if (nla_put_u8(skb, NFTA_REJECT_ICMP_CODE, priv->icmp_code))
 			goto nla_put_failure;
 		break;
+	default:
+		break;
 	}
 
 	return 0;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/caif/cfpkt_skbuff.c linux-libre-3.18.48-gnu/net/caif/cfpkt_skbuff.c
--- linux-libre-3.18.47-gnu/net/caif/cfpkt_skbuff.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/caif/cfpkt_skbuff.c	2017-02-08 03:43:17.000000000 -0500
@@ -286,7 +286,7 @@ int cfpkt_setlen(struct cfpkt *pkt, u16
 		else
 			skb_trim(skb, len);
 
-			return cfpkt_getlen(pkt);
+		return cfpkt_getlen(pkt);
 	}
 
 	/* Need to expand SKB */
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/core/skbuff.c linux-libre-3.18.48-gnu/net/core/skbuff.c
--- linux-libre-3.18.47-gnu/net/core/skbuff.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/core/skbuff.c	2017-02-08 03:43:17.000000000 -0500
@@ -77,6 +77,8 @@
 
 struct kmem_cache *skbuff_head_cache __read_mostly;
 static struct kmem_cache *skbuff_fclone_cache __read_mostly;
+int sysctl_max_skb_frags __read_mostly = MAX_SKB_FRAGS;
+EXPORT_SYMBOL(sysctl_max_skb_frags);
 
 /**
  *	skb_panic - private function for out-of-line support
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/core/sysctl_net_core.c linux-libre-3.18.48-gnu/net/core/sysctl_net_core.c
--- linux-libre-3.18.47-gnu/net/core/sysctl_net_core.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/core/sysctl_net_core.c	2017-02-08 03:43:17.000000000 -0500
@@ -27,6 +27,7 @@ static int one = 1;
 static int ushort_max = USHRT_MAX;
 static int min_sndbuf = SOCK_MIN_SNDBUF;
 static int min_rcvbuf = SOCK_MIN_RCVBUF;
+static int max_skb_frags = MAX_SKB_FRAGS;
 
 #ifdef CONFIG_RPS
 static int rps_sock_flow_sysctl(struct ctl_table *table, int write,
@@ -363,6 +364,15 @@ static struct ctl_table net_core_table[]
 		.mode		= 0644,
 		.proc_handler	= proc_dointvec
 	},
+	{
+		.procname	= "max_skb_frags",
+		.data		= &sysctl_max_skb_frags,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_minmax,
+		.extra1		= &one,
+		.extra2		= &max_skb_frags,
+	},
 	{ }
 };
 
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/ipv4/netfilter/nft_reject_ipv4.c linux-libre-3.18.48-gnu/net/ipv4/netfilter/nft_reject_ipv4.c
--- linux-libre-3.18.47-gnu/net/ipv4/netfilter/nft_reject_ipv4.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/ipv4/netfilter/nft_reject_ipv4.c	2017-02-08 03:43:17.000000000 -0500
@@ -32,6 +32,8 @@ void nft_reject_ipv4_eval(const struct n
 	case NFT_REJECT_TCP_RST:
 		nf_send_reset(pkt->skb, pkt->ops->hooknum);
 		break;
+	default:
+		break;
 	}
 
 	data[NFT_REG_VERDICT].verdict = NF_DROP;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/ipv4/tcp.c linux-libre-3.18.48-gnu/net/ipv4/tcp.c
--- linux-libre-3.18.47-gnu/net/ipv4/tcp.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/ipv4/tcp.c	2017-02-08 03:43:17.000000000 -0500
@@ -939,7 +939,7 @@ new_segment:
 
 		i = skb_shinfo(skb)->nr_frags;
 		can_coalesce = skb_can_coalesce(skb, i, page, offset);
-		if (!can_coalesce && i >= MAX_SKB_FRAGS) {
+		if (!can_coalesce && i >= sysctl_max_skb_frags) {
 			tcp_mark_push(tp, skb);
 			goto new_segment;
 		}
@@ -1225,7 +1225,7 @@ new_segment:
 
 				if (!skb_can_coalesce(skb, i, pfrag->page,
 						      pfrag->offset)) {
-					if (i == MAX_SKB_FRAGS || !sg) {
+					if (i == sysctl_max_skb_frags || !sg) {
 						tcp_mark_push(tp, skb);
 						goto new_segment;
 					}
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/ipv6/ip6_offload.c linux-libre-3.18.48-gnu/net/ipv6/ip6_offload.c
--- linux-libre-3.18.47-gnu/net/ipv6/ip6_offload.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/ipv6/ip6_offload.c	2017-02-08 03:43:17.000000000 -0500
@@ -305,7 +305,7 @@ static struct packet_offload ipv6_packet
 static const struct net_offload sit_offload = {
 	.callbacks = {
 		.gso_segment	= ipv6_gso_segment,
-		.gro_receive	= ipv6_gro_receive,
+		.gro_receive	= sit_gro_receive,
 		.gro_complete	= ipv6_gro_complete,
 	},
 };
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/ipv6/netfilter/nft_reject_ipv6.c linux-libre-3.18.48-gnu/net/ipv6/netfilter/nft_reject_ipv6.c
--- linux-libre-3.18.47-gnu/net/ipv6/netfilter/nft_reject_ipv6.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/ipv6/netfilter/nft_reject_ipv6.c	2017-02-08 03:43:17.000000000 -0500
@@ -34,6 +34,8 @@ void nft_reject_ipv6_eval(const struct n
 	case NFT_REJECT_TCP_RST:
 		nf_send_reset6(net, pkt->skb, pkt->ops->hooknum);
 		break;
+	default:
+		break;
 	}
 
 	data[NFT_REG_VERDICT].verdict = NF_DROP;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/netfilter/nft_compat.c linux-libre-3.18.48-gnu/net/netfilter/nft_compat.c
--- linux-libre-3.18.47-gnu/net/netfilter/nft_compat.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/netfilter/nft_compat.c	2017-02-08 03:43:17.000000000 -0500
@@ -277,11 +277,11 @@ static void nft_match_eval(const struct
 		return;
 	}
 
-	switch(ret) {
-	case true:
+	switch (ret ? 1 : 0) {
+	case 1:
 		data[NFT_REG_VERDICT].verdict = NFT_CONTINUE;
 		break;
-	case false:
+	case 0:
 		data[NFT_REG_VERDICT].verdict = NFT_BREAK;
 		break;
 	}
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/netfilter/nft_ct.c linux-libre-3.18.48-gnu/net/netfilter/nft_ct.c
--- linux-libre-3.18.47-gnu/net/netfilter/nft_ct.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/netfilter/nft_ct.c	2017-02-08 03:43:17.000000000 -0500
@@ -56,6 +56,8 @@ static void nft_ct_get_eval(const struct
 			state = NF_CT_STATE_BIT(ctinfo);
 		dest->data[0] = state;
 		return;
+	default:
+		break;
 	}
 
 	if (ct == NULL)
@@ -117,6 +119,8 @@ static void nft_ct_get_eval(const struct
 		return;
 	}
 #endif
+	default:
+		break;
 	}
 
 	tuple = &ct->tuplehash[priv->dir].tuple;
@@ -141,6 +145,8 @@ static void nft_ct_get_eval(const struct
 	case NFT_CT_PROTO_DST:
 		dest->data[0] = (__force __u16)tuple->dst.u.all;
 		return;
+	default:
+		break;
 	}
 	return;
 err:
@@ -172,6 +178,8 @@ static void nft_ct_set_eval(const struct
 		}
 		break;
 #endif
+	default:
+		break;
 	}
 }
 
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/netfilter/nft_reject.c linux-libre-3.18.48-gnu/net/netfilter/nft_reject.c
--- linux-libre-3.18.47-gnu/net/netfilter/nft_reject.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/netfilter/nft_reject.c	2017-02-08 03:43:17.000000000 -0500
@@ -63,6 +63,8 @@ int nft_reject_dump(struct sk_buff *skb,
 		if (nla_put_u8(skb, NFTA_REJECT_ICMP_CODE, priv->icmp_code))
 			goto nla_put_failure;
 		break;
+	default:
+		break;
 	}
 
 	return 0;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/net/netfilter/nft_reject_inet.c linux-libre-3.18.48-gnu/net/netfilter/nft_reject_inet.c
--- linux-libre-3.18.47-gnu/net/netfilter/nft_reject_inet.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/net/netfilter/nft_reject_inet.c	2017-02-08 03:43:17.000000000 -0500
@@ -105,6 +105,8 @@ static int nft_reject_inet_dump(struct s
 		if (nla_put_u8(skb, NFTA_REJECT_ICMP_CODE, priv->icmp_code))
 			goto nla_put_failure;
 		break;
+	default:
+		break;
 	}
 
 	return 0;
diff -druNp --no-dereference linux-libre-3.18.47-gnu/sound/pci/oxygen/oxygen_mixer.c linux-libre-3.18.48-gnu/sound/pci/oxygen/oxygen_mixer.c
--- linux-libre-3.18.47-gnu/sound/pci/oxygen/oxygen_mixer.c	2017-01-18 13:51:20.000000000 -0500
+++ linux-libre-3.18.48-gnu/sound/pci/oxygen/oxygen_mixer.c	2017-02-08 03:43:17.000000000 -0500
@@ -88,7 +88,7 @@ static int dac_mute_put(struct snd_kcont
 	int changed;
 
 	mutex_lock(&chip->mutex);
-	changed = !value->value.integer.value[0] != chip->dac_mute;
+	changed = (!value->value.integer.value[0]) != chip->dac_mute;
 	if (changed) {
 		chip->dac_mute = !value->value.integer.value[0];
 		chip->model.update_dac_mute(chip);
