diff -druNp --no-dereference linux-libre-3.13-gnu/drivers/extcon/extcon-gpio.c linux-libre-3.13.1-gnu/drivers/extcon/extcon-gpio.c
--- linux-libre-3.13-gnu/drivers/extcon/extcon-gpio.c	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/drivers/extcon/extcon-gpio.c	2014-01-29 08:06:37.000000000 -0500
@@ -105,6 +105,12 @@ static int gpio_extcon_probe(struct plat
 	extcon_data->state_off = pdata->state_off;
 	if (pdata->state_on && pdata->state_off)
 		extcon_data->edev.print_state = extcon_gpio_print_state;
+
+	ret = devm_gpio_request_one(&pdev->dev, extcon_data->gpio, GPIOF_DIR_IN,
+				    pdev->name);
+	if (ret < 0)
+		return ret;
+
 	if (pdata->debounce) {
 		ret = gpio_set_debounce(extcon_data->gpio,
 					pdata->debounce * 1000);
@@ -117,11 +123,6 @@ static int gpio_extcon_probe(struct plat
 	if (ret < 0)
 		return ret;
 
-	ret = devm_gpio_request_one(&pdev->dev, extcon_data->gpio, GPIOF_DIR_IN,
-				    pdev->name);
-	if (ret < 0)
-		goto err;
-
 	INIT_DELAYED_WORK(&extcon_data->work, gpio_extcon_work);
 
 	extcon_data->irq = gpio_to_irq(extcon_data->gpio);
diff -druNp --no-dereference linux-libre-3.13-gnu/drivers/md/raid5.c linux-libre-3.13.1-gnu/drivers/md/raid5.c
--- linux-libre-3.13-gnu/drivers/md/raid5.c	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/drivers/md/raid5.c	2014-01-29 08:06:37.000000000 -0500
@@ -675,8 +675,10 @@ get_active_stripe(struct r5conf *conf, s
 					 || !conf->inactive_blocked),
 					*(conf->hash_locks + hash));
 				conf->inactive_blocked = 0;
-			} else
+			} else {
 				init_stripe(sh, sector, previous);
+				atomic_inc(&sh->count);
+			}
 		} else {
 			spin_lock(&conf->device_lock);
 			if (atomic_read(&sh->count)) {
@@ -695,13 +697,11 @@ get_active_stripe(struct r5conf *conf, s
 					sh->group = NULL;
 				}
 			}
+			atomic_inc(&sh->count);
 			spin_unlock(&conf->device_lock);
 		}
 	} while (sh == NULL);
 
-	if (sh)
-		atomic_inc(&sh->count);
-
 	spin_unlock_irq(conf->hash_locks + hash);
 	return sh;
 }
@@ -2111,6 +2111,7 @@ static void raid5_end_write_request(stru
 			set_bit(R5_MadeGoodRepl, &sh->dev[i].flags);
 	} else {
 		if (!uptodate) {
+			set_bit(STRIPE_DEGRADED, &sh->state);
 			set_bit(WriteErrorSeen, &rdev->flags);
 			set_bit(R5_WriteError, &sh->dev[i].flags);
 			if (!test_and_set_bit(WantReplacement, &rdev->flags))
diff -druNp --no-dereference linux-libre-3.13-gnu/drivers/staging/comedi/comedi_fops.c linux-libre-3.13.1-gnu/drivers/staging/comedi/comedi_fops.c
--- linux-libre-3.13-gnu/drivers/staging/comedi/comedi_fops.c	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/drivers/staging/comedi/comedi_fops.c	2014-01-29 08:06:37.000000000 -0500
@@ -1425,6 +1425,7 @@ static int do_cmd_ioctl(struct comedi_de
 					  async->cmd.chanlist_len * sizeof(int));
 	if (IS_ERR(async->cmd.chanlist)) {
 		ret = PTR_ERR(async->cmd.chanlist);
+		async->cmd.chanlist = NULL;
 		DPRINTK("memdup_user failed with code %d\n", ret);
 		goto cleanup;
 	}
@@ -1547,6 +1548,7 @@ static int do_cmdtest_ioctl(struct comed
 				       cmd.chanlist_len * sizeof(int));
 		if (IS_ERR(chanlist)) {
 			ret = PTR_ERR(chanlist);
+			chanlist = NULL;
 			DPRINTK("memdup_user exited with code %d", ret);
 			goto cleanup;
 		}
diff -druNp --no-dereference linux-libre-3.13-gnu/drivers/staging/comedi/drivers/addi_apci_1032.c linux-libre-3.13.1-gnu/drivers/staging/comedi/drivers/addi_apci_1032.c
--- linux-libre-3.13-gnu/drivers/staging/comedi/drivers/addi_apci_1032.c	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/drivers/staging/comedi/drivers/addi_apci_1032.c	2014-01-29 08:06:37.000000000 -0500
@@ -325,8 +325,8 @@ static int apci1032_auto_attach(struct c
 	s = &dev->subdevices[1];
 	if (dev->irq) {
 		dev->read_subdev = s;
-		s->type		= COMEDI_SUBD_DI | SDF_CMD_READ;
-		s->subdev_flags	= SDF_READABLE;
+		s->type		= COMEDI_SUBD_DI;
+		s->subdev_flags	= SDF_READABLE | SDF_CMD_READ;
 		s->n_chan	= 1;
 		s->maxdata	= 1;
 		s->range_table	= &range_digital;
diff -druNp --no-dereference linux-libre-3.13-gnu/drivers/staging/comedi/drivers/adl_pci9111.c linux-libre-3.13.1-gnu/drivers/staging/comedi/drivers/adl_pci9111.c
--- linux-libre-3.13-gnu/drivers/staging/comedi/drivers/adl_pci9111.c	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/drivers/staging/comedi/drivers/adl_pci9111.c	2014-01-29 08:06:37.000000000 -0500
@@ -859,7 +859,7 @@ static int pci9111_auto_attach(struct co
 	pci9111_reset(dev);
 
 	if (pcidev->irq > 0) {
-		ret = request_irq(dev->irq, pci9111_interrupt,
+		ret = request_irq(pcidev->irq, pci9111_interrupt,
 				  IRQF_SHARED, dev->board_name, dev);
 		if (ret)
 			return ret;
diff -druNp --no-dereference linux-libre-3.13-gnu/drivers/tty/serial/amba-pl011.c linux-libre-3.13.1-gnu/drivers/tty/serial/amba-pl011.c
--- linux-libre-3.13-gnu/drivers/tty/serial/amba-pl011.c	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/drivers/tty/serial/amba-pl011.c	2014-01-29 08:06:37.000000000 -0500
@@ -1537,6 +1537,8 @@ static int pl011_startup(struct uart_por
 	/*
 	 * Provoke TX FIFO interrupt into asserting.
 	 */
+	spin_lock_irq(&uap->port.lock);
+
 	cr = UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_LBE;
 	writew(cr, uap->port.membase + UART011_CR);
 	writew(0, uap->port.membase + UART011_FBRD);
@@ -1561,6 +1563,8 @@ static int pl011_startup(struct uart_por
 	cr |= UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE;
 	writew(cr, uap->port.membase + UART011_CR);
 
+	spin_unlock_irq(&uap->port.lock);
+
 	/*
 	 * initialise the old status of the modem signals
 	 */
@@ -1629,11 +1633,13 @@ static void pl011_shutdown(struct uart_p
 	 * it during startup().
 	 */
 	uap->autorts = false;
+	spin_lock_irq(&uap->port.lock);
 	cr = readw(uap->port.membase + UART011_CR);
 	uap->old_cr = cr;
 	cr &= UART011_CR_RTS | UART011_CR_DTR;
 	cr |= UART01x_CR_UARTEN | UART011_CR_TXE;
 	writew(cr, uap->port.membase + UART011_CR);
+	spin_unlock_irq(&uap->port.lock);
 
 	/*
 	 * disable break condition and fifos
diff -druNp --no-dereference linux-libre-3.13-gnu/fs/gfs2/inode.c linux-libre-3.13.1-gnu/fs/gfs2/inode.c
--- linux-libre-3.13-gnu/fs/gfs2/inode.c	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/fs/gfs2/inode.c	2014-01-29 08:06:37.000000000 -0500
@@ -1607,10 +1607,22 @@ static int setattr_chown(struct inode *i
 	if (!(attr->ia_valid & ATTR_GID) || gid_eq(ogid, ngid))
 		ogid = ngid = NO_GID_QUOTA_CHANGE;
 
-	error = gfs2_quota_lock(ip, nuid, ngid);
+	error = get_write_access(inode);
 	if (error)
 		return error;
 
+	error = gfs2_rs_alloc(ip);
+	if (error)
+		goto out;
+
+	error = gfs2_rindex_update(sdp);
+	if (error)
+		goto out;
+
+	error = gfs2_quota_lock(ip, nuid, ngid);
+	if (error)
+		goto out;
+
 	if (!uid_eq(ouid, NO_UID_QUOTA_CHANGE) ||
 	    !gid_eq(ogid, NO_GID_QUOTA_CHANGE)) {
 		error = gfs2_quota_check(ip, nuid, ngid);
@@ -1637,6 +1649,8 @@ out_end_trans:
 	gfs2_trans_end(sdp);
 out_gunlock_q:
 	gfs2_quota_unlock(ip);
+out:
+	put_write_access(inode);
 	return error;
 }
 
diff -druNp --no-dereference linux-libre-3.13-gnu/include/linux/mm.h linux-libre-3.13.1-gnu/include/linux/mm.h
--- linux-libre-3.13-gnu/include/linux/mm.h	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/include/linux/mm.h	2014-01-29 08:06:37.000000000 -0500
@@ -846,11 +846,14 @@ static __always_inline void *lowmem_page
 #endif
 
 #if defined(WANT_PAGE_VIRTUAL)
-#define page_address(page) ((page)->virtual)
-#define set_page_address(page, address)			\
-	do {						\
-		(page)->virtual = (address);		\
-	} while(0)
+static inline void *page_address(const struct page *page)
+{
+	return page->virtual;
+}
+static inline void set_page_address(struct page *page, void *address)
+{
+	page->virtual = address;
+}
 #define page_address_init()  do { } while(0)
 #endif
 
diff -druNp --no-dereference linux-libre-3.13-gnu/Makefile linux-libre-3.13.1-gnu/Makefile
--- linux-libre-3.13-gnu/Makefile	2014-01-19 23:25:38.000000000 -0500
+++ linux-libre-3.13.1-gnu/Makefile	2014-01-29 12:27:35.000000000 -0500
@@ -1,6 +1,6 @@
 VERSION = 3
 PATCHLEVEL = 13
-SUBLEVEL = 0
+SUBLEVEL = 1
 EXTRAVERSION =-gnu
 NAME = One Giant Leap for Frogkind
 
diff -druNp --no-dereference linux-libre-3.13-gnu/sound/pci/hda/patch_hdmi.c linux-libre-3.13.1-gnu/sound/pci/hda/patch_hdmi.c
--- linux-libre-3.13-gnu/sound/pci/hda/patch_hdmi.c	2014-01-19 21:40:07.000000000 -0500
+++ linux-libre-3.13.1-gnu/sound/pci/hda/patch_hdmi.c	2014-01-29 08:06:37.000000000 -0500
@@ -1496,11 +1496,14 @@ static bool hdmi_present_sense(struct hd
 	 * specification worked this way. Hence, we just ignore the data in
 	 * the unsolicited response to avoid custom WARs.
 	 */
-	int present = snd_hda_pin_sense(codec, pin_nid);
+	int present;
 	bool update_eld = false;
 	bool eld_changed = false;
 	bool ret;
 
+	snd_hda_power_up(codec);
+	present = snd_hda_pin_sense(codec, pin_nid);
+
 	mutex_lock(&per_pin->lock);
 	pin_eld->monitor_present = !!(present & AC_PINSENSE_PRESENCE);
 	if (pin_eld->monitor_present)
@@ -1573,6 +1576,7 @@ static bool hdmi_present_sense(struct hd
 		jack->block_report = !ret;
 
 	mutex_unlock(&per_pin->lock);
+	snd_hda_power_down(codec);
 	return ret;
 }
 
