[kernel] r19608 - in dists/trunk/linux/debian: . config patches patches/bugfix/all patches/bugfix/arm patches/bugfix/ia64 patches/debian patches/debian/dfsg patches/features/all patches/features/all/aufs3

Ben Hutchings benh at alioth.debian.org
Sun Dec 16 15:20:30 UTC 2012


Author: benh
Date: Sun Dec 16 15:20:29 2012
New Revision: 19608

Log:
Update to 3.7

Update aufs to aufs3.x-rcN-20121210.
Disable rt, probably not available for 3.7.
Refresh/drop patches.  They apply but the result may not build.

Deleted:
   dists/trunk/linux/debian/patches/bugfix/all/speakup-lower-default-software-speech-rate.patch
   dists/trunk/linux/debian/patches/bugfix/arm/0001-usb-otg-Fix-build-errors-if-USB_MUSB_OMAP2PLUS-is-se.patch
   dists/trunk/linux/debian/patches/bugfix/arm/0001-usb-otg-make-twl6030_usb-as-a-comparator-driver-to-o.patch
   dists/trunk/linux/debian/patches/bugfix/arm/0001-usb-phy-add-a-new-driver-for-omap-usb2-phy.patch
   dists/trunk/linux/debian/patches/bugfix/arm/ARM-7492-1-add-strstr-declaration-for-decompressors.patch
   dists/trunk/linux/debian/patches/bugfix/ia64/IA64-Export-asm-cmpxchg.h-to-userland.patch
   dists/trunk/linux/debian/patches/debian/debugfs-set-default-mode-to-700.patch
Modified:
   dists/trunk/linux/debian/changelog
   dists/trunk/linux/debian/config/defines
   dists/trunk/linux/debian/patches/bugfix/all/exec-use-ELOOP-for-max-recursion-depth.patch
   dists/trunk/linux/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
   dists/trunk/linux/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch
   dists/trunk/linux/debian/patches/bugfix/arm/lis3l02dq-fix-building-without-irq-to-gpio.patch
   dists/trunk/linux/debian/patches/bugfix/ia64/nouveau-ACPI-support-is-dependent-on-X86.patch
   dists/trunk/linux/debian/patches/debian/cgroups-Document-the-Debian-memory-resource-controll.patch
   dists/trunk/linux/debian/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch
   dists/trunk/linux/debian/patches/debian/dfsg/vs6624-disable.patch
   dists/trunk/linux/debian/patches/debian/kernelvariables.patch
   dists/trunk/linux/debian/patches/debian/radeon-no-modeset-without-firmware.patch
   dists/trunk/linux/debian/patches/debian/version.patch
   dists/trunk/linux/debian/patches/features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch
   dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-add.patch
   dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-base.patch
   dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-kbuild.patch
   dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-standalone.patch
   dists/trunk/linux/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch
   dists/trunk/linux/debian/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch
   dists/trunk/linux/debian/patches/series

Modified: dists/trunk/linux/debian/changelog
==============================================================================
--- dists/trunk/linux/debian/changelog	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/changelog	Sun Dec 16 15:20:29 2012	(r19608)
@@ -1,7 +1,14 @@
-linux (3.6.9-1~experimental.2) UNRELEASED; urgency=low
+linux (3.7-1~experimental.1) UNRELEASED; urgency=low
 
+  * New upstream release: http://kernelnewbies.org/Linux_3.7
+
+  [ maximilian attems ]
   * Enable WIZNET_W5100, WIZNET_W5300, AMD_PHY, BCM87XX_PHY.
 
+  [ Ben Hutchings ]
+  * aufs: Update to aufs3.x-rcN-20121210
+  * [rt] Disable until it is updated for Linux 3.7 or later
+
  -- maximilian attems <maks at debian.org>  Thu, 06 Dec 2012 18:14:33 +0100
 
 linux (3.6.9-1~experimental.1) experimental; urgency=low

Modified: dists/trunk/linux/debian/config/defines
==============================================================================
--- dists/trunk/linux/debian/config/defines	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/config/defines	Sun Dec 16 15:20:29 2012	(r19608)
@@ -27,7 +27,7 @@
  rt
 
 [featureset-rt_base]
-enabled: true
+enabled: false
 
 [description]
 part-long-up: This kernel is not suitable for SMP (multi-processor,

Modified: dists/trunk/linux/debian/patches/bugfix/all/exec-use-ELOOP-for-max-recursion-depth.patch
==============================================================================
--- dists/trunk/linux/debian/patches/bugfix/all/exec-use-ELOOP-for-max-recursion-depth.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/bugfix/all/exec-use-ELOOP-for-max-recursion-depth.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -95,7 +95,7 @@
  	bprm->file = NULL;
 --- a/fs/exec.c
 +++ b/fs/exec.c
-@@ -1398,6 +1398,10 @@ int search_binary_handler(struct linux_b
+@@ -1371,6 +1371,10 @@ int search_binary_handler(struct linux_b
  	struct linux_binfmt *fmt;
  	pid_t old_pid, old_vpid;
  
@@ -106,7 +106,7 @@
  	retval = security_bprm_check(bprm);
  	if (retval)
  		return retval;
-@@ -1422,12 +1426,8 @@ int search_binary_handler(struct linux_b
+@@ -1395,12 +1399,8 @@ int search_binary_handler(struct linux_b
  			if (!try_module_get(fmt->module))
  				continue;
  			read_unlock(&binfmt_lock);
@@ -122,7 +122,7 @@
  				if (depth == 0) {
 --- a/include/linux/binfmts.h
 +++ b/include/linux/binfmts.h
-@@ -68,8 +68,6 @@ struct linux_binprm {
+@@ -54,8 +54,6 @@ struct linux_binprm {
  #define BINPRM_FLAGS_EXECFD_BIT 1
  #define BINPRM_FLAGS_EXECFD (1 << BINPRM_FLAGS_EXECFD_BIT)
  
@@ -130,4 +130,4 @@
 -
  /* Function parameter for binfmt->coredump */
  struct coredump_params {
- 	long signr;
+ 	siginfo_t *siginfo;

Modified: dists/trunk/linux/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
==============================================================================
--- dists/trunk/linux/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -52,7 +52,7 @@
  	/* disable MPU */
 --- a/arch/x86/kernel/microcode_amd.c
 +++ b/arch/x86/kernel/microcode_amd.c
-@@ -337,10 +337,8 @@ static enum ucode_state request_microcod
+@@ -429,10 +429,8 @@ static enum ucode_state request_microcod
  	if (c->x86 >= 0x15)
  		snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
  
@@ -95,7 +95,7 @@
      fw_size = firmware->size / sizeof(u32);
 --- a/drivers/bluetooth/ath3k.c
 +++ b/drivers/bluetooth/ath3k.c
-@@ -306,10 +306,8 @@ static int ath3k_load_patch(struct usb_d
+@@ -307,10 +307,8 @@ static int ath3k_load_patch(struct usb_d
  		fw_version.rom_version);
  
  	ret = request_firmware(&firmware, filename, &udev->dev);
@@ -107,7 +107,7 @@
  
  	pt_version.rom_version = *(int *)(firmware->data + firmware->size - 8);
  	pt_version.build_version = *(int *)
-@@ -368,10 +366,8 @@ static int ath3k_load_syscfg(struct usb_
+@@ -369,10 +367,8 @@ static int ath3k_load_syscfg(struct usb_
  		fw_version.rom_version, clk_value, ".dfu");
  
  	ret = request_firmware(&firmware, filename, &udev->dev);
@@ -121,22 +121,22 @@
  	release_firmware(firmware);
 --- a/drivers/bluetooth/bcm203x.c
 +++ b/drivers/bluetooth/bcm203x.c
-@@ -194,7 +194,6 @@ static int bcm203x_probe(struct usb_inte
+@@ -193,7 +193,6 @@ static int bcm203x_probe(struct usb_inte
  	}
  
  	if (request_firmware(&firmware, "BCM2033-MD.hex", &udev->dev) < 0) {
 -		BT_ERR("Mini driver request failed");
  		usb_free_urb(data->urb);
- 		kfree(data);
  		return -EIO;
-@@ -221,7 +220,6 @@ static int bcm203x_probe(struct usb_inte
+ 	}
+@@ -218,7 +217,6 @@ static int bcm203x_probe(struct usb_inte
  	release_firmware(firmware);
  
  	if (request_firmware(&firmware, "BCM2033-FW.bin", &udev->dev) < 0) {
 -		BT_ERR("Firmware request failed");
  		usb_free_urb(data->urb);
  		kfree(data->buffer);
- 		kfree(data);
+ 		return -EIO;
 --- a/drivers/bluetooth/bfusb.c
 +++ b/drivers/bluetooth/bfusb.c
 @@ -672,10 +672,8 @@ static int bfusb_probe(struct usb_interf
@@ -146,7 +146,7 @@
 -	if (request_firmware(&firmware, "bfubase.frm", &udev->dev) < 0) {
 -		BT_ERR("Firmware request failed");
 +	if (request_firmware(&firmware, "bfubase.frm", &udev->dev))
- 		goto error;
+ 		goto done;
 -	}
  
  	BT_DBG("firmware data %p size %zu", firmware->data, firmware->size);
@@ -216,7 +216,7 @@
  		goto err_firmware;
 --- a/drivers/gpu/drm/mga/mga_warp.c
 +++ b/drivers/gpu/drm/mga/mga_warp.c
-@@ -80,11 +80,8 @@ int mga_warp_install_microcode(drm_mga_p
+@@ -79,11 +79,8 @@ int mga_warp_install_microcode(drm_mga_p
  	}
  	rc = request_ihex_firmware(&fw, firmware_name, &pdev->dev);
  	platform_device_unregister(pdev);
@@ -229,14 +229,14 @@
  
  	size = 0;
  	where = 0;
---- a/drivers/gpu/drm/nouveau/nvc0_graph.c
-+++ b/drivers/gpu/drm/nouveau/nvc0_graph.c
-@@ -734,10 +734,8 @@ nvc0_graph_create_fw(struct drm_device *
+--- a/drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
++++ b/drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
+@@ -497,10 +497,8 @@ nvc0_graph_ctor_fw(struct nvc0_graph_pri
  	if (ret) {
  		snprintf(f, sizeof(f), "nouveau/%s", fwname);
- 		ret = request_firmware(&fw, f, &dev->pdev->dev);
+ 		ret = request_firmware(&fw, f, &device->pdev->dev);
 -		if (ret) {
--			NV_ERROR(dev, "failed to load %s\n", fwname);
+-			nv_error(priv, "failed to load %s\n", fwname);
 +		if (ret)
  			return ret;
 -		}
@@ -245,7 +245,7 @@
  	fuc->size = fw->size;
 --- a/drivers/gpu/drm/r128/r128_cce.c
 +++ b/drivers/gpu/drm/r128/r128_cce.c
-@@ -155,11 +155,8 @@ static int r128_cce_load_microcode(drm_r
+@@ -154,11 +154,8 @@ static int r128_cce_load_microcode(drm_r
  	}
  	rc = request_firmware(&fw, FIRMWARE_NAME, &pdev->dev);
  	platform_device_unregister(pdev);
@@ -273,7 +273,7 @@
  		release_firmware(rdev->me_fw);
 --- a/drivers/gpu/drm/radeon/r100.c
 +++ b/drivers/gpu/drm/radeon/r100.c
-@@ -1033,10 +1033,7 @@ static int r100_cp_init_microcode(struct
+@@ -1015,10 +1015,7 @@ static int r100_cp_init_microcode(struct
  
  	err = request_firmware(&rdev->me_fw, fw_name, &pdev->dev);
  	platform_device_unregister(pdev);
@@ -300,7 +300,7 @@
  		release_firmware(rdev->me_fw);
 --- a/drivers/gpu/drm/radeon/r600_cp.c
 +++ b/drivers/gpu/drm/radeon/r600_cp.c
-@@ -375,10 +375,6 @@ out:
+@@ -374,10 +374,6 @@ out:
  	platform_device_unregister(pdev);
  
  	if (err) {
@@ -313,7 +313,7 @@
  		release_firmware(dev_priv->me_fw);
 --- a/drivers/gpu/drm/radeon/radeon_cp.c
 +++ b/drivers/gpu/drm/radeon/radeon_cp.c
-@@ -544,10 +544,7 @@ static int radeon_cp_init_microcode(drm_
+@@ -542,10 +542,7 @@ static int radeon_cp_init_microcode(drm_
  
  	err = request_firmware(&dev_priv->me_fw, fw_name, &pdev->dev);
  	platform_device_unregister(pdev);
@@ -341,7 +341,7 @@
  	ret = qib_ibsd_ucode_loaded(dd->pport, fw);
 --- a/drivers/input/touchscreen/atmel_mxt_ts.c
 +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
-@@ -956,10 +956,8 @@ static int mxt_load_fw(struct device *de
+@@ -954,10 +954,8 @@ static int mxt_load_fw(struct device *de
  	int ret;
  
  	ret = request_firmware(&fw, fn, dev);
@@ -368,9 +368,9 @@
  	if (debug & DEBUG_HW)
  		pr_notice("%s: got firmware %zu bytes\n",
  			  card->name, firmware->size);
---- a/drivers/media/common/tuners/tuner-xc2028.c
-+++ b/drivers/media/common/tuners/tuner-xc2028.c
-@@ -1350,7 +1350,6 @@ static void load_firmware_cb(const struc
+--- a/drivers/media/tuners/tuner-xc2028.c
++++ b/drivers/media/tuners/tuner-xc2028.c
+@@ -1349,7 +1349,6 @@ static void load_firmware_cb(const struc
  
  	tuner_dbg("request_firmware_nowait(): %s\n", fw ? "OK" : "error");
  	if (!fw) {
@@ -378,8 +378,8 @@
  		priv->state = XC2028_NODEV;
  		return;
  	}
---- a/drivers/media/dvb/dvb-usb/dib0700_devices.c
-+++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c
+--- a/drivers/media/usb/dvb-usb/dib0700_devices.c
++++ b/drivers/media/usb/dvb-usb/dib0700_devices.c
 @@ -2108,12 +2108,9 @@ static int stk9090m_frontend_attach(stru
  
  	dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x10, 0x80);
@@ -410,8 +410,8 @@
  	nim9090md_config[0].microcode_B_fe_size = state->frontend_firmware->size;
  	nim9090md_config[0].microcode_B_fe_buffer = state->frontend_firmware->data;
  	nim9090md_config[1].microcode_B_fe_size = state->frontend_firmware->size;
---- a/drivers/media/dvb/dvb-usb/dvb-usb-firmware.c
-+++ b/drivers/media/dvb/dvb-usb/dvb-usb-firmware.c
+--- a/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
++++ b/drivers/media/usb/dvb-usb/dvb-usb-firmware.c
 @@ -80,14 +80,9 @@ int dvb_usb_download_firmware(struct usb
  	int ret;
  	const struct firmware *fw = NULL;
@@ -429,8 +429,8 @@
  
  	switch (props->usb_ctrl) {
  		case CYPRESS_AN2135:
---- a/drivers/media/dvb/dvb-usb/gp8psk.c
-+++ b/drivers/media/dvb/dvb-usb/gp8psk.c
+--- a/drivers/media/usb/dvb-usb/gp8psk.c
++++ b/drivers/media/usb/dvb-usb/gp8psk.c
 @@ -116,20 +116,14 @@ static int gp8psk_load_bcm4500fw(struct
  	const u8 *ptr;
  	u8 *buf;
@@ -453,8 +453,8 @@
  	ptr = fw->data;
  	buf = kmalloc(64, GFP_KERNEL | GFP_DMA);
  	if (!buf) {
---- a/drivers/media/dvb/dvb-usb/opera1.c
-+++ b/drivers/media/dvb/dvb-usb/opera1.c
+--- a/drivers/media/usb/dvb-usb/opera1.c
++++ b/drivers/media/usb/dvb-usb/opera1.c
 @@ -452,9 +452,6 @@ static int opera1_xilinx_load_firmware(s
  	info("start downloading fpga firmware %s",filename);
  
@@ -465,27 +465,28 @@
  		return ret;
  	} else {
  		p = kmalloc(fw->size, GFP_KERNEL);
---- a/drivers/media/dvb/frontends/af9013.c
-+++ b/drivers/media/dvb/frontends/af9013.c
-@@ -1348,15 +1348,8 @@ static int af9013_download_firmware(stru
+--- a/drivers/media/dvb-frontends/af9013.c
++++ b/drivers/media/dvb-frontends/af9013.c
+@@ -1363,16 +1363,8 @@ static int af9013_download_firmware(stru
  
  	/* request the firmware, this will block and timeout */
  	ret = request_firmware(&fw, fw_file, state->i2c->dev.parent);
 -	if (ret) {
--		err("did not find the firmware file. (%s) "
--			"Please see linux/Documentation/dvb/ for more details" \
--			" on firmware-problems. (%d)",
--			fw_file, ret);
+-		dev_info(&state->i2c->dev, "%s: did not find the firmware " \
+-			"file. (%s) Please see linux/Documentation/dvb/ for " \
+-			"more details on firmware-problems. (%d)\n",
+-			KBUILD_MODNAME, fw_file, ret);
 +	if (ret)
  		goto err;
 -	}
 -
--	info("downloading firmware from file '%s'", fw_file);
+-	dev_info(&state->i2c->dev, "%s: downloading firmware from file '%s'\n",
+-			KBUILD_MODNAME, fw_file);
  
  	/* calc checksum */
  	for (i = 0; i < fw->size; i++)
---- a/drivers/media/dvb/frontends/bcm3510.c
-+++ b/drivers/media/dvb/frontends/bcm3510.c
+--- a/drivers/media/dvb-frontends/bcm3510.c
++++ b/drivers/media/dvb-frontends/bcm3510.c
 @@ -622,10 +622,9 @@ static int bcm3510_download_firmware(str
  	int ret,i;
  
@@ -499,8 +500,8 @@
  	deb_info("got firmware: %zd\n",fw->size);
  
  	b = fw->data;
---- a/drivers/media/dvb/frontends/cx24116.c
-+++ b/drivers/media/dvb/frontends/cx24116.c
+--- a/drivers/media/dvb-frontends/cx24116.c
++++ b/drivers/media/dvb-frontends/cx24116.c
 @@ -493,13 +493,8 @@ static int cx24116_firmware_ondemand(str
  			__func__, CX24116_DEFAULT_FIRMWARE);
  		ret = request_firmware(&fw, CX24116_DEFAULT_FIRMWARE,
@@ -516,8 +517,8 @@
  
  		/* Make sure we don't recurse back through here
  		 * during loading */
---- a/drivers/media/dvb/frontends/drxd_hard.c
-+++ b/drivers/media/dvb/frontends/drxd_hard.c
+--- a/drivers/media/dvb-frontends/drxd_hard.c
++++ b/drivers/media/dvb-frontends/drxd_hard.c
 @@ -909,10 +909,8 @@ static int load_firmware(struct drxd_sta
  {
  	const struct firmware *fw;
@@ -530,8 +531,8 @@
  
  	state->microcode = kmemdup(fw->data, fw->size, GFP_KERNEL);
  	if (state->microcode == NULL) {
---- a/drivers/media/dvb/frontends/drxk_hard.c
-+++ b/drivers/media/dvb/frontends/drxk_hard.c
+--- a/drivers/media/dvb-frontends/drxk_hard.c
++++ b/drivers/media/dvb-frontends/drxk_hard.c
 @@ -6275,12 +6275,6 @@ static void load_firmware_cb(const struc
  
  	dprintk(1, ": %s\n", fw ? "firmware loaded" : "firmware not loaded");
@@ -545,9 +546,9 @@
  		state->microcode_name = NULL;
  
  		/*
---- a/drivers/media/dvb/frontends/ds3000.c
-+++ b/drivers/media/dvb/frontends/ds3000.c
-@@ -403,12 +403,8 @@ static int ds3000_firmware_ondemand(stru
+--- a/drivers/media/dvb-frontends/ds3000.c
++++ b/drivers/media/dvb-frontends/ds3000.c
+@@ -406,12 +406,8 @@ static int ds3000_firmware_ondemand(stru
  				DS3000_DEFAULT_FIRMWARE);
  	ret = request_firmware(&fw, DS3000_DEFAULT_FIRMWARE,
  				state->i2c->dev.parent);
@@ -561,36 +562,38 @@
  
  	/* Make sure we don't recurse back through here during loading */
  	state->skip_fw_load = 1;
---- a/drivers/media/dvb/frontends/nxt200x.c
-+++ b/drivers/media/dvb/frontends/nxt200x.c
-@@ -881,11 +881,8 @@ static int nxt2002_init(struct dvb_front
- 	printk("nxt2002: Waiting for firmware upload (%s)...\n", NXT2002_DEFAULT_FIRMWARE);
+--- a/drivers/media/dvb-frontends/nxt200x.c
++++ b/drivers/media/dvb-frontends/nxt200x.c
+@@ -882,12 +882,8 @@ static int nxt2002_init(struct dvb_front
+ 		 __func__, NXT2002_DEFAULT_FIRMWARE);
  	ret = request_firmware(&fw, NXT2002_DEFAULT_FIRMWARE,
  			       state->i2c->dev.parent);
--	printk("nxt2002: Waiting for firmware upload(2)...\n");
+-	pr_debug("%s: Waiting for firmware upload(2)...\n", __func__);
 -	if (ret) {
--		printk("nxt2002: No firmware uploaded (timeout or file not found?)\n");
+-		pr_err("%s: No firmware uploaded (timeout or file not found?)"
+-		       "\n", __func__);
 +	if (ret)
  		return ret;
 -	}
  
  	ret = nxt2002_load_firmware(fe, fw);
  	release_firmware(fw);
-@@ -946,11 +943,8 @@ static int nxt2004_init(struct dvb_front
- 	printk("nxt2004: Waiting for firmware upload (%s)...\n", NXT2004_DEFAULT_FIRMWARE);
+@@ -949,12 +945,8 @@ static int nxt2004_init(struct dvb_front
+ 		 __func__, NXT2004_DEFAULT_FIRMWARE);
  	ret = request_firmware(&fw, NXT2004_DEFAULT_FIRMWARE,
  			       state->i2c->dev.parent);
--	printk("nxt2004: Waiting for firmware upload(2)...\n");
+-	pr_debug("%s: Waiting for firmware upload(2)...\n", __func__);
 -	if (ret) {
--		printk("nxt2004: No firmware uploaded (timeout or file not found?)\n");
+-		pr_err("%s: No firmware uploaded (timeout or file not found?)"
+-		       "\n", __func__);
 +	if (ret)
  		return ret;
 -	}
  
  	ret = nxt2004_load_firmware(fe, fw);
  	release_firmware(fw);
---- a/drivers/media/dvb/frontends/or51132.c
-+++ b/drivers/media/dvb/frontends/or51132.c
+--- a/drivers/media/dvb-frontends/or51132.c
++++ b/drivers/media/dvb-frontends/or51132.c
 @@ -341,11 +341,8 @@ static int or51132_set_parameters(struct
  		printk("or51132: Waiting for firmware upload(%s)...\n",
  		       fwname);
@@ -604,8 +607,8 @@
  		ret = or51132_load_firmware(fe, fw);
  		release_firmware(fw);
  		if (ret) {
---- a/drivers/media/dvb/frontends/or51211.c
-+++ b/drivers/media/dvb/frontends/or51211.c
+--- a/drivers/media/dvb-frontends/or51211.c
++++ b/drivers/media/dvb-frontends/or51211.c
 @@ -379,12 +379,8 @@ static int or51211_init(struct dvb_front
  		       "(%s)...\n", OR51211_DEFAULT_FIRMWARE);
  		ret = config->request_firmware(fe, &fw,
@@ -620,8 +623,8 @@
  
  		ret = or51211_load_firmware(fe, fw);
  		release_firmware(fw);
---- a/drivers/media/dvb/frontends/sp8870.c
-+++ b/drivers/media/dvb/frontends/sp8870.c
+--- a/drivers/media/dvb-frontends/sp8870.c
++++ b/drivers/media/dvb-frontends/sp8870.c
 @@ -315,10 +315,8 @@ static int sp8870_init (struct dvb_front
  
  	/* request the firmware, this will block until someone uploads it */
@@ -634,8 +637,8 @@
  
  	if (sp8870_firmware_upload(state, fw)) {
  		printk("sp8870: writing firmware to device failed\n");
---- a/drivers/media/dvb/frontends/sp887x.c
-+++ b/drivers/media/dvb/frontends/sp887x.c
+--- a/drivers/media/dvb-frontends/sp887x.c
++++ b/drivers/media/dvb-frontends/sp887x.c
 @@ -527,10 +527,8 @@ static int sp887x_init(struct dvb_fronte
  		/* request the firmware, this will block until someone uploads it */
  		printk("sp887x: waiting for firmware upload (%s)...\n", SP887X_DEFAULT_FIRMWARE);
@@ -648,8 +651,8 @@
  
  		ret = sp887x_initial_setup(fe, fw);
  		release_firmware(fw);
---- a/drivers/media/dvb/frontends/tda10048.c
-+++ b/drivers/media/dvb/frontends/tda10048.c
+--- a/drivers/media/dvb-frontends/tda10048.c
++++ b/drivers/media/dvb-frontends/tda10048.c
 @@ -495,8 +495,6 @@ static int tda10048_firmware_upload(stru
  	ret = request_firmware(&fw, TDA10048_DEFAULT_FIRMWARE,
  		state->i2c->dev.parent);
@@ -659,9 +662,9 @@
  		return -EIO;
  	} else {
  		printk(KERN_INFO "%s: firmware read %Zu bytes.\n",
---- a/drivers/media/dvb/frontends/tda1004x.c
-+++ b/drivers/media/dvb/frontends/tda1004x.c
-@@ -397,10 +397,8 @@ static int tda10045_fwupload(struct dvb_
+--- a/drivers/media/dvb-frontends/tda1004x.c
++++ b/drivers/media/dvb-frontends/tda1004x.c
+@@ -401,10 +401,8 @@ static int tda10045_fwupload(struct dvb_
  	/* request the firmware, this will block until someone uploads it */
  	printk(KERN_INFO "tda1004x: waiting for firmware upload (%s)...\n", TDA10045_DEFAULT_FIRMWARE);
  	ret = state->config->request_firmware(fe, &fw, TDA10045_DEFAULT_FIRMWARE);
@@ -673,7 +676,7 @@
  
  	/* reset chip */
  	tda1004x_write_mask(state, TDA1004X_CONFC4, 0x10, 0);
-@@ -541,7 +539,6 @@ static int tda10046_fwupload(struct dvb_
+@@ -545,7 +543,6 @@ static int tda10046_fwupload(struct dvb_
  			/* remain compatible to old bug: try to load with tda10045 image name */
  			ret = state->config->request_firmware(fe, &fw, TDA10045_DEFAULT_FIRMWARE);
  			if (ret) {
@@ -681,8 +684,8 @@
  				return ret;
  			} else {
  				printk(KERN_INFO "tda1004x: please rename the firmware file to %s\n",
---- a/drivers/media/dvb/frontends/tda10071.c
-+++ b/drivers/media/dvb/frontends/tda10071.c
+--- a/drivers/media/dvb-frontends/tda10071.c
++++ b/drivers/media/dvb-frontends/tda10071.c
 @@ -939,14 +939,8 @@ static int tda10071_init(struct dvb_fron
  
  		/* request the firmware, this will block and timeout */
@@ -699,9 +702,9 @@
  
  		/* init */
  		for (i = 0; i < ARRAY_SIZE(tab2); i++) {
---- a/drivers/media/dvb/ngene/ngene-core.c
-+++ b/drivers/media/dvb/ngene/ngene-core.c
-@@ -1272,13 +1272,8 @@ static int ngene_load_firm(struct ngene
+--- a/drivers/media/pci/ngene/ngene-core.c
++++ b/drivers/media/pci/ngene/ngene-core.c
+@@ -1266,13 +1266,8 @@ static int ngene_load_firm(struct ngene
  		break;
  	}
  
@@ -716,7 +719,7 @@
  	if (size == 0)
  		size = fw->size;
  	if (size != fw->size) {
-@@ -1286,8 +1281,6 @@ static int ngene_load_firm(struct ngene
+@@ -1280,8 +1275,6 @@ static int ngene_load_firm(struct ngene
  			": Firmware %s has invalid size!", fw_name);
  		err = -1;
  	} else {
@@ -725,8 +728,8 @@
  		ngene_fw = (u8 *) fw->data;
  		err = ngene_command_load_firmware(dev, ngene_fw, size);
  	}
---- a/drivers/media/dvb/siano/smscoreapi.c
-+++ b/drivers/media/dvb/siano/smscoreapi.c
+--- a/drivers/media/common/siano/smscoreapi.c
++++ b/drivers/media/common/siano/smscoreapi.c
 @@ -639,10 +639,8 @@ static int smscore_load_firmware_from_fi
  		return -EINVAL;
  
@@ -739,8 +742,8 @@
  	sms_info("read FW %s, size=%zd", filename, fw->size);
  	fw_buffer = kmalloc(ALIGN(fw->size, SMS_ALLOC_ALIGNMENT),
  			    GFP_KERNEL | GFP_DMA);
---- a/drivers/media/dvb/ttpci/av7110.c
-+++ b/drivers/media/dvb/ttpci/av7110.c
+--- a/drivers/media/pci/ttpci/av7110.c
++++ b/drivers/media/pci/ttpci/av7110.c
 @@ -1531,16 +1531,9 @@ static int get_firmware(struct av7110* a
  	/* request the av7110 firmware, this will block until someone uploads it */
  	ret = request_firmware(&fw, "dvb-ttpci-01.fw", &av7110->dev->pci->dev);
@@ -760,8 +763,8 @@
  		return -EINVAL;
  	}
  
---- a/drivers/media/dvb/ttpci/av7110_hw.c
-+++ b/drivers/media/dvb/ttpci/av7110_hw.c
+--- a/drivers/media/pci/ttpci/av7110_hw.c
++++ b/drivers/media/pci/ttpci/av7110_hw.c
 @@ -243,11 +243,8 @@ int av7110_bootarm(struct av7110 *av7110
  	//saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
  
@@ -775,8 +778,8 @@
  
  	mwdebi(av7110, DEBISWAB, DPRAM_BASE, fw->data, fw->size);
  	release_firmware(fw);
---- a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
-+++ b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
+--- a/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
++++ b/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c
 @@ -296,10 +296,8 @@ static int ttusb_boot_dsp(struct ttusb *
  
  	err = request_firmware(&fw, "ttusb-budget/dspbootcode.bin",
@@ -789,8 +792,8 @@
  
  	/* BootBlock */
  	b[0] = 0xaa;
---- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c
-+++ b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
+--- a/drivers/media/usb/ttusb-dec/ttusb_dec.c
++++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c
 @@ -1293,11 +1293,8 @@ static int ttusb_dec_boot_dsp(struct ttu
  
  	dprintk("%s\n", __func__);
@@ -833,8 +836,8 @@
  	fmdbg("Firmware(%s) length : %d bytes\n", fw_name, fw_entry->size);
  
  	fw_data = (void *)fw_entry->data;
---- a/drivers/media/video/bt8xx/bttv-cards.c
-+++ b/drivers/media/video/bt8xx/bttv-cards.c
+--- a/drivers/media/pci/bt8xx/bttv-cards.c
++++ b/drivers/media/pci/bt8xx/bttv-cards.c
 @@ -3753,10 +3753,8 @@ static int __devinit pvr_boot(struct btt
  	int rc;
  
@@ -847,9 +850,9 @@
  	rc = pvr_altera_load(btv, fw_entry->data, fw_entry->size);
  	pr_info("%d: altera firmware upload %s\n",
  		btv->c.nr, (rc < 0) ? "failed" : "ok");
---- a/drivers/media/video/cpia2/cpia2_core.c
-+++ b/drivers/media/video/cpia2/cpia2_core.c
-@@ -903,11 +903,8 @@ static int apply_vp_patch(struct camera_
+--- a/drivers/media/usb/cpia2/cpia2_core.c
++++ b/drivers/media/usb/cpia2/cpia2_core.c
+@@ -907,11 +907,8 @@ static int apply_vp_patch(struct camera_
  	struct cpia2_command cmd;
  
  	ret = request_firmware(&fw, fw_name, &cam->dev->dev);
@@ -862,8 +865,8 @@
  
  	cmd.req_mode = CAMERAACCESS_TYPE_REPEAT | CAMERAACCESS_VP;
  	cmd.direction = TRANSFER_WRITE;
---- a/drivers/media/video/cx18/cx18-av-firmware.c
-+++ b/drivers/media/video/cx18/cx18-av-firmware.c
+--- a/drivers/media/pci/cx18/cx18-av-firmware.c
++++ b/drivers/media/pci/cx18/cx18-av-firmware.c
 @@ -85,10 +85,8 @@ int cx18_av_loadfw(struct cx18 *cx)
  	int i;
  	int retries1 = 0;
@@ -876,9 +879,9 @@
  
  	/* The firmware load often has byte errors, so allow for several
  	   retries, both at byte level and at the firmware load level. */
---- a/drivers/media/video/cx18/cx18-dvb.c
-+++ b/drivers/media/video/cx18/cx18-dvb.c
-@@ -139,9 +139,7 @@ static int yuan_mpc718_mt352_reqfw(struc
+--- a/drivers/media/pci/cx18/cx18-dvb.c
++++ b/drivers/media/pci/cx18/cx18-dvb.c
+@@ -141,9 +141,7 @@ static int yuan_mpc718_mt352_reqfw(struc
  	int ret;
  
  	ret = request_firmware(fw, fn, &cx->pci_dev->dev);
@@ -889,7 +892,7 @@
  		size_t sz = (*fw)->size;
  		if (sz < 2 || sz > 64 || (sz % 2) != 0) {
  			CX18_ERR("Firmware %s has a bad size: %lu bytes\n",
-@@ -154,7 +152,7 @@ static int yuan_mpc718_mt352_reqfw(struc
+@@ -156,7 +154,7 @@ static int yuan_mpc718_mt352_reqfw(struc
  
  	if (ret) {
  		CX18_ERR("The MPC718 board variant with the MT352 DVB-T"
@@ -898,8 +901,8 @@
  		CX18_ERR("Run 'linux/Documentation/dvb/get_dvb_firmware "
  			  "mpc718' if you need the firmware\n");
  	}
---- a/drivers/media/video/cx18/cx18-firmware.c
-+++ b/drivers/media/video/cx18/cx18-firmware.c
+--- a/drivers/media/pci/cx18/cx18-firmware.c
++++ b/drivers/media/pci/cx18/cx18-firmware.c
 @@ -106,11 +106,8 @@ static int load_cpu_fw_direct(const char
  	u32 __iomem *dst = (u32 __iomem *)mem;
  	const u32 *src;
@@ -922,8 +925,8 @@
  		cx18_setup_page(cx, 0);
  		return -ENOMEM;
  	}
---- a/drivers/media/video/cx231xx/cx231xx-417.c
-+++ b/drivers/media/video/cx231xx/cx231xx-417.c
+--- a/drivers/media/usb/cx231xx/cx231xx-417.c
++++ b/drivers/media/usb/cx231xx/cx231xx-417.c
 @@ -979,14 +979,8 @@ static int cx231xx_load_firmware(struct
  	retval = request_firmware(&firmware, CX231xx_FIRM_IMAGE_NAME,
  				  &dev->udev->dev);
@@ -940,8 +943,8 @@
  
  	if (firmware->size != CX231xx_FIRM_IMAGE_SIZE) {
  		printk(KERN_ERR "ERROR: Firmware size mismatch "
---- a/drivers/media/video/cx23885/cx23885-417.c
-+++ b/drivers/media/video/cx23885/cx23885-417.c
+--- a/drivers/media/pci/cx23885/cx23885-417.c
++++ b/drivers/media/pci/cx23885/cx23885-417.c
 @@ -930,14 +930,8 @@ static int cx23885_load_firmware(struct
  	retval = request_firmware(&firmware, CX23885_FIRM_IMAGE_NAME,
  				  &dev->pci->dev);
@@ -958,9 +961,9 @@
  
  	if (firmware->size != CX23885_FIRM_IMAGE_SIZE) {
  		printk(KERN_ERR "ERROR: Firmware size mismatch "
---- a/drivers/media/video/cx23885/cx23885-cards.c
-+++ b/drivers/media/video/cx23885/cx23885-cards.c
-@@ -1664,11 +1664,7 @@ void cx23885_card_setup(struct cx23885_d
+--- a/drivers/media/pci/cx23885/cx23885-cards.c
++++ b/drivers/media/pci/cx23885/cx23885-cards.c
+@@ -1681,11 +1681,7 @@ void cx23885_card_setup(struct cx23885_d
  				cinfo.rev, filename);
  
  		ret = request_firmware(&fw, filename, &dev->pci->dev);
@@ -973,9 +976,9 @@
  			altera_init(&netup_config, fw);
  
  		release_firmware(fw);
---- a/drivers/media/video/cx25840/cx25840-firmware.c
-+++ b/drivers/media/video/cx25840/cx25840-firmware.c
-@@ -123,10 +123,8 @@ int cx25840_loadfw(struct i2c_client *cl
+--- a/drivers/media/i2c/cx25840/cx25840-firmware.c
++++ b/drivers/media/i2c/cx25840/cx25840-firmware.c
+@@ -127,10 +127,8 @@ int cx25840_loadfw(struct i2c_client *cl
  		MAX_BUF_SIZE = 16;  /* cx231xx cannot accept more than 16 bytes at a time */
  	}
  
@@ -987,8 +990,8 @@
  
  	start_fw_load(client);
  
---- a/drivers/media/video/cx88/cx88-blackbird.c
-+++ b/drivers/media/video/cx88/cx88-blackbird.c
+--- a/drivers/media/pci/cx88/cx88-blackbird.c
++++ b/drivers/media/pci/cx88/cx88-blackbird.c
 @@ -447,13 +447,8 @@ static int blackbird_load_firmware(struc
  				  &dev->pci->dev);
  
@@ -1004,9 +1007,9 @@
  
  	if (firmware->size != BLACKBIRD_FIRM_IMAGE_SIZE) {
  		dprintk(0, "ERROR: Firmware size mismatch (have %zd, expected %d)\n",
---- a/drivers/media/video/gspca/vicam.c
-+++ b/drivers/media/video/gspca/vicam.c
-@@ -245,10 +245,8 @@ static int sd_init(struct gspca_dev *gsp
+--- a/drivers/media/usb/gspca/vicam.c
++++ b/drivers/media/usb/gspca/vicam.c
+@@ -244,10 +244,8 @@ static int sd_init(struct gspca_dev *gsp
  
  	ret = request_ihex_firmware(&fw, VICAM_FIRMWARE,
  				    &gspca_dev->dev->dev);
@@ -1018,8 +1021,8 @@
  
  	firmware_buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
  	if (!firmware_buf) {
---- a/drivers/media/video/ivtv/ivtv-firmware.c
-+++ b/drivers/media/video/ivtv/ivtv-firmware.c
+--- a/drivers/media/pci/ivtv/ivtv-firmware.c
++++ b/drivers/media/pci/ivtv/ivtv-firmware.c
 @@ -80,8 +80,6 @@ retry:
  		release_firmware(fw);
  		return size;
@@ -1029,8 +1032,8 @@
  	return -ENOMEM;
  }
  
---- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
-+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+--- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
++++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
 @@ -1382,29 +1382,6 @@ static int pvr2_locate_firmware(struct p
  			   "request_firmware fatal error with code=%d",ret);
  		return ret;
@@ -1061,9 +1064,9 @@
  	return ret;
  }
  
---- a/drivers/media/video/s2255drv.c
-+++ b/drivers/media/video/s2255drv.c
-@@ -2585,10 +2585,8 @@ static int s2255_probe(struct usb_interf
+--- a/drivers/media/usb/s2255/s2255drv.c
++++ b/drivers/media/usb/s2255/s2255drv.c
+@@ -2587,10 +2587,8 @@ static int s2255_probe(struct usb_interf
  	}
  	/* load the first chunk */
  	if (request_firmware(&dev->fw_data->fw,
@@ -1075,24 +1078,24 @@
  	/* check the firmware is valid */
  	fw_size = dev->fw_data->fw->size;
  	pdata = (__le32 *) &dev->fw_data->fw->data[fw_size - 8];
---- a/drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-+++ b/drivers/media/video/s5p-mfc/s5p_mfc_ctrl.c
-@@ -39,10 +39,8 @@ int s5p_mfc_alloc_and_load_firmware(stru
- 	mfc_debug_enter();
+--- a/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
++++ b/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c
+@@ -40,10 +40,8 @@ int s5p_mfc_alloc_and_load_firmware(stru
+ 
  	err = request_firmware((const struct firmware **)&fw_blob,
- 				     "s5p-mfc.fw", dev->v4l2_dev.dev);
+ 				     dev->variant->fw_name, dev->v4l2_dev.dev);
 -	if (err != 0) {
 -		mfc_err("Firmware is not present in the /lib/firmware directory nor compiled in kernel\n");
 +	if (err != 0)
  		return -EINVAL;
 -	}
- 	dev->fw_size = ALIGN(fw_blob->size, FIRMWARE_ALIGN);
- 	if (s5p_mfc_bitproc_buf) {
- 		mfc_err("Attempting to allocate firmware when it seems that it is already loaded\n");
-@@ -117,10 +115,8 @@ int s5p_mfc_reload_firmware(struct s5p_m
- 	mfc_debug_enter();
+ 	dev->fw_size = dev->variant->buf_size->fw;
+ 	if (fw_blob->size > dev->fw_size) {
+ 		mfc_err("MFC firmware is too big to be loaded\n");
+@@ -133,10 +131,8 @@ int s5p_mfc_reload_firmware(struct s5p_m
+ 
  	err = request_firmware((const struct firmware **)&fw_blob,
- 				     "s5p-mfc.fw", dev->v4l2_dev.dev);
+ 				     dev->variant->fw_name, dev->v4l2_dev.dev);
 -	if (err != 0) {
 -		mfc_err("Firmware is not present in the /lib/firmware directory nor compiled in kernel\n");
 +	if (err != 0)
@@ -1101,8 +1104,8 @@
  	if (fw_blob->size > dev->fw_size) {
  		mfc_err("MFC firmware is too big to be loaded\n");
  		release_firmware(fw_blob);
---- a/drivers/media/video/saa7164/saa7164-fw.c
-+++ b/drivers/media/video/saa7164/saa7164-fw.c
+--- a/drivers/media/pci/saa7164/saa7164-fw.c
++++ b/drivers/media/pci/saa7164/saa7164-fw.c
 @@ -420,11 +420,8 @@ int saa7164_downloadfirmware(struct saa7
  			__func__, fwname);
  
@@ -1116,8 +1119,8 @@
  
  		printk(KERN_INFO "%s() firmware read %Zu bytes.\n",
  			__func__, fw->size);
---- a/drivers/media/video/tlg2300/pd-main.c
-+++ b/drivers/media/video/tlg2300/pd-main.c
+--- a/drivers/media/usb/tlg2300/pd-main.c
++++ b/drivers/media/usb/tlg2300/pd-main.c
 @@ -220,10 +220,8 @@ static int firmware_download(struct usb_
  	size_t max_packet_size;
  
@@ -1132,7 +1135,7 @@
  
 --- a/drivers/misc/ti-st/st_kim.c
 +++ b/drivers/misc/ti-st/st_kim.c
-@@ -281,11 +281,8 @@ static long download_firmware(struct kim
+@@ -301,11 +301,8 @@ static long download_firmware(struct kim
  	    request_firmware(&kim_gdata->fw_entry, bts_scr_name,
  			     &kim_gdata->kim_pdev->dev);
  	if (unlikely((err != 0) || (kim_gdata->fw_entry->data == NULL) ||
@@ -1242,7 +1245,7 @@
  	if (bp->mips_firmware->size < sizeof(*mips_fw) ||
 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-@@ -11642,11 +11642,8 @@ static int bnx2x_init_firmware(struct bn
+@@ -11645,11 +11645,8 @@ static int bnx2x_init_firmware(struct bn
  	BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
  
  	rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev);
@@ -1257,7 +1260,7 @@
  	if (rc) {
 --- a/drivers/net/ethernet/broadcom/tg3.c
 +++ b/drivers/net/ethernet/broadcom/tg3.c
-@@ -10105,11 +10105,8 @@ static int tg3_request_firmware(struct t
+@@ -10161,11 +10161,8 @@ static int tg3_request_firmware(struct t
  {
  	const __be32 *fw_data;
  
@@ -1328,7 +1331,7 @@
  	if (ret)
 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
 +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
-@@ -834,11 +834,8 @@ static int upgrade_fw(struct adapter *ad
+@@ -918,11 +918,8 @@ static int upgrade_fw(struct adapter *ad
  	struct device *dev = adap->pdev_dev;
  
  	ret = request_firmware(&fw, FW_FNAME, dev);
@@ -1410,7 +1413,7 @@
  			       fw->size, fw_name[predef]);
 --- a/drivers/net/usb/kaweth.c
 +++ b/drivers/net/usb/kaweth.c
-@@ -400,10 +400,8 @@ static int kaweth_download_firmware(stru
+@@ -398,10 +398,8 @@ static int kaweth_download_firmware(stru
  	int ret;
  
  	ret = request_firmware(&fw, fwname, &kaweth->dev->dev);
@@ -1448,7 +1451,7 @@
  	} else
 --- a/drivers/net/wireless/at76c50x-usb.c
 +++ b/drivers/net/wireless/at76c50x-usb.c
-@@ -1584,14 +1584,8 @@ static struct fwentry *at76_load_firmwar
+@@ -1554,14 +1554,8 @@ static struct fwentry *at76_load_firmwar
  
  	at76_dbg(DBG_FW, "downloading firmware %s", fwe->fwname);
  	ret = request_firmware(&fwe->fw, fwe->fwname, &udev->dev);
@@ -1466,7 +1469,7 @@
  	fwh = (struct at76_fw_header *)(fwe->fw->data);
 --- a/drivers/net/wireless/ath/ath9k/hif_usb.c
 +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
-@@ -1090,12 +1090,8 @@ static void ath9k_hif_usb_firmware_cb(co
+@@ -1092,12 +1092,8 @@ static void ath9k_hif_usb_firmware_cb(co
  	struct hif_device_usb *hif_dev = context;
  	int ret;
  
@@ -1545,7 +1548,7 @@
  	hdr = (struct b43legacy_fw_header *)((*fw)->data);
 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
 +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
-@@ -3480,10 +3480,8 @@ static int brcmf_sdbrcm_download_code_fi
+@@ -3220,10 +3220,8 @@ static int brcmf_sdbrcm_download_code_fi
  
  	ret = request_firmware(&bus->firmware, BRCMF_SDIO_FW_NAME,
  			       &bus->sdiodev->func[2]->dev);
@@ -1557,7 +1560,7 @@
  	bus->fw_ptr = 0;
  
  	memptr = memblock = kmalloc(MEMBLOCK + BRCMF_SDALIGN, GFP_ATOMIC);
-@@ -3599,10 +3597,8 @@ static int brcmf_sdbrcm_download_nvram(s
+@@ -3339,10 +3337,8 @@ static int brcmf_sdbrcm_download_nvram(s
  
  	ret = request_firmware(&bus->firmware, BRCMF_SDIO_NV_NAME,
  			       &bus->sdiodev->func[2]->dev);
@@ -1571,7 +1574,7 @@
  
 --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
 +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-@@ -777,19 +777,13 @@ static int brcms_request_fw(struct brcms
+@@ -784,19 +784,13 @@ static int brcms_request_fw(struct brcms
  		sprintf(fw_name, "%s-%d.fw", brcms_firmwares[i],
  			UCODE_LOADER_API_VER);
  		status = request_firmware(&wl->fw.fw_bin[i], fw_name, device);
@@ -1595,7 +1598,7 @@
  	}
 --- a/drivers/net/wireless/ipw2x00/ipw2100.c
 +++ b/drivers/net/wireless/ipw2x00/ipw2100.c
-@@ -8476,12 +8476,8 @@ static int ipw2100_get_firmware(struct i
+@@ -8467,12 +8467,8 @@ static int ipw2100_get_firmware(struct i
  
  	rc = request_firmware(&fw->fw_entry, fw_name, &priv->pci_dev->dev);
  
@@ -1625,7 +1628,7 @@
  		IPW_ERROR("%s is too small (%zd)\n", name, (*raw)->size);
 --- a/drivers/net/wireless/iwlegacy/3945-mac.c
 +++ b/drivers/net/wireless/iwlegacy/3945-mac.c
-@@ -1844,7 +1844,6 @@ il3945_read_ucode(struct il_priv *il)
+@@ -1846,7 +1846,6 @@ il3945_read_ucode(struct il_priv *il)
  		sprintf(buf, "%s%u%s", name_pre, idx, ".ucode");
  		ret = request_firmware(&ucode_raw, buf, &il->pci_dev->dev);
  		if (ret < 0) {
@@ -1635,7 +1638,7 @@
  			else
 --- a/drivers/net/wireless/iwlwifi/iwl-drv.c
 +++ b/drivers/net/wireless/iwlwifi/iwl-drv.c
-@@ -789,13 +789,8 @@ static void iwl_ucode_callback(const str
+@@ -846,13 +846,8 @@ static void iwl_req_fw_callback(const st
  
  	memset(&pieces, 0, sizeof(pieces));
  
@@ -1663,7 +1666,7 @@
  	}
 --- a/drivers/net/wireless/mwifiex/main.c
 +++ b/drivers/net/wireless/mwifiex/main.c
-@@ -316,11 +316,8 @@ static void mwifiex_fw_dpc(const struct
+@@ -315,11 +315,8 @@ static void mwifiex_fw_dpc(const struct
  	struct mwifiex_adapter *adapter = context;
  	struct mwifiex_fw_image fw;
  
@@ -1678,7 +1681,7 @@
  	adapter->firmware = firmware;
 --- a/drivers/net/wireless/mwl8k.c
 +++ b/drivers/net/wireless/mwl8k.c
-@@ -5297,16 +5297,12 @@ static int mwl8k_firmware_load_success(s
+@@ -5300,16 +5300,12 @@ static int mwl8k_firmware_load_success(s
  static void mwl8k_fw_state_machine(const struct firmware *fw, void *context)
  {
  	struct mwl8k_priv *priv = context;
@@ -1696,7 +1699,7 @@
  		priv->fw_helper = fw;
  		rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode,
  				      true);
-@@ -5341,11 +5337,8 @@ static void mwl8k_fw_state_machine(const
+@@ -5344,11 +5340,8 @@ static void mwl8k_fw_state_machine(const
  		break;
  
  	case FW_STATE_LOADING_ALT:
@@ -1709,7 +1712,7 @@
  		priv->fw_ucode = fw;
  		rc = mwl8k_firmware_load_success(priv);
  		if (rc)
-@@ -5383,10 +5376,8 @@ retry:
+@@ -5386,10 +5379,8 @@ retry:
  
  	/* Ask userland hotplug daemon for the device firmware */
  	rc = mwl8k_request_firmware(priv, fw_image, nowait);
@@ -1767,14 +1770,14 @@
  
 --- a/drivers/net/wireless/p54/p54pci.c
 +++ b/drivers/net/wireless/p54/p54pci.c
-@@ -564,7 +564,6 @@ static int __devinit p54p_probe(struct p
- 	err = request_firmware(&priv->firmware, "isl3886pci",
- 			       &priv->pdev->dev);
- 	if (err) {
+@@ -497,7 +497,6 @@ static void p54p_firmware_step2(const st
+ 	int err;
+ 
+ 	if (!fw) {
 -		dev_err(&pdev->dev, "Cannot find firmware (isl3886pci)\n");
- 		err = request_firmware(&priv->firmware, "isl3886",
- 				       &priv->pdev->dev);
- 		if (err)
+ 		err = -ENOENT;
+ 		goto out;
+ 	}
 --- a/drivers/net/wireless/p54/p54spi.c
 +++ b/drivers/net/wireless/p54/p54spi.c
 @@ -171,10 +171,8 @@ static int p54spi_request_firmware(struc
@@ -1987,7 +1990,7 @@
  	if (err) {
 --- a/drivers/scsi/bfa/bfad.c
 +++ b/drivers/scsi/bfa/bfad.c
-@@ -1579,7 +1579,6 @@ bfad_read_firmware(struct pci_dev *pdev,
+@@ -1803,7 +1803,6 @@ bfad_read_firmware(struct pci_dev *pdev,
  	const struct firmware *fw;
  
  	if (request_firmware(&fw, fw_name, &pdev->dev)) {
@@ -1997,11 +2000,11 @@
  	}
 --- a/drivers/scsi/ipr.c
 +++ b/drivers/scsi/ipr.c
-@@ -3746,10 +3746,8 @@ static ssize_t ipr_store_update_fw(struc
+@@ -3779,10 +3779,8 @@ static ssize_t ipr_store_update_fw(struc
  	len = snprintf(fname, 99, "%s", buf);
  	fname[len-1] = '\0';
  
--	if(request_firmware(&fw_entry, fname, &ioa_cfg->pdev->dev)) {
+-	if (request_firmware(&fw_entry, fname, &ioa_cfg->pdev->dev)) {
 -		dev_err(&ioa_cfg->pdev->dev, "Firmware file %s not found\n", fname);
 +	if (request_firmware(&fw_entry, fname, &ioa_cfg->pdev->dev))
  		return -EIO;
@@ -2034,7 +2037,7 @@
  	}
 --- a/drivers/scsi/qla2xxx/qla_init.c
 +++ b/drivers/scsi/qla2xxx/qla_init.c
-@@ -4582,8 +4582,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
+@@ -4993,8 +4993,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
  	/* Load firmware blob. */
  	blob = qla2x00_request_firmware(vha);
  	if (!blob) {
@@ -2043,7 +2046,7 @@
  		ql_log(ql_log_info, vha, 0x0084,
  		    "Firmware images can be retrieved from: "QLA_FW_URL ".\n");
  		return QLA_FUNCTION_FAILED;
-@@ -4684,8 +4682,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
+@@ -5095,8 +5093,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
  	/* Load firmware blob. */
  	blob = qla2x00_request_firmware(vha);
  	if (!blob) {
@@ -2054,7 +2057,7 @@
  		    QLA_FW_URL ".\n");
 --- a/drivers/scsi/qla2xxx/qla_nx.c
 +++ b/drivers/scsi/qla2xxx/qla_nx.c
-@@ -2459,11 +2459,8 @@ try_blob_fw:
+@@ -2463,11 +2463,8 @@ try_blob_fw:
  
  	/* Load firmware blob. */
  	blob = ha->hablob = qla2x00_request_firmware(vha);
@@ -2069,7 +2072,7 @@
  	if (qla82xx_validate_firmware_blob(vha,
 --- a/drivers/scsi/qla2xxx/qla_os.c
 +++ b/drivers/scsi/qla2xxx/qla_os.c
-@@ -4179,8 +4179,6 @@ qla2x00_request_firmware(scsi_qla_host_t
+@@ -4890,8 +4890,6 @@ qla2x00_request_firmware(scsi_qla_host_t
  		goto out;
  
  	if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
@@ -2095,7 +2098,7 @@
  		       fw->size, fwname);
 --- a/drivers/staging/comedi/drivers/usbdux.c
 +++ b/drivers/staging/comedi/drivers/usbdux.c
-@@ -2525,11 +2525,8 @@ static void usbdux_firmware_request_comp
+@@ -2428,11 +2428,8 @@ static void usbdux_firmware_request_comp
  	struct usb_interface *uinterf = usbduxsub_tmp->interface;
  	int ret;
  
@@ -2110,7 +2113,7 @@
  	 * we need to upload the firmware here because fw will be
 --- a/drivers/staging/comedi/drivers/usbduxsigma.c
 +++ b/drivers/staging/comedi/drivers/usbduxsigma.c
-@@ -2511,11 +2511,8 @@ static void usbdux_firmware_request_comp
+@@ -2409,11 +2409,8 @@ static void usbdux_firmware_request_comp
  	struct usb_interface *uinterf = usbduxsub_tmp->interface;
  	int ret;
  
@@ -2249,7 +2252,7 @@
  	if (0 != ret) {
 --- a/drivers/staging/media/lirc/lirc_zilog.c
 +++ b/drivers/staging/media/lirc/lirc_zilog.c
-@@ -765,8 +765,6 @@ static int fw_load(struct IR_tx *tx)
+@@ -764,8 +764,6 @@ static int fw_load(struct IR_tx *tx)
  	/* Request codeset data file */
  	ret = request_firmware(&fw_entry, "haup-ir-blaster.bin", tx->ir->l.dev);
  	if (ret != 0) {
@@ -2284,7 +2287,7 @@
  		usb_set_intfdata(pusb_intf, NULL);
 --- a/drivers/staging/slicoss/slicoss.c
 +++ b/drivers/staging/slicoss/slicoss.c
-@@ -519,11 +519,8 @@ static int slic_card_download_gbrcv(stru
+@@ -518,11 +518,8 @@ static int slic_card_download_gbrcv(stru
  	}
  
  	ret = request_firmware(&fw, file, &adapter->pcidev->dev);
@@ -2341,7 +2344,7 @@
  	   positive, skip this board */
 --- a/drivers/tty/moxa.c
 +++ b/drivers/tty/moxa.c
-@@ -866,13 +866,8 @@ static int moxa_init_board(struct moxa_b
+@@ -867,13 +867,8 @@ static int moxa_init_board(struct moxa_b
  	}
  
  	ret = request_firmware(&fw, file, dev);
@@ -2409,7 +2412,7 @@
  
 --- a/drivers/usb/atm/ueagle-atm.c
 +++ b/drivers/usb/atm/ueagle-atm.c
-@@ -622,10 +622,8 @@ static void uea_upload_pre_firmware(cons
+@@ -650,10 +650,8 @@ static void uea_upload_pre_firmware(cons
  	int ret, size;
  
  	uea_enters(usb);
@@ -2421,7 +2424,7 @@
  
  	pfw = fw_entry->data;
  	size = fw_entry->size;
-@@ -720,10 +718,6 @@ static int uea_load_firmware(struct usb_
+@@ -748,10 +746,6 @@ static int uea_load_firmware(struct usb_
  	ret = request_firmware_nowait(THIS_MODULE, 1, fw_name, &usb->dev,
  					GFP_KERNEL, usb,
  					uea_upload_pre_firmware);
@@ -2432,7 +2435,7 @@
  
  	uea_leaves(usb);
  	return ret;
-@@ -885,12 +879,8 @@ static int request_dsp(struct uea_softc
+@@ -913,12 +907,8 @@ static int request_dsp(struct uea_softc
  	}
  
  	ret = request_firmware(&sc->dsp_firm, dsp_name, &sc->usb_dev->dev);
@@ -2446,7 +2449,7 @@
  
  	if (UEA_CHIP_VERSION(sc) == EAGLE_IV)
  		ret = check_dsp_e4(sc->dsp_firm->data, sc->dsp_firm->size);
-@@ -1603,12 +1593,8 @@ static int request_cmvs_old(struct uea_s
+@@ -1631,12 +1621,8 @@ static int request_cmvs_old(struct uea_s
  
  	cmvs_file_name(sc, cmv_name, 1);
  	ret = request_firmware(fw, cmv_name, &sc->usb_dev->dev);
@@ -2460,7 +2463,7 @@
  
  	data = (u8 *) (*fw)->data;
  	size = (*fw)->size;
-@@ -1645,9 +1631,6 @@ static int request_cmvs(struct uea_softc
+@@ -1673,9 +1659,6 @@ static int request_cmvs(struct uea_softc
  				"try to get older cmvs\n", cmv_name);
  			return request_cmvs_old(sc, cmvs, fw);
  		}
@@ -2470,7 +2473,7 @@
  		return ret;
  	}
  
-@@ -1930,11 +1913,8 @@ static int load_XILINX_firmware(struct u
+@@ -1958,11 +1941,8 @@ static int load_XILINX_firmware(struct u
  	uea_enters(INS_TO_USBDEV(sc));
  
  	ret = request_firmware(&fw_entry, fw_name, &sc->usb_dev->dev);
@@ -2510,6 +2513,22 @@
  
  	/* Assert reset (stop the CPU in the EMI) */
  	err = emi26_set_reset(dev,1);
+--- a/drivers/usb/misc/ezusb.c
++++ b/drivers/usb/misc/ezusb.c
+@@ -91,12 +91,8 @@ static int ezusb_ihex_firmware_download(
+ 	const struct ihex_binrec *record;
+ 
+ 	if (request_ihex_firmware(&firmware, firmware_path,
+-				  &dev->dev)) {
+-		dev_err(&dev->dev,
+-			"%s - request \"%s\" failed\n",
+-			__func__, firmware_path);
++				  &dev->dev))
+ 		goto out;
+-	}
+ 
+ 	ret = ezusb_set_reset(dev, fx.cpucs_reg, 0);
+ 	if (ret < 0)
 --- a/drivers/usb/misc/isight_firmware.c
 +++ b/drivers/usb/misc/isight_firmware.c
 @@ -48,7 +48,6 @@ static int isight_firmware_load(struct u
@@ -2522,12 +2541,12 @@
  	}
 --- a/drivers/usb/serial/io_edgeport.c
 +++ b/drivers/usb/serial/io_edgeport.c
-@@ -312,11 +312,8 @@ static void update_edgeport_E2PROM(struc
+@@ -310,11 +310,8 @@ static void update_edgeport_E2PROM(struc
  
  	response = request_ihex_firmware(&fw, fw_name,
  					 &edge_serial->serial->dev->dev);
 -	if (response) {
--		printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
+-		dev_err(dev, "Failed to load image \"%s\" err %d\n",
 -		       fw_name, response);
 +	if (response)
  		return;
@@ -2537,56 +2556,27 @@
  	BootMajorVersion = rec->data[0];
 --- a/drivers/usb/serial/io_ti.c
 +++ b/drivers/usb/serial/io_ti.c
-@@ -855,8 +855,6 @@ static int build_i2c_fw_hdr(__u8 *header
+@@ -845,8 +845,6 @@ static int build_i2c_fw_hdr(__u8 *header
  
  	err = request_firmware(&fw, fw_name, dev);
  	if (err) {
--		printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
--		       fw_name, err);
+-		dev_err(dev, "Failed to load image \"%s\" err %d\n",
+-			fw_name, err);
  		kfree(buffer);
  		return err;
  	}
-@@ -1421,8 +1419,6 @@ static int download_fw(struct edgeport_s
+@@ -1404,8 +1402,6 @@ static int download_fw(struct edgeport_s
  
  		err = request_firmware(&fw, fw_name, dev);
  		if (err) {
--			printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
--			       fw_name, err);
+-			dev_err(dev, "Failed to load image \"%s\" err %d\n",
+-				fw_name, err);
  			kfree(buffer);
  			return err;
  		}
---- a/drivers/usb/serial/keyspan.c
-+++ b/drivers/usb/serial/keyspan.c
-@@ -1233,10 +1233,8 @@ static int keyspan_fake_startup(struct u
- 		return 1;
- 	}
- 
--	if (request_ihex_firmware(&fw, fw_name, &serial->dev->dev)) {
--		dev_err(&serial->dev->dev, "Required keyspan firmware image (%s) unavailable.\n", fw_name);
-+	if (request_ihex_firmware(&fw, fw_name, &serial->dev->dev))
- 		return 1;
--	}
- 
- 	dbg("Uploading Keyspan %s firmware.", fw_name);
- 
---- a/drivers/usb/serial/keyspan_pda.c
-+++ b/drivers/usb/serial/keyspan_pda.c
-@@ -699,11 +699,8 @@ static int keyspan_pda_fake_startup(stru
- 			__func__);
- 		return -ENODEV;
- 	}
--	if (request_ihex_firmware(&fw, fw_name, &serial->dev->dev)) {
--		dev_err(&serial->dev->dev, "failed to load firmware \"%s\"\n",
--			fw_name);
-+	if (request_ihex_firmware(&fw, fw_name, &serial->dev->dev))
- 		return -ENOENT;
--	}
- 	record = (const struct ihex_binrec *)fw->data;
- 
- 	while (record) {
 --- a/drivers/usb/serial/ti_usb_3410_5052.c
 +++ b/drivers/usb/serial/ti_usb_3410_5052.c
-@@ -1671,10 +1671,8 @@ static int ti_download_firmware(struct t
+@@ -1659,10 +1659,8 @@ static int ti_download_firmware(struct t
  		}
  		status = request_firmware(&fw_p, buf, &dev->dev);
  	}
@@ -2598,29 +2588,6 @@
  	if (fw_p->size > TI_FIRMWARE_BUF_SIZE) {
  		dev_err(&dev->dev, "%s - firmware too large %zu\n", __func__, fw_p->size);
  		release_firmware(fw_p);
---- a/drivers/usb/serial/whiteheat.c
-+++ b/drivers/usb/serial/whiteheat.c
-@@ -204,18 +204,11 @@ static int whiteheat_firmware_download(s
- 	const struct ihex_binrec *record;
- 
- 	if (request_ihex_firmware(&firmware_fw, "whiteheat.fw",
--				  &serial->dev->dev)) {
--		dev_err(&serial->dev->dev,
--			"%s - request \"whiteheat.fw\" failed\n", __func__);
-+				  &serial->dev->dev))
- 		goto out;
--	}
- 	if (request_ihex_firmware(&loader_fw, "whiteheat_loader.fw",
--			     &serial->dev->dev)) {
--		dev_err(&serial->dev->dev,
--			"%s - request \"whiteheat_loader.fw\" failed\n",
--			__func__);
-+			     &serial->dev->dev))
- 		goto out;
--	}
- 	ret = 0;
- 	response = ezusb_set_reset (serial, 1);
- 
 --- a/drivers/video/broadsheetfb.c
 +++ b/drivers/video/broadsheetfb.c
 @@ -741,10 +741,8 @@ static ssize_t broadsheet_loadstore_wave
@@ -2758,7 +2725,7 @@
  	err = request_firmware(fw_entry, name, pci_device(chip));
 -	if (err < 0)
 -		snd_printk(KERN_ERR "get_firmware(): Firmware not available (%d)\n", err);
- #ifdef CONFIG_PM
+ #ifdef CONFIG_PM_SLEEP
 -	else
 +	if (!err)
  		chip->fw_cache[fw_index] = *fw_entry;
@@ -2778,21 +2745,20 @@
  	snd_printk(KERN_INFO "firmware size = 0x%zx\n", fw_entry->size);
  
  	/* The FPGA is a Xilinx Spartan IIE XC2S50E */
---- a/sound/pci/hda/hda_hwdep.c
-+++ b/sound/pci/hda/hda_hwdep.c
-@@ -792,11 +792,8 @@ int snd_hda_load_patch(struct hda_bus *b
- 	if (snd_BUG_ON(!dev))
- 		return -ENODEV;
- 	err = request_firmware(&fw, patch, dev);
--	if (err < 0) {
--		printk(KERN_ERR "hda-codec: Cannot load the patch '%s'\n",
--		       patch);
-+	if (!err)
- 		return err;
+--- a/sound/pci/hda/hda_intel.c
++++ b/sound/pci/hda/hda_intel.c
+@@ -3280,10 +3280,8 @@ static void azx_firmware_cb(const struct
+ 	struct azx *chip = card->private_data;
+ 	struct pci_dev *pci = chip->pci;
+ 
+-	if (!fw) {
+-		snd_printk(KERN_ERR SFX "Cannot load firmware, aborting\n");
++	if (!fw)
+ 		goto error;
 -	}
  
- 	tmp = *fw;
- 	line_mode = LINE_MODE_NONE;
+ 	chip->fw = fw;
+ 	if (!chip->disabled) {
 --- a/sound/pci/korg1212/korg1212.c
 +++ b/sound/pci/korg1212/korg1212.c
 @@ -2346,7 +2346,6 @@ static int __devinit snd_korg1212_create
@@ -2863,14 +2829,14 @@
  			   (int)fw->size, (int)sizeof(hdsp->firmware_cache));
 --- a/sound/soc/codecs/wm2000.c
 +++ b/sound/soc/codecs/wm2000.c
-@@ -794,10 +794,8 @@ static int __devinit wm2000_i2c_probe(st
+@@ -834,10 +834,8 @@ static int __devinit wm2000_i2c_probe(st
  	}
  
  	ret = request_firmware(&fw, filename, &i2c->dev);
 -	if (ret != 0) {
 -		dev_err(&i2c->dev, "Failed to acquire ANC data: %d\n", ret);
 +	if (ret != 0)
- 		goto out_regmap_exit;
+ 		goto err_supplies;
 -	}
  
  	/* Pre-cook the concatenation of the register address onto the image */

Modified: dists/trunk/linux/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch
==============================================================================
--- dists/trunk/linux/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -19,17 +19,15 @@
 
 --- a/drivers/base/firmware_class.c
 +++ b/drivers/base/firmware_class.c
-@@ -255,7 +255,8 @@ static ssize_t firmware_loading_store(st
- 						 fw_priv->nr_pages,
- 						 0, PAGE_KERNEL_RO);
- 			if (!fw_priv->fw->data) {
--				dev_err(dev, "%s: vmap() failed\n", __func__);
+@@ -500,14 +500,23 @@ static ssize_t firmware_loading_store(st
+ 			 * is completed.
+ 			 * */
+ 			fw_map_pages_buf(fw_buf);
++			if (!fw_buf->data)
 +				dev_err(dev->parent, "%s: vmap() failed\n",
 +					__func__);
- 				goto err;
- 			}
- 			/* Pages are now owned by 'struct firmware' */
-@@ -270,9 +271,14 @@ static ssize_t firmware_loading_store(st
+ 			complete_all(&fw_buf->completion);
+ 			break;
  		}
  		/* fallthrough */
  	default:
@@ -43,10 +41,11 @@
 +			"firmware: agent aborted loading %s (not found?)\n",
 +			fw_priv->fw_id);
 +		/* fallthrough */
- 	err:
++	err:
  		fw_load_abort(fw_priv);
  		break;
-@@ -435,6 +441,9 @@ static void firmware_class_timeout(u_lon
+ 	}
+@@ -671,6 +680,9 @@ static void firmware_class_timeout(u_lon
  {
  	struct firmware_priv *fw_priv = (struct firmware_priv *) data;
  
@@ -56,7 +55,7 @@
  	fw_load_abort(fw_priv);
  }
  
-@@ -486,7 +495,8 @@ _request_firmware_prepare(const struct f
+@@ -798,7 +810,8 @@ _request_firmware_prepare(const struct f
  	}
  
  	if (fw_get_builtin_firmware(firmware, name)) {
@@ -66,7 +65,7 @@
  		return NULL;
  	}
  
-@@ -517,25 +527,29 @@ static int _request_firmware_load(struct
+@@ -874,25 +887,28 @@ static int _request_firmware_load(struct
  
  	retval = device_add(f_dev);
  	if (retval) {
@@ -94,30 +93,29 @@
  
  	if (uevent) {
  		dev_set_uevent_suppress(f_dev, false);
--		dev_dbg(f_dev, "firmware: requesting %s\n", fw_priv->fw_id);
-+		dev_dbg(f_dev->parent, "firmware: requesting %s\n",
-+			fw_priv->fw_id);
+-		dev_dbg(f_dev, "firmware: requesting %s\n", buf->fw_id);
++		dev_dbg(f_dev->parent, "firmware: requesting %s\n", buf->fw_id);
  		if (timeout != MAX_SCHEDULE_TIMEOUT)
  			mod_timer(&fw_priv->timeout,
  				  round_jiffies_up(jiffies + timeout));
-@@ -549,8 +563,15 @@ static int _request_firmware_load(struct
- 	del_timer_sync(&fw_priv->timeout);
+@@ -906,8 +922,15 @@ static int _request_firmware_load(struct
  
+ handle_fw:
  	mutex_lock(&fw_lock);
--	if (!fw_priv->fw->size || test_bit(FW_STATUS_ABORT, &fw_priv->status))
-+	if (test_bit(FW_STATUS_ABORT, &fw_priv->status)) {
+-	if (!buf->size || test_bit(FW_STATUS_ABORT, &buf->status))
++	if (test_bit(FW_STATUS_ABORT, &buf->status)) {
 +		/* failure has already been logged */
-+		retval = -ENOENT;
-+	} else if (!fw_priv->fw->size) {
+ 		retval = -ENOENT;
++	} else if (!buf->size) {
 +		dev_err(f_dev->parent,
 +			"firmware: agent loaded no data for %s (not found?)\n",
 +			name);
- 		retval = -ENOENT;
++		retval = -ENOENT;
 +	}
- 	fw_priv->fw = NULL;
- 	mutex_unlock(&fw_lock);
  
-@@ -601,6 +622,9 @@ request_firmware(const struct firmware *
+ 	/*
+ 	 * add firmware name into devres list so that we can auto cache
+@@ -986,6 +1009,9 @@ request_firmware(const struct firmware *
  	}
  	if (ret)
  		_request_firmware_cleanup(firmware_p);
@@ -127,7 +125,7 @@
  
  	return ret;
  }
-@@ -650,7 +674,7 @@ static void request_firmware_work_func(s
+@@ -1035,7 +1061,7 @@ static void request_firmware_work_func(s
  		ret = _request_firmware_load(fw_priv, fw_work->uevent, timeout);
  		usermodehelper_read_unlock();
  	} else {

Modified: dists/trunk/linux/debian/patches/bugfix/arm/lis3l02dq-fix-building-without-irq-to-gpio.patch
==============================================================================
--- dists/trunk/linux/debian/patches/bugfix/arm/lis3l02dq-fix-building-without-irq-to-gpio.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/bugfix/arm/lis3l02dq-fix-building-without-irq-to-gpio.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -1,7 +1,8 @@
-From 65cb587d7058441c8c910e8766ee86538c7274d8 Mon Sep 17 00:00:00 2001
 From: Arnd Bergmann <arnd at arndb.de>
 Date: Fri, 28 Sep 2012 22:36:00 +0100
-Subject: [PATCH] staging/iio/lis3l02dq: fix building without irq_to_gpio
+Subject: staging/iio/lis3l02dq: fix building without irq_to_gpio
+
+commit 65cb587d7058441c8c910e8766ee86538c7274d8 upstream.
 
 The driver has not been building for some time after the
 irq_to_gpio function has been removed from the kernel.
@@ -27,10 +28,10 @@
  drivers/staging/iio/accel/lis3l02dq_ring.c |    2 +-
  3 files changed, 8 insertions(+), 5 deletions(-)
 
-Index: experimental/drivers/staging/iio/accel/lis3l02dq.h
-===================================================================
---- experimental.orig/drivers/staging/iio/accel/lis3l02dq.h	2012-12-03 20:39:49.000000000 +0100
-+++ experimental/drivers/staging/iio/accel/lis3l02dq.h	2012-12-05 11:32:50.159603549 +0100
+diff --git a/drivers/staging/iio/accel/lis3l02dq.h b/drivers/staging/iio/accel/lis3l02dq.h
+index f9bcd41..2bac722 100644
+--- a/drivers/staging/iio/accel/lis3l02dq.h
++++ b/drivers/staging/iio/accel/lis3l02dq.h
 @@ -158,6 +158,7 @@ struct lis3l02dq_state {
  	struct spi_device		*us;
  	struct iio_trigger		*trig;
@@ -39,10 +40,10 @@
  	bool				trigger_on;
  
  	u8	tx[LIS3L02DQ_MAX_RX] ____cacheline_aligned;
-Index: experimental/drivers/staging/iio/accel/lis3l02dq_core.c
-===================================================================
---- experimental.orig/drivers/staging/iio/accel/lis3l02dq_core.c	2012-12-03 20:39:49.000000000 +0100
-+++ experimental/drivers/staging/iio/accel/lis3l02dq_core.c	2012-12-05 11:32:50.159603549 +0100
+diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c
+index 21b0469..d13c7e9 100644
+--- a/drivers/staging/iio/accel/lis3l02dq_core.c
++++ b/drivers/staging/iio/accel/lis3l02dq_core.c
 @@ -15,6 +15,7 @@
  #include <linux/interrupt.h>
  #include <linux/irq.h>
@@ -51,7 +52,7 @@
  #include <linux/mutex.h>
  #include <linux/device.h>
  #include <linux/kernel.h>
-@@ -690,6 +691,7 @@ static int __devinit lis3l02dq_probe(str
+@@ -690,6 +691,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
  	spi_set_drvdata(spi, indio_dev);
  
  	st->us = spi;
@@ -59,7 +60,7 @@
  	mutex_init(&st->buf_lock);
  	indio_dev->name = spi->dev.driver->name;
  	indio_dev->dev.parent = &spi->dev;
-@@ -711,7 +713,7 @@ static int __devinit lis3l02dq_probe(str
+@@ -711,7 +713,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
  		goto error_unreg_buffer_funcs;
  	}
  
@@ -68,7 +69,7 @@
  		ret = request_threaded_irq(st->us->irq,
  					   &lis3l02dq_th,
  					   &lis3l02dq_event_handler,
-@@ -738,10 +740,10 @@ static int __devinit lis3l02dq_probe(str
+@@ -738,10 +740,10 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
  	return 0;
  
  error_remove_trigger:
@@ -81,22 +82,22 @@
  		free_irq(st->us->irq, indio_dev);
  error_uninitialize_buffer:
  	iio_buffer_unregister(indio_dev);
-@@ -796,7 +798,7 @@ static int lis3l02dq_remove(struct spi_d
- 	if (ret)
- 		goto err_ret;
+@@ -790,7 +792,7 @@ static int __devexit lis3l02dq_remove(struct spi_device *spi)
+ 	lis3l02dq_disable_all_events(indio_dev);
+ 	lis3l02dq_stop_device(indio_dev);
  
 -	if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0)
 +	if (spi->irq)
  		free_irq(st->us->irq, indio_dev);
  
  	lis3l02dq_remove_trigger(indio_dev);
-Index: experimental/drivers/staging/iio/accel/lis3l02dq_ring.c
-===================================================================
---- experimental.orig/drivers/staging/iio/accel/lis3l02dq_ring.c	2012-12-03 20:39:49.000000000 +0100
-+++ experimental/drivers/staging/iio/accel/lis3l02dq_ring.c	2012-12-05 11:32:50.183603549 +0100
-@@ -264,7 +264,7 @@ static int lis3l02dq_trig_try_reen(struc
- 	/* If gpio still high (or high again) */
- 	/* In theory possible we will need to do this several times */
+diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c
+index fa4190d..13c0b4b 100644
+--- a/drivers/staging/iio/accel/lis3l02dq_ring.c
++++ b/drivers/staging/iio/accel/lis3l02dq_ring.c
+@@ -263,7 +263,7 @@ static int lis3l02dq_trig_try_reen(struct iio_trigger *trig)
+ 	/* If gpio still high (or high again)
+ 	 * In theory possible we will need to do this several times */
  	for (i = 0; i < 5; i++)
 -		if (gpio_get_value(irq_to_gpio(st->us->irq)))
 +		if (gpio_get_value(st->gpio))

Modified: dists/trunk/linux/debian/patches/bugfix/ia64/nouveau-ACPI-support-is-dependent-on-X86.patch
==============================================================================
--- dists/trunk/linux/debian/patches/bugfix/ia64/nouveau-ACPI-support-is-dependent-on-X86.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/bugfix/ia64/nouveau-ACPI-support-is-dependent-on-X86.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -15,7 +15,7 @@
 
 --- a/drivers/gpu/drm/nouveau/Kconfig
 +++ b/drivers/gpu/drm/nouveau/Kconfig
-@@ -11,8 +11,8 @@
+@@ -11,8 +11,8 @@ config DRM_NOUVEAU
  	select FRAMEBUFFER_CONSOLE if !EXPERT
  	select FB_BACKLIGHT if DRM_NOUVEAU_BACKLIGHT
  	select ACPI_VIDEO if ACPI && X86 && BACKLIGHT_CLASS_DEVICE && VIDEO_OUTPUT_CONTROL && INPUT
@@ -28,21 +28,22 @@
  	  Choose this option for open-source nVidia support.
 --- a/drivers/gpu/drm/nouveau/Makefile
 +++ b/drivers/gpu/drm/nouveau/Makefile
-@@ -42,6 +42,8 @@
- nouveau-$(CONFIG_DRM_NOUVEAU_DEBUG) += nouveau_debugfs.o
+@@ -186,7 +186,9 @@ nouveau-y += nouveau_mem.o
+ 
+ # other random bits
  nouveau-$(CONFIG_COMPAT) += nouveau_ioc32.o
- nouveau-$(CONFIG_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o
 +ifdef CONFIG_X86
  nouveau-$(CONFIG_ACPI) += nouveau_acpi.o
 +endif
+ nouveau-$(CONFIG_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o
  
  obj-$(CONFIG_DRM_NOUVEAU)+= nouveau.o
---- a/drivers/gpu/drm/nouveau/nouveau_drv.h
-+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
-@@ -1095,7 +1095,7 @@
+--- a/drivers/gpu/drm/nouveau/nouveau_acpi.h
++++ b/drivers/gpu/drm/nouveau/nouveau_acpi.h
+@@ -3,7 +3,7 @@
  
- /* nouveau_acpi.c */
  #define ROM_BIOS_PAGE 4096
+ 
 -#if defined(CONFIG_ACPI)
 +#if defined(CONFIG_ACPI) && defined(CONFIG_X86)
  void nouveau_register_dsm_handler(void);

Modified: dists/trunk/linux/debian/patches/debian/cgroups-Document-the-Debian-memory-resource-controll.patch
==============================================================================
--- dists/trunk/linux/debian/patches/debian/cgroups-Document-the-Debian-memory-resource-controll.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/debian/cgroups-Document-the-Debian-memory-resource-controll.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -5,8 +5,8 @@
 ---
 --- a/Documentation/cgroups/memory.txt
 +++ b/Documentation/cgroups/memory.txt
-@@ -47,6 +47,10 @@ Features:
-  Kernel memory support is work in progress, and the current version provides
+@@ -46,6 +46,10 @@ Features:
+  Kernel memory support is a work in progress, and the current version provides
   basically functionality. (See Section 2.7)
  
 +NOTE: In Debian kernel packages, the memory resource controller is

Modified: dists/trunk/linux/debian/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch
==============================================================================
--- dists/trunk/linux/debian/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/debian/dfsg/drivers-media-dvb-dvb-usb-af9005-disable.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -1,24 +1,14 @@
-From 2a7d7ecc9fdcdaa0b82865078fd2a47e3b46da1b Mon Sep 17 00:00:00 2001
 From: Ben Hutchings <ben at decadent.org.uk>
 Date: Mon, 17 Aug 2009 02:45:41 +0100
-Subject: [PATCH 1/2] dvb-usb-af9005: mark as broken
+Subject: dvb-usb-af9005: mark as broken
 
----
- drivers/media/dvb/dvb-usb/Kconfig |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
-index 496c1a3..868e1cb 100644
---- a/drivers/media/dvb/dvb-usb/Kconfig
-+++ b/drivers/media/dvb/dvb-usb/Kconfig
-@@ -238,6 +238,7 @@ config DVB_USB_OPERA1
+--- a/drivers/media/usb/dvb-usb/Kconfig
++++ b/drivers/media/usb/dvb-usb/Kconfig
+@@ -227,6 +227,7 @@ config DVB_USB_OPERA1
  
  config DVB_USB_AF9005
  	tristate "Afatech AF9005 DVB-T USB1.1 support"
 +	depends on BROKEN
- 	depends on DVB_USB && EXPERIMENTAL
- 	select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE
- 	select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMISE
--- 
-1.6.3.3
-
+ 	depends on DVB_USB
+ 	select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT
+ 	select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT

Modified: dists/trunk/linux/debian/patches/debian/dfsg/vs6624-disable.patch
==============================================================================
--- dists/trunk/linux/debian/patches/debian/dfsg/vs6624-disable.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/debian/dfsg/vs6624-disable.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -1,8 +1,14 @@
-diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
-index ce1e7ba..4bd5a0c 100644
---- a/drivers/media/video/Kconfig
-+++ b/drivers/media/video/Kconfig
-@@ -497,2 +497,3 @@ config VIDEO_OV7670
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Sun, 27 May 2012 01:56:58 +0100
+Subject: vs6624: mark as broken
+
+--- a/drivers/media/i2c/Kconfig
++++ b/drivers/media/i2c/Kconfig
+@@ -422,6 +422,7 @@ config VIDEO_OV7670
+ 	  controller.
+ 
  config VIDEO_VS6624
 +	depends on BROKEN
  	tristate "ST VS6624 sensor support"
+ 	depends on VIDEO_V4L2 && I2C
+ 	depends on MEDIA_CAMERA_SUPPORT

Modified: dists/trunk/linux/debian/patches/debian/kernelvariables.patch
==============================================================================
--- dists/trunk/linux/debian/patches/debian/kernelvariables.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/debian/kernelvariables.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -99,5 +99,5 @@
 +       hdr-arch  := m68k
 +endif
  
- # Use LINUXINCLUDE when you must reference the include/ directory.
- # Needed to be compatible with the O= option
+ # Use USERINCLUDE when you must reference the UAPI directories only.
+ USERINCLUDE    := \

Modified: dists/trunk/linux/debian/patches/debian/radeon-no-modeset-without-firmware.patch
==============================================================================
--- dists/trunk/linux/debian/patches/debian/radeon-no-modeset-without-firmware.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/debian/radeon-no-modeset-without-firmware.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -33,8 +33,8 @@
 ---
 --- a/drivers/gpu/drm/radeon/radeon_drv.c
 +++ b/drivers/gpu/drm/radeon/radeon_drv.c
-@@ -37,6 +37,8 @@
- #include "drm_pciids.h"
+@@ -36,6 +36,8 @@
+ #include <drm/drm_pciids.h>
  #include <linux/console.h>
  #include <linux/module.h>
 +#include <linux/namei.h>
@@ -42,7 +42,7 @@
  
  
  /*
-@@ -378,6 +380,24 @@ static struct pci_driver radeon_kms_pci_
+@@ -411,6 +413,24 @@ static struct pci_driver radeon_kms_pci_
  	.resume = radeon_pci_resume,
  };
  
@@ -67,7 +67,7 @@
  static int __init radeon_init(void)
  {
  	driver = &driver_old;
-@@ -402,6 +422,13 @@ static int __init radeon_init(void)
+@@ -435,6 +455,13 @@ static int __init radeon_init(void)
  		radeon_modeset = 0;
  #endif
  	}

Modified: dists/trunk/linux/debian/patches/debian/version.patch
==============================================================================
--- dists/trunk/linux/debian/patches/debian/version.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/debian/version.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -8,16 +8,16 @@
 
 --- a/Makefile
 +++ b/Makefile
-@@ -806,7 +806,7 @@ endif
+@@ -822,7 +822,7 @@ endif
  prepare2: prepare3 outputmakefile asm-generic
  
- prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \
+ prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
 -                   include/config/auto.conf
 +                   include/config/auto.conf include/generated/package.h
  	$(cmd_crmodverdir)
  
  archprepare: archheaders archscripts prepare1 scripts_basic
-@@ -838,12 +838,25 @@ define filechk_version.h
+@@ -854,12 +854,25 @@ define filechk_version.h
  	echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
  endef
  
@@ -31,7 +31,7 @@
 +endef
 +endif
 +
- include/linux/version.h: $(srctree)/Makefile FORCE
+ $(version_h): $(srctree)/Makefile FORCE
  	$(call filechk,version.h)
  
  include/generated/utsrelease.h: include/config/kernel.release FORCE
@@ -53,7 +53,7 @@
  #include <asm/uaccess.h>
  #include <asm/io.h>
  #include <linux/atomic.h>
-@@ -164,11 +165,12 @@ static void show_last_breaking_event(str
+@@ -181,11 +182,12 @@ static void show_last_breaking_event(str
   */
  void dump_stack(void)
  {
@@ -68,10 +68,10 @@
  	printk("Process %s (pid: %d, task: %p, ksp: %p)\n",
  	       current->comm, current->pid, current,
  	       (void *) current->thread.ksp);
-@@ -215,11 +217,12 @@ void show_registers(struct pt_regs *regs
+@@ -231,11 +233,12 @@ void show_registers(struct pt_regs *regs
+ 
  void show_regs(struct pt_regs *regs)
  {
- 	print_modules();
 -	printk("CPU: %d %s %s %.*s\n",
 +	printk("CPU: %d %s %s %.*s%s\n",
  	       task_thread_info(current)->cpu, print_tainted(),
@@ -92,7 +92,7 @@
 +#include <generated/package.h>
  #include <asm/current.h>
  #include <asm/ptrace.h>
- #include "sysrq.h"
+ #include <asm/sysrq.h>
 @@ -16,8 +17,9 @@ void __show_regs(struct pt_regs *regs)
  {
  	printk("\n");
@@ -115,7 +115,7 @@
  #include <asm/cpu.h>
  #include <asm/apic.h>
  #include <asm/syscalls.h>
-@@ -147,11 +148,12 @@ void show_regs_common(void)
+@@ -135,11 +136,12 @@ void show_regs_common(void)
  	/* Board Name is optional */
  	board = dmi_get_system_info(DMI_BOARD_NAME);
  
@@ -178,14 +178,14 @@
  	       regs->ar_unat, regs->ar_pfs, regs->ar_rsc);
 --- a/arch/arm/kernel/process.c
 +++ b/arch/arm/kernel/process.c
-@@ -31,6 +31,7 @@
- #include <linux/random.h>
+@@ -32,6 +32,7 @@
  #include <linux/hw_breakpoint.h>
  #include <linux/cpuidle.h>
+ #include <linux/leds.h>
 +#include <generated/package.h>
  
  #include <asm/cacheflush.h>
- #include <asm/leds.h>
+ #include <asm/processor.h>
 @@ -278,11 +279,12 @@ void __show_regs(struct pt_regs *regs)
  	unsigned long flags;
  	char buf[64];
@@ -211,7 +211,7 @@
  
  #include <asm/pgtable.h>
  #include <asm/uaccess.h>
-@@ -644,8 +645,9 @@ void show_regs(struct pt_regs * regs)
+@@ -643,8 +644,9 @@ void show_regs(struct pt_regs * regs)
  
  	printk("NIP: "REG" LR: "REG" CTR: "REG"\n",
  	       regs->nip, regs->link, regs->ctr);

Modified: dists/trunk/linux/debian/patches/features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch
==============================================================================
--- dists/trunk/linux/debian/patches/features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -18,8 +18,6 @@
  scripts/kconfig/lkc_proto.h |    1 +
  4 files changed, 44 insertions(+), 10 deletions(-)
 
-diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
-index f208f90..ffaa787 100644
 --- a/scripts/kconfig/conf.c
 +++ b/scripts/kconfig/conf.c
 @@ -364,7 +364,6 @@ static void conf(struct menu *menu)
@@ -27,10 +25,10 @@
  		case P_MENU:
  			if ((input_mode == silentoldconfig ||
 -			     input_mode == listnewconfig ||
- 			     input_mode == oldnoconfig) &&
+ 			     input_mode == olddefconfig) &&
  			    rootEntry != menu) {
  				check_conf(menu);
-@@ -425,11 +424,7 @@ static void check_conf(struct menu *menu)
+@@ -425,11 +424,7 @@ static void check_conf(struct menu *menu
  	if (sym && !sym_has_value(sym)) {
  		if (sym_is_changable(sym) ||
  		    (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
@@ -38,12 +36,12 @@
 -				if (sym->name && !sym_is_choice_value(sym)) {
 -					printf("%s%s\n", CONFIG_, sym->name);
 -				}
--			} else if (input_mode != oldnoconfig) {
-+			if (input_mode != oldnoconfig) {
+-			} else if (input_mode != olddefconfig) {
++			if (input_mode != olddefconfig) {
  				if (!conf_cnt++)
  					printf(_("*\n* Restart config...\n*\n"));
  				rootEntry = menu_get_parent_menu(menu);
-@@ -442,6 +437,30 @@ static void check_conf(struct menu *menu)
+@@ -442,6 +437,30 @@ static void check_conf(struct menu *menu
  		check_conf(child);
  }
  
@@ -74,7 +72,7 @@
  static struct option long_opts[] = {
  	{"oldaskconfig",    no_argument,       NULL, oldaskconfig},
  	{"oldconfig",       no_argument,       NULL, oldconfig},
-@@ -482,6 +501,7 @@ int main(int ac, char **av)
+@@ -489,6 +508,7 @@ int main(int ac, char **av)
  	const char *progname = av[0];
  	int opt;
  	const char *name, *defconfig_file = NULL /* gcc uninit */;
@@ -82,12 +80,12 @@
  	struct stat tmpstat;
  
  	setlocale(LC_ALL, "");
-@@ -634,16 +654,18 @@ int main(int ac, char **av)
+@@ -651,16 +671,18 @@ int main(int ac, char **av)
  		input_mode = silentoldconfig;
  		/* fall through */
  	case oldconfig:
 -	case listnewconfig:
- 	case oldnoconfig:
+ 	case olddefconfig:
  	case silentoldconfig:
  		/* Update until a loop caused no more changes */
  		do {
@@ -95,8 +93,8 @@
  			check_conf(&rootmenu);
 -		} while (conf_cnt &&
 -			 (input_mode != listnewconfig &&
--			  input_mode != oldnoconfig));
-+		} while (conf_cnt && input_mode != oldnoconfig);
+-			  input_mode != olddefconfig));
++		} while (conf_cnt && input_mode != olddefconfig);
 +		break;
 +	case listnewconfig:
 +		conf_set_all_new_symbols(def_default);
@@ -105,11 +103,9 @@
  		break;
  	}
  
-diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
-index 59b667c..d2be252 100644
 --- a/scripts/kconfig/confdata.c
 +++ b/scripts/kconfig/confdata.c
-@@ -695,6 +695,14 @@ next_menu:
+@@ -727,6 +727,14 @@ next_menu:
  	return 0;
  }
  
@@ -124,7 +120,7 @@
  int conf_write(const char *name)
  {
  	FILE *out;
-@@ -1079,6 +1087,7 @@ void conf_set_all_new_symbols(enum conf_def_mode mode)
+@@ -1111,6 +1119,7 @@ void conf_set_all_new_symbols(enum conf_
  	for_all_symbols(i, sym) {
  		if (sym_has_value(sym))
  			continue;
@@ -132,11 +128,9 @@
  		switch (sym_get_type(sym)) {
  		case S_BOOLEAN:
  		case S_TRISTATE:
-diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
-index 80fce57..0db77f3 100644
 --- a/scripts/kconfig/expr.h
 +++ b/scripts/kconfig/expr.h
-@@ -104,6 +104,8 @@ struct symbol {
+@@ -106,6 +106,8 @@ struct symbol {
  #define SYMBOL_DEF3       0x40000  /* symbol.def[S_DEF_3] is valid */
  #define SYMBOL_DEF4       0x80000  /* symbol.def[S_DEF_4] is valid */
  
@@ -145,11 +139,9 @@
  #define SYMBOL_MAXLENGTH	256
  #define SYMBOL_HASHSIZE		9973
  
-diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h
-index 47fe9c3..dd0024a 100644
 --- a/scripts/kconfig/lkc_proto.h
 +++ b/scripts/kconfig/lkc_proto.h
-@@ -7,6 +7,7 @@ P(conf_read_simple,int,(const char *name, int));
+@@ -7,6 +7,7 @@ P(conf_read_simple,int,(const char *name
  P(conf_write_defconfig,int,(const char *name));
  P(conf_write,int,(const char *name));
  P(conf_write_autoconf,int,(void));
@@ -157,6 +149,3 @@
  P(conf_get_changed,bool,(void));
  P(conf_set_changed_callback, void,(void (*fn)(void)));
  P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap)));
--- 
-1.7.5.4
-

Modified: dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-add.patch
==============================================================================
--- dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-add.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-add.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -313,8 +313,8 @@
 +#endif /* __KERNEL__ */
 +#endif /* __AUFS_H__ */
 --- a/fs/aufs/branch.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/branch.c	2012-10-29 03:30:14.227048051 +0000
-@@ -0,0 +1,1169 @@
++++ b/fs/aufs/branch.c	2012-12-16 14:11:13.354479811 +0000
+@@ -0,0 +1,1172 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -373,7 +373,10 @@
 +		else
 +			break;
 +
++	/* recursive lock, s_umount of branch's */
++	lockdep_off();
 +	mntput(br->br_mnt);
++	lockdep_on();
 +	kfree(wbr);
 +	kfree(br);
 +}
@@ -949,7 +952,7 @@
 +			continue;
 +
 +		/* AuDbgInode(i); */
-+		if (au_iigen(i) == sigen)
++		if (au_iigen(i, NULL) == sigen)
 +			ii_read_lock_child(i);
 +		else {
 +			ii_write_lock_child(i);
@@ -1759,7 +1762,7 @@
 +
 +-include ${srctree}/${src}/conf_priv.mk
 --- a/fs/aufs/cpup.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/cpup.c	2012-10-29 03:30:14.227048051 +0000
++++ b/fs/aufs/cpup.c	2012-12-16 14:11:13.358479829 +0000
 @@ -0,0 +1,1085 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
@@ -2185,7 +2188,7 @@
 +		goto out;
 +
 +	err = -ENOMEM;
-+	sym.k = __getname_gfp(GFP_NOFS);
++	sym.k = (void *)__get_free_page(GFP_NOFS);
 +	if (unlikely(!sym.k))
 +		goto out;
 +
@@ -2200,7 +2203,7 @@
 +		sym.k[symlen] = 0;
 +		err = vfsub_symlink(h_dir, h_path, sym.k);
 +	}
-+	__putname(sym.k);
++	free_page((unsigned long)sym.k);
 +
 +out:
 +	return err;
@@ -3663,7 +3666,7 @@
 +#endif /* __KERNEL__ */
 +#endif /* __AUFS_DCSUB_H__ */
 --- a/fs/aufs/debug.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/debug.c	2012-10-29 03:30:14.227048051 +0000
++++ b/fs/aufs/debug.c	2012-12-16 14:11:13.358479829 +0000
 @@ -0,0 +1,490 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
@@ -3791,7 +3794,7 @@
 +	if (!iinfo)
 +		return;
 +	dpri("i-1: bstart %d, bend %d, gen %d\n",
-+	     iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode));
++	     iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode, NULL));
 +	if (iinfo->ii_bstart < 0)
 +		return;
 +	hn = 0;
@@ -4401,8 +4404,8 @@
 +#endif /* __KERNEL__ */
 +#endif /* __AUFS_DEBUG_H__ */
 --- a/fs/aufs/dentry.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dentry.c	2012-10-29 03:30:14.231048075 +0000
-@@ -0,0 +1,1063 @@
++++ b/fs/aufs/dentry.c	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,1060 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -4438,7 +4441,6 @@
 +struct au_do_lookup_args {
 +	unsigned int		flags;
 +	mode_t			type;
-+	unsigned int		nd_flags;
 +};
 +
 +/*
@@ -4529,8 +4531,7 @@
 + * otherwise an error.
 + * can be called at unlinking with @type is zero.
 + */
-+int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type,
-+		   unsigned int flags)
++int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type)
 +{
 +	int npositive, err;
 +	aufs_bindex_t bindex, btail, bdiropq;
@@ -4538,8 +4539,7 @@
 +	struct qstr whname;
 +	struct au_do_lookup_args args = {
 +		.flags		= 0,
-+		.type		= type,
-+		.nd_flags	= flags
++		.type		= type
 +	};
 +	const struct qstr *name = &dentry->d_name;
 +	struct dentry *parent;
@@ -5137,7 +5137,7 @@
 +	 * if current working dir is removed, it returns an error.
 +	 * but the dentry is legal.
 +	 */
-+	err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0, /*flags*/0);
++	err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0);
 +	AuDbgDentry(dentry);
 +	au_di_swap(tmp, dinfo);
 +	if (err == -ENOENT)
@@ -5467,8 +5467,8 @@
 +	.d_release	= aufs_d_release
 +};
 --- a/fs/aufs/dentry.h	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dentry.h	2012-10-29 03:30:14.231048075 +0000
-@@ -0,0 +1,235 @@
++++ b/fs/aufs/dentry.h	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,234 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -5522,8 +5522,7 @@
 +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir,
 +		struct dentry *h_parent, struct au_branch *br);
 +
-+int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type,
-+		   unsigned int flags);
++int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type);
 +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex);
 +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent);
 +int au_reval_dpath(struct dentry *dentry, unsigned int sigen);
@@ -7488,7 +7487,7 @@
 +#endif /* __KERNEL__ */
 +#endif /* __AUFS_DYNOP_H__ */
 --- a/fs/aufs/export.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/export.c	2012-10-29 03:30:14.235048090 +0000
++++ b/fs/aufs/export.c	2012-12-16 14:11:13.358479829 +0000
 @@ -0,0 +1,811 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
@@ -7714,7 +7713,7 @@
 +	sigen = au_sigen(sb);
 +	if (unlikely(is_bad_inode(inode)
 +		     || IS_DEADDIR(inode)
-+		     || sigen != au_iigen(inode)))
++		     || sigen != au_iigen(inode, NULL)))
 +		goto out_iput;
 +
 +	dentry = NULL;
@@ -7859,7 +7858,7 @@
 +		goto out;
 +
 +	dentry = ERR_PTR(-ENOMEM);
-+	arg.name = __getname_gfp(GFP_NOFS);
++	arg.name = (void *)__get_free_page(GFP_NOFS);
 +	if (unlikely(!arg.name))
 +		goto out_file;
 +	arg.ino = ino;
@@ -7891,7 +7890,7 @@
 +	}
 +
 +out_name:
-+	__putname(arg.name);
++	free_page((unsigned long)arg.name);
 +out_file:
 +	fput(file);
 +out:
@@ -8302,8 +8301,8 @@
 +	atomic_set(&sbinfo->si_xigen_next, u);
 +}
 --- a/fs/aufs/f_op.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/f_op.c	2012-10-29 03:30:14.235048090 +0000
-@@ -0,0 +1,724 @@
++++ b/fs/aufs/f_op.c	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,723 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -8779,7 +8778,6 @@
 +{
 +	return AuConv_VM_MAP(flags, GROWSDOWN)
 +		| AuConv_VM_MAP(flags, DENYWRITE)
-+		| AuConv_VM_MAP(flags, EXECUTABLE)
 +		| AuConv_VM_MAP(flags, LOCKED);
 +}
 +
@@ -11993,8 +11991,8 @@
 +		au_hn_destroy_cache();
 +}
 --- a/fs/aufs/i_op.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/i_op.c	2012-10-29 03:30:14.239048114 +0000
-@@ -0,0 +1,1009 @@
++++ b/fs/aufs/i_op.c	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,1026 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -12160,15 +12158,21 @@
 +
 +	IMustLock(dir);
 +
++	/* todo: support rcu-walk? */
++	ret = ERR_PTR(-ECHILD);
++	if (flags & LOOKUP_RCU)
++		goto out;
++
++	ret = ERR_PTR(-ENAMETOOLONG);
++	if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN))
++		goto out;
++
 +	sb = dir->i_sb;
 +	err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM);
 +	ret = ERR_PTR(err);
 +	if (unlikely(err))
 +		goto out;
 +
-+	ret = ERR_PTR(-ENAMETOOLONG);
-+	if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN))
-+		goto out_si;
 +	err = au_di_init(dentry);
 +	ret = ERR_PTR(err);
 +	if (unlikely(err))
@@ -12183,7 +12187,7 @@
 +		err = au_digen_test(parent, au_sigen(sb));
 +	if (!err) {
 +		npositive = au_lkup_dentry(dentry, au_dbstart(parent),
-+					   /*type*/0, flags);
++					   /*type*/0);
 +		err = npositive;
 +	}
 +	di_read_unlock(parent, AuLock_IR);
@@ -12201,6 +12205,13 @@
 +	}
 +
 +	ret = d_splice_alias(inode, dentry);
++#if 0
++	if (unlikely(d_need_lookup(dentry))) {
++		spin_lock(&dentry->d_lock);
++		dentry->d_flags &= ~DCACHE_NEED_LOOKUP;
++		spin_unlock(&dentry->d_lock);
++	} else
++#endif
 +	if (unlikely(IS_ERR(ret) && inode)) {
 +		ii_write_unlock(inode);
 +		iput(inode);
@@ -12904,7 +12915,7 @@
 +	} buf;
 +
 +	err = -ENOMEM;
-+	buf.k = __getname_gfp(GFP_NOFS);
++	buf.k = (void *)__get_free_page(GFP_NOFS);
 +	if (unlikely(!buf.k))
 +		goto out;
 +
@@ -12929,7 +12940,7 @@
 +	}
 +
 +out_name:
-+	__putname(buf.k);
++	free_page((unsigned long)buf.k);
 +out:
 +	AuTraceErr(err);
 +	return ERR_PTR(err);
@@ -12938,7 +12949,11 @@
 +static void aufs_put_link(struct dentry *dentry __maybe_unused,
 +			  struct nameidata *nd, void *cookie __maybe_unused)
 +{
-+	__putname(nd_get_link(nd));
++	char *p;
++
++	p = nd_get_link(nd);
++	if (!IS_ERR_OR_NULL(p))
++		free_page((unsigned long)p);
 +}
 +
 +/* ---------------------------------------------------------------------- */
@@ -13005,8 +13020,8 @@
 +	.update_time	= aufs_update_time
 +};
 --- a/fs/aufs/i_op_add.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/i_op_add.c	2012-10-29 03:30:14.239048114 +0000
-@@ -0,0 +1,712 @@
++++ b/fs/aufs/i_op_add.c	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,713 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -13276,7 +13291,8 @@
 +	h_dir = au_pinned_h_dir(&pin);
 +	switch (arg->type) {
 +	case Creat:
-+		err = vfsub_create(h_dir, &h_path, arg->u.c.mode, arg->u.c.want_excl);
++		err = vfsub_create(h_dir, &h_path, arg->u.c.mode,
++				   arg->u.c.want_excl);
 +		break;
 +	case Symlink:
 +		err = vfsub_symlink(h_dir, &h_path, arg->u.s.symname);
@@ -13720,8 +13736,8 @@
 +	return err;
 +}
 --- a/fs/aufs/i_op_del.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/i_op_del.c	2012-10-29 03:30:14.239048114 +0000
-@@ -0,0 +1,478 @@
++++ b/fs/aufs/i_op_del.c	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,477 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -13792,8 +13808,7 @@
 +			au_di_cp(tmp, dinfo);
 +			au_di_swap(tmp, dinfo);
 +			/* returns the number of positive dentries */
-+			need_wh = au_lkup_dentry(dentry, bstart + 1, /*type*/0,
-+						 /*flags*/0);
++			need_wh = au_lkup_dentry(dentry, bstart + 1, /*type*/0);
 +			au_di_swap(tmp, dinfo);
 +			au_rw_write_unlock(&tmp->di_rwsem);
 +			au_di_free(tmp);
@@ -15230,8 +15245,8 @@
 +	return err;
 +}
 --- a/fs/aufs/iinfo.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/iinfo.c	2012-01-10 02:15:56.000000000 +0000
-@@ -0,0 +1,264 @@
++++ b/fs/aufs/iinfo.c	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,276 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -15344,10 +15359,22 @@
 +	hinode->hi_whdentry = h_wh;
 +}
 +
-+void au_update_iigen(struct inode *inode)
++void au_update_iigen(struct inode *inode, int half)
 +{
-+	atomic_set(&au_ii(inode)->ii_generation, au_sigen(inode->i_sb));
-+	/* smp_mb(); */ /* atomic_set */
++	struct au_iinfo *iinfo;
++	struct au_iigen *iigen;
++	unsigned int sigen;
++
++	sigen = au_sigen(inode->i_sb);
++	iinfo = au_ii(inode);
++	iigen = &iinfo->ii_generation;
++	spin_lock(&iinfo->ii_genspin);
++	iigen->ig_generation = sigen;
++	if (half)
++		au_ig_fset(iigen->ig_flags, HALF_REFRESHED);
++	else
++		au_ig_fclr(iigen->ig_flags, HALF_REFRESHED);
++	spin_unlock(&iinfo->ii_genspin);
 +}
 +
 +/* it may be called at remount time, too */
@@ -15398,6 +15425,7 @@
 +	struct au_iinfo *iinfo = &c->iinfo;
 +	static struct lock_class_key aufs_ii;
 +
++	spin_lock_init(&iinfo->ii_genspin);
 +	au_rw_init(&iinfo->ii_rwsem);
 +	au_rw_class(&iinfo->ii_rwsem, &aufs_ii);
 +	inode_init_once(&c->vfs_inode);
@@ -15420,8 +15448,7 @@
 +		for (i = 0; i < nbr; i++)
 +			iinfo->ii_hinode[i].hi_id = -1;
 +
-+		atomic_set(&iinfo->ii_generation, au_sigen(sb));
-+		/* smp_mb(); */ /* atomic_set */
++		iinfo->ii_generation.ig_generation = au_sigen(sb);
 +		iinfo->ii_bstart = -1;
 +		iinfo->ii_bend = -1;
 +		iinfo->ii_vdir = NULL;
@@ -15497,8 +15524,8 @@
 +	AuRwDestroy(&iinfo->ii_rwsem);
 +}
 --- a/fs/aufs/inode.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/inode.c	2012-10-29 03:30:14.239048114 +0000
-@@ -0,0 +1,478 @@
++++ b/fs/aufs/inode.c	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,488 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -15535,7 +15562,7 @@
 +static void au_refresh_hinode_attr(struct inode *inode, int do_version)
 +{
 +	au_cpup_attr_all(inode, /*force*/0);
-+	au_update_iigen(inode);
++	au_update_iigen(inode, /*half*/1);
 +	if (do_version)
 +		inode->i_version++;
 +}
@@ -15754,6 +15781,8 @@
 +static int reval_inode(struct inode *inode, struct dentry *dentry)
 +{
 +	int err;
++	unsigned int gen;
++	struct au_iigen iigen;
 +	aufs_bindex_t bindex, bend;
 +	struct inode *h_inode, *h_dinode;
 +
@@ -15772,12 +15801,20 @@
 +	bend = au_ibend(inode);
 +	for (bindex = au_ibstart(inode); bindex <= bend; bindex++) {
 +		h_inode = au_h_iptr(inode, bindex);
-+		if (h_inode && h_inode == h_dinode) {
-+			err = 0;
-+			if (au_iigen_test(inode, au_digen(dentry)))
-+				err = au_refresh_hinode(inode, dentry);
++		if (!h_inode || h_inode != h_dinode)
++			continue;
++
++		err = 0;
++		gen = au_iigen(inode, &iigen);
++		if (gen == au_digen(dentry)
++		    && !au_ig_ftest(iigen.ig_flags, HALF_REFRESHED))
 +			break;
-+		}
++
++		/* fully refresh inode using dentry */
++		err = au_refresh_hinode(inode, dentry);
++		if (!err)
++			au_update_iigen(inode, /*half*/0);
++		break;
 +	}
 +
 +	if (unlikely(err))
@@ -15978,8 +16015,8 @@
 +	return au_test_h_perm(h_inode, mask);
 +}
 --- a/fs/aufs/inode.h	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/inode.h	2012-10-29 03:30:14.243048129 +0000
-@@ -0,0 +1,560 @@
++++ b/fs/aufs/inode.h	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,588 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -16033,9 +16070,22 @@
 +	struct dentry		*hi_whdentry;
 +};
 +
++/* ig_flags */
++#define AuIG_HALF_REFRESHED		1
++#define au_ig_ftest(flags, name)	((flags) & AuIG_##name)
++#define au_ig_fset(flags, name) \
++	do { (flags) |= AuIG_##name; } while (0)
++#define au_ig_fclr(flags, name) \
++	do { (flags) &= ~AuIG_##name; } while (0)
++
++struct au_iigen {
++	__u32		ig_generation, ig_flags;
++};
++
 +struct au_vdir;
 +struct au_iinfo {
-+	atomic_t		ii_generation;
++	spinlock_t		ii_genspin;
++	struct au_iigen 	ii_generation;
 +	struct super_block	*ii_hsb1;	/* no get/put */
 +
 +	struct au_rwsem		ii_rwsem;
@@ -16184,7 +16234,7 @@
 +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex,
 +		   struct inode *h_inode, unsigned int flags);
 +
-+void au_update_iigen(struct inode *inode);
++void au_update_iigen(struct inode *inode, int half);
 +void au_update_ibrange(struct inode *inode, int do_put_zero);
 +
 +void au_icntnr_init_once(void *_c);
@@ -16292,9 +16342,19 @@
 +#endif
 +}
 +
-+static inline unsigned int au_iigen(struct inode *inode)
++static inline unsigned int au_iigen(struct inode *inode, struct au_iigen *iigen)
 +{
-+	return atomic_read(&au_ii(inode)->ii_generation);
++	unsigned int gen;
++	struct au_iinfo *iinfo;
++
++	iinfo = au_ii(inode);
++	spin_lock(&iinfo->ii_genspin);
++	if (iigen)
++		*iigen = iinfo->ii_generation;
++	gen = iinfo->ii_generation.ig_generation;
++	spin_unlock(&iinfo->ii_genspin);
++
++	return gen;
 +}
 +
 +/* tiny test for inode number */
@@ -16311,7 +16371,12 @@
 +
 +static inline void au_iigen_dec(struct inode *inode)
 +{
-+	atomic_dec(&au_ii(inode)->ii_generation);
++	struct au_iinfo *iinfo;
++
++	iinfo = au_ii(inode);
++	spin_lock(&iinfo->ii_genspin);
++	iinfo->ii_generation.ig_generation--;
++	spin_unlock(&iinfo->ii_genspin);
 +}
 +
 +static inline int au_iigen_test(struct inode *inode, unsigned int sigen)
@@ -16319,7 +16384,7 @@
 +	int err;
 +
 +	err = 0;
-+	if (unlikely(inode && au_iigen(inode) != sigen))
++	if (unlikely(inode && au_iigen(inode, NULL) != sigen))
 +		err = -EIO;
 +
 +	return err;
@@ -16986,8 +17051,8 @@
 +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b
 +endif
 --- a/fs/aufs/module.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/module.c	2012-03-11 05:01:22.000000000 +0000
-@@ -0,0 +1,196 @@
++++ b/fs/aufs/module.c	2012-12-16 14:11:13.358479829 +0000
+@@ -0,0 +1,202 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -17055,6 +17120,12 @@
 +{
 +	int i;
 +
++	/*
++	 * Make sure all delayed rcu free inodes are flushed before we
++	 * destroy cache.
++	 */
++	rcu_barrier();
++
 +	/* excluding AuCache_HNOTIFY */
 +	BUILD_BUG_ON(AuCache_HNOTIFY + 1 != AuCache_Last);
 +	for (i = 0; i < AuCache_HNOTIFY; i++)
@@ -20509,7 +20580,7 @@
 +#endif /* __KERNEL__ */
 +#endif /* __AUFS_RWSEM_H__ */
 --- a/fs/aufs/sbinfo.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/sbinfo.c	2012-01-10 02:15:56.000000000 +0000
++++ b/fs/aufs/sbinfo.c	2012-12-16 14:11:13.362479850 +0000
 @@ -0,0 +1,343 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
@@ -20670,7 +20741,7 @@
 +
 +	gen = ++au_sbi(sb)->si_generation;
 +	au_update_digen(sb->s_root);
-+	au_update_iigen(sb->s_root->d_inode);
++	au_update_iigen(sb->s_root->d_inode, /*half*/0);
 +	sb->s_root->d_inode->i_version++;
 +	return gen;
 +}
@@ -20920,8 +20991,8 @@
 +#endif /* __KERNEL__ */
 +#endif /* __AUFS_SPL_H__ */
 --- a/fs/aufs/super.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/super.c	2012-10-29 03:30:14.243048129 +0000
-@@ -0,0 +1,962 @@
++++ b/fs/aufs/super.c	2012-12-16 14:11:13.362479850 +0000
+@@ -0,0 +1,993 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -21341,6 +21412,36 @@
 +
 +/* ---------------------------------------------------------------------- */
 +
++static int aufs_sync_fs(struct super_block *sb, int wait)
++{
++	int err, e;
++	aufs_bindex_t bend, bindex;
++	struct au_branch *br;
++	struct super_block *h_sb;
++
++	err = 0;
++	si_noflush_read_lock(sb);
++	bend = au_sbend(sb);
++	for (bindex = 0; bindex <= bend; bindex++) {
++		br = au_sbr(sb, bindex);
++		if (!au_br_writable(br->br_perm))
++			continue;
++
++		h_sb = au_sbr_sb(sb, bindex);
++		if (h_sb->s_op->sync_fs) {
++			e = h_sb->s_op->sync_fs(h_sb, wait);
++			if (unlikely(e && !err))
++				err = e;
++			/* go on even if an error happens */
++		}
++	}
++	si_read_unlock(sb);
++
++	return err;
++}
++
++/* ---------------------------------------------------------------------- */
++
 +/* final actions when unmounting a file system */
 +static void aufs_put_super(struct super_block *sb)
 +{
@@ -21551,7 +21652,7 @@
 +	sigen = au_sigen(sb);
 +	for (ull = 0; ull < max; ull++) {
 +		inode = array[ull];
-+		if (au_iigen(inode) != sigen) {
++		if (au_iigen(inode, NULL) != sigen) {
 +			ii_write_lock_child(inode);
 +			e = au_refresh_hinode_self(inode);
 +			ii_write_unlock(inode);
@@ -21704,6 +21805,7 @@
 +	.show_options	= aufs_show_options,
 +	.statfs		= aufs_statfs,
 +	.put_super	= aufs_put_super,
++	.sync_fs	= aufs_sync_fs,
 +	.remount_fs	= aufs_remount_fs
 +};
 +
@@ -23060,7 +23162,7 @@
 +		pr_err("err %d (ignored)\n", err);
 +}
 --- a/fs/aufs/vdir.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/vdir.c	2012-01-10 02:15:56.000000000 +0000
++++ b/fs/aufs/vdir.c	2012-12-16 14:11:13.362479850 +0000
 @@ -0,0 +1,885 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
@@ -23586,7 +23688,7 @@
 +	AuDebugOn(!au_opt_test(au_mntflags(sb), SHWH));
 +
 +	err = -ENOMEM;
-+	o = p = __getname_gfp(GFP_NOFS);
++	o = p = (void *)__get_free_page(GFP_NOFS);
 +	if (unlikely(!p))
 +		goto out;
 +
@@ -23606,7 +23708,7 @@
 +		}
 +	}
 +
-+	__putname(o);
++	free_page((unsigned long)o);
 +
 +out:
 +	AuTraceErr(err);
@@ -24728,8 +24830,8 @@
 +	return err;
 +}
 --- a/fs/aufs/vfsub.h	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/vfsub.h	2012-10-29 03:30:14.243048129 +0000
-@@ -0,0 +1,283 @@
++++ b/fs/aufs/vfsub.h	2012-12-16 14:11:13.362479850 +0000
+@@ -0,0 +1,284 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
 + *
@@ -24895,7 +24997,8 @@
 +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1,
 +			 struct dentry *d2, struct au_hinode *hdir2);
 +
-+int vfsub_create(struct inode *dir, struct path *path, int mode, bool want_excl);
++int vfsub_create(struct inode *dir, struct path *path, int mode,
++		 bool want_excl);
 +int vfsub_symlink(struct inode *dir, struct path *path,
 +		  const char *symname);
 +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev);
@@ -25717,7 +25820,7 @@
 +	}
 +};
 --- a/fs/aufs/whout.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/whout.c	2012-10-29 03:30:14.247048152 +0000
++++ b/fs/aufs/whout.c	2012-12-16 14:11:13.362479850 +0000
 @@ -0,0 +1,1042 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
@@ -26536,7 +26639,7 @@
 +	struct au_vdir_destr *str;
 +
 +	err = -ENOMEM;
-+	p = __getname_gfp(GFP_NOFS);
++	p = (void *)__get_free_page(GFP_NOFS);
 +	wh_name.name = p;
 +	if (unlikely(!wh_name.name))
 +		goto out;
@@ -26566,7 +26669,7 @@
 +			break;
 +		}
 +	}
-+	__putname(wh_name.name);
++	free_page((unsigned long)wh_name.name);
 +
 +out:
 +	return err;
@@ -27165,7 +27268,7 @@
 +#endif /* __KERNEL__ */
 +#endif /* __AUFS_WKQ_H__ */
 --- a/fs/aufs/xino.c	1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/xino.c	2012-07-22 01:31:00.000000000 +0100
++++ b/fs/aufs/xino.c	2012-12-16 14:11:13.362479850 +0000
 @@ -0,0 +1,1264 @@
 +/*
 + * Copyright (C) 2005-2012 Junjiro R. Okajima
@@ -28377,7 +28480,7 @@
 +
 +	if (bwr >= 0) {
 +		file = ERR_PTR(-ENOMEM);
-+		page = __getname_gfp(GFP_NOFS);
++		page = (void *)__get_free_page(GFP_NOFS);
 +		if (unlikely(!page))
 +			goto out;
 +		path.mnt = br->br_mnt;
@@ -28391,7 +28494,7 @@
 +			if (!IS_ERR(file))
 +				au_xino_brid_set(sb, br->br_id);
 +		}
-+		__putname(page);
++		free_page((unsigned long)page);
 +	} else {
 +		file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/0);
 +		if (IS_ERR(file))
@@ -28432,10 +28535,10 @@
 +	return err;
 +}
 --- a/include/linux/aufs_type.h	1970-01-01 01:00:00.000000000 +0100
-+++ b/include/linux/aufs_type.h	2012-10-29 03:30:14.247048152 +0000
-@@ -0,0 +1,233 @@
++++ b/include/linux/aufs_type.h	2012-12-16 14:11:13.362479850 +0000
+@@ -0,0 +1,19 @@
 +/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2012 Junjiro R. Okajima
 + *
 + * This program, aufs is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
@@ -28452,218 +28555,4 @@
 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 + */
 +
-+#ifndef __AUFS_TYPE_H__
-+#define __AUFS_TYPE_H__
-+
-+#define AUFS_NAME	"aufs"
-+
-+#ifdef __KERNEL__
-+/*
-+ * define it before including all other headers.
-+ * sched.h may use pr_* macros before defining "current", so define the
-+ * no-current version first, and re-define later.
-+ */
-+#define pr_fmt(fmt)	AUFS_NAME " %s:%d: " fmt, __func__, __LINE__
-+#include <linux/sched.h>
-+#undef pr_fmt
-+#define pr_fmt(fmt)	AUFS_NAME " %s:%d:%s[%d]: " fmt, \
-+		__func__, __LINE__, current->comm, current->pid
-+#else
-+#include <stdint.h>
-+#include <sys/types.h>
-+#endif /* __KERNEL__ */
-+
-+#include <linux/limits.h>
-+
-+#define AUFS_VERSION	"3.6-20121015"
-+
-+/* todo? move this to linux-2.6.19/include/magic.h */
-+#define AUFS_SUPER_MAGIC	('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
-+
-+/* ---------------------------------------------------------------------- */
-+
-+#ifdef CONFIG_AUFS_BRANCH_MAX_127
-+typedef int8_t aufs_bindex_t;
-+#define AUFS_BRANCH_MAX 127
-+#else
-+typedef int16_t aufs_bindex_t;
-+#ifdef CONFIG_AUFS_BRANCH_MAX_511
-+#define AUFS_BRANCH_MAX 511
-+#elif defined(CONFIG_AUFS_BRANCH_MAX_1023)
-+#define AUFS_BRANCH_MAX 1023
-+#elif defined(CONFIG_AUFS_BRANCH_MAX_32767)
-+#define AUFS_BRANCH_MAX 32767
-+#endif
-+#endif
-+
-+#ifdef __KERNEL__
-+#ifndef AUFS_BRANCH_MAX
-+#error unknown CONFIG_AUFS_BRANCH_MAX value
-+#endif
-+#endif /* __KERNEL__ */
-+
-+/* ---------------------------------------------------------------------- */
-+
-+#define AUFS_FSTYPE		AUFS_NAME
-+
-+#define AUFS_ROOT_INO		2
-+#define AUFS_FIRST_INO		11
-+
-+#define AUFS_WH_PFX		".wh."
-+#define AUFS_WH_PFX_LEN		((int)sizeof(AUFS_WH_PFX) - 1)
-+#define AUFS_WH_TMP_LEN		4
-+/* a limit for rmdir/rename a dir */
-+#define AUFS_MAX_NAMELEN	(NAME_MAX \
-+				- AUFS_WH_PFX_LEN * 2	/* doubly whiteouted */\
-+				- 1			/* dot */\
-+				- AUFS_WH_TMP_LEN)	/* hex */
-+#define AUFS_XINO_FNAME		"." AUFS_NAME ".xino"
-+#define AUFS_XINO_DEFPATH	"/tmp/" AUFS_XINO_FNAME
-+#define AUFS_XINO_TRUNC_INIT	64 /* blocks */
-+#define AUFS_XINO_TRUNC_STEP	4  /* blocks */
-+#define AUFS_DIRWH_DEF		3
-+#define AUFS_RDCACHE_DEF	10 /* seconds */
-+#define AUFS_RDCACHE_MAX	3600 /* seconds */
-+#define AUFS_RDBLK_DEF		512 /* bytes */
-+#define AUFS_RDHASH_DEF		32
-+#define AUFS_WKQ_NAME		AUFS_NAME "d"
-+#define AUFS_MFS_DEF_SEC	30 /* seconds */
-+#define AUFS_MFS_MAX_SEC	3600 /* seconds */
-+#define AUFS_PLINK_WARN		100 /* number of plinks */
-+
-+/* pseudo-link maintenace under /proc */
-+#define AUFS_PLINK_MAINT_NAME	"plink_maint"
-+#define AUFS_PLINK_MAINT_DIR	"fs/" AUFS_NAME
-+#define AUFS_PLINK_MAINT_PATH	AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME
-+
-+#define AUFS_DIROPQ_NAME	AUFS_WH_PFX ".opq" /* whiteouted doubly */
-+#define AUFS_WH_DIROPQ		AUFS_WH_PFX AUFS_DIROPQ_NAME
-+
-+#define AUFS_BASE_NAME		AUFS_WH_PFX AUFS_NAME
-+#define AUFS_PLINKDIR_NAME	AUFS_WH_PFX "plnk"
-+#define AUFS_ORPHDIR_NAME	AUFS_WH_PFX "orph"
-+
-+/* doubly whiteouted */
-+#define AUFS_WH_BASE		AUFS_WH_PFX AUFS_BASE_NAME
-+#define AUFS_WH_PLINKDIR	AUFS_WH_PFX AUFS_PLINKDIR_NAME
-+#define AUFS_WH_ORPHDIR		AUFS_WH_PFX AUFS_ORPHDIR_NAME
-+
-+/* branch permissions and attributes */
-+#define AUFS_BRPERM_RW		"rw"
-+#define AUFS_BRPERM_RO		"ro"
-+#define AUFS_BRPERM_RR		"rr"
-+#define AUFS_BRRATTR_WH		"wh"
-+#define AUFS_BRWATTR_NLWH	"nolwh"
-+
-+/* ---------------------------------------------------------------------- */
-+
-+/* ioctl */
-+enum {
-+	/* readdir in userspace */
-+	AuCtl_RDU,
-+	AuCtl_RDU_INO,
-+
-+	/* pathconf wrapper */
-+	AuCtl_WBR_FD,
-+
-+	/* busy inode */
-+	AuCtl_IBUSY
-+};
-+
-+/* borrowed from linux/include/linux/kernel.h */
-+#ifndef ALIGN
-+#define ALIGN(x, a)		__ALIGN_MASK(x, (typeof(x))(a)-1)
-+#define __ALIGN_MASK(x, mask)	(((x)+(mask))&~(mask))
-+#endif
-+
-+/* borrowed from linux/include/linux/compiler-gcc3.h */
-+#ifndef __aligned
-+#define __aligned(x)			__attribute__((aligned(x)))
-+#endif
-+
-+#ifdef __KERNEL__
-+#ifndef __packed
-+#define __packed			__attribute__((packed))
-+#endif
-+#endif
-+
-+struct au_rdu_cookie {
-+	uint64_t	h_pos;
-+	int16_t		bindex;
-+	uint8_t		flags;
-+	uint8_t		pad;
-+	uint32_t	generation;
-+} __aligned(8);
-+
-+struct au_rdu_ent {
-+	uint64_t	ino;
-+	int16_t		bindex;
-+	uint8_t		type;
-+	uint8_t		nlen;
-+	uint8_t		wh;
-+	char		name[0];
-+} __aligned(8);
-+
-+static inline int au_rdu_len(int nlen)
-+{
-+	/* include the terminating NULL */
-+	return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1,
-+		     sizeof(uint64_t));
-+}
-+
-+union au_rdu_ent_ul {
-+	struct au_rdu_ent __user	*e;
-+	uint64_t			ul;
-+};
-+
-+enum {
-+	AufsCtlRduV_SZ,
-+	AufsCtlRduV_End
-+};
-+
-+struct aufs_rdu {
-+	/* input */
-+	union {
-+		uint64_t	sz;	/* AuCtl_RDU */
-+		uint64_t	nent;	/* AuCtl_RDU_INO */
-+	};
-+	union au_rdu_ent_ul	ent;
-+	uint16_t		verify[AufsCtlRduV_End];
-+
-+	/* input/output */
-+	uint32_t		blk;
-+
-+	/* output */
-+	union au_rdu_ent_ul	tail;
-+	/* number of entries which were added in a single call */
-+	uint64_t		rent;
-+	uint8_t			full;
-+	uint8_t			shwh;
-+
-+	struct au_rdu_cookie	cookie;
-+} __aligned(8);
-+
-+/* ---------------------------------------------------------------------- */
-+
-+struct aufs_wbr_fd {
-+	uint32_t	oflags;
-+	int16_t		brid;
-+} __aligned(8);
-+
-+/* ---------------------------------------------------------------------- */
-+
-+struct aufs_ibusy {
-+	uint64_t	ino, h_ino;
-+	int16_t		bindex;
-+} __aligned(8);
-+
-+/* ---------------------------------------------------------------------- */
-+
-+#define AuCtlType		'A'
-+#define AUFS_CTL_RDU		_IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu)
-+#define AUFS_CTL_RDU_INO	_IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu)
-+#define AUFS_CTL_WBR_FD		_IOW(AuCtlType, AuCtl_WBR_FD, \
-+				     struct aufs_wbr_fd)
-+#define AUFS_CTL_IBUSY		_IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy)
-+
-+#endif /* __AUFS_TYPE_H__ */
++#include <uapi/linux/aufs_type.h>

Modified: dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-base.patch
==============================================================================
--- dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-base.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-base.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -1,7 +1,20 @@
-aufs3.6 base patch
+aufs3.x-rcN base patch
 
+diff --git a/fs/file_table.c b/fs/file_table.c
+index a72bf9d..dac6792 100644
+--- a/fs/file_table.c
++++ b/fs/file_table.c
+@@ -36,7 +36,7 @@ struct files_stat_struct files_stat = {
+ 	.max_files = NR_FILE
+ };
+ 
+-DEFINE_STATIC_LGLOCK(files_lglock);
++DEFINE_LGLOCK(files_lglock);
+ 
+ /* SLAB cache for file structures */
+ static struct kmem_cache *filp_cachep __read_mostly;
 diff --git a/fs/inode.c b/fs/inode.c
-index ac8d904..7b2c8fa 100644
+index b03c719..ee497f9 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
 @@ -1491,7 +1491,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
@@ -14,7 +27,7 @@
  	if (inode->i_op->update_time)
  		return inode->i_op->update_time(inode, time, flags);
 diff --git a/fs/splice.c b/fs/splice.c
-index 41514dd..663b402 100644
+index 13e5b47..f185c6c 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
 @@ -1093,8 +1093,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
@@ -42,10 +55,10 @@
  	ssize_t (*splice_read)(struct file *, loff_t *,
  			       struct pipe_inode_info *, size_t, unsigned int);
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index aa11047..9116d2e 100644
+index b33cfc9..963a61b 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -2741,6 +2741,7 @@ extern int inode_change_ok(const struct inode *, struct iattr *);
+@@ -2558,6 +2558,7 @@ extern int inode_change_ok(const struct inode *, struct iattr *);
  extern int inode_newsize_ok(const struct inode *, loff_t offset);
  extern void setattr_copy(struct inode *inode, const struct iattr *attr);
  

Modified: dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-kbuild.patch
==============================================================================
--- dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-kbuild.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-kbuild.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -1,4 +1,4 @@
-aufs3.6 kbuild patch
+aufs3.x-rcN kbuild patch
 
 diff --git a/fs/Kconfig b/fs/Kconfig
 index f95ae3a..6d8a9a5 100644
@@ -13,23 +13,11 @@
  endif # MISC_FILESYSTEMS
  
 diff --git a/fs/Makefile b/fs/Makefile
-index 2fb9779..abefac5 100644
+index 1d7af79..06db6eb 100644
 --- a/fs/Makefile
 +++ b/fs/Makefile
-@@ -125,3 +125,4 @@ obj-$(CONFIG_GFS2_FS)           += gfs2/
+@@ -126,3 +126,4 @@ obj-$(CONFIG_GFS2_FS)           += gfs2/
  obj-y				+= exofs/ # Multiple modules
  obj-$(CONFIG_CEPH_FS)		+= ceph/
  obj-$(CONFIG_PSTORE)		+= pstore/
 +obj-$(CONFIG_AUFS_FS)           += aufs/
-diff --git a/include/linux/Kbuild b/include/linux/Kbuild
-index fa21760..ee029e3 100644
---- a/include/linux/Kbuild
-+++ b/include/linux/Kbuild
-@@ -66,6 +66,7 @@ header-y += atmppp.h
- header-y += atmsap.h
- header-y += atmsvc.h
- header-y += audit.h
-+header-y += aufs_type.h
- header-y += auto_fs.h
- header-y += auto_fs4.h
- header-y += auxvec.h

Modified: dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-standalone.patch
==============================================================================
--- dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-standalone.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/features/all/aufs3/aufs3-standalone.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -1,7 +1,7 @@
-aufs3.6 standalone patch
+aufs3.x-rcN standalone patch
 
 diff --git a/fs/file_table.c b/fs/file_table.c
-index 701985e..a9fe741 100644
+index dac6792..e3f2c15 100644
 --- a/fs/file_table.c
 +++ b/fs/file_table.c
 @@ -37,6 +37,7 @@ struct files_stat_struct files_stat = {
@@ -12,7 +12,7 @@
  
  /* SLAB cache for file structures */
  static struct kmem_cache *filp_cachep __read_mostly;
-@@ -509,6 +510,8 @@ void file_sb_list_del(struct file *file)
+@@ -403,6 +404,8 @@ void file_sb_list_del(struct file *file)
  	}
  }
  
@@ -22,7 +22,7 @@
  
  /*
 diff --git a/fs/inode.c b/fs/inode.c
-index 7b2c8fa..0c4318d 100644
+index ee497f9..5e7eee7 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
 @@ -56,6 +56,7 @@ static struct hlist_head *inode_hashtable __read_mostly;
@@ -42,7 +42,7 @@
  /**
   *	touch_atime	-	update the access time
 diff --git a/fs/namespace.c b/fs/namespace.c
-index 7bdf790..5b85c4c 100644
+index 2496062..3e66a90 100644
 --- a/fs/namespace.c
 +++ b/fs/namespace.c
 @@ -50,6 +50,7 @@ EXPORT_SYMBOL_GPL(fs_kobj);
@@ -123,7 +123,7 @@
  static int fsnotify_mark_destroy(void *ignored)
  {
 diff --git a/fs/open.c b/fs/open.c
-index e1f2cdb..2804cd6 100644
+index 59071f5..7e4c856 100644
 --- a/fs/open.c
 +++ b/fs/open.c
 @@ -60,6 +60,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
@@ -135,7 +135,7 @@
  static long do_sys_truncate(const char __user *pathname, loff_t length)
  {
 diff --git a/fs/splice.c b/fs/splice.c
-index 663b402..51e1deb 100644
+index f185c6c..f3d89da 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
 @@ -1117,6 +1117,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
@@ -171,7 +171,7 @@
  }
 +EXPORT_SYMBOL_GPL(cap_mmap_file);
 diff --git a/security/device_cgroup.c b/security/device_cgroup.c
-index 442204c..e644a1c 100644
+index b08d20c..a90420b 100644
 --- a/security/device_cgroup.c
 +++ b/security/device_cgroup.c
 @@ -7,6 +7,7 @@
@@ -182,19 +182,19 @@
  #include <linux/list.h>
  #include <linux/uaccess.h>
  #include <linux/seq_file.h>
-@@ -493,6 +494,7 @@ found:
- 
- 	return -EPERM;
+@@ -617,6 +618,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
+ 	return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
+ 			access);
  }
 +EXPORT_SYMBOL_GPL(__devcgroup_inode_permission);
  
  int devcgroup_inode_mknod(int mode, dev_t dev)
  {
 diff --git a/security/security.c b/security/security.c
-index 860aeb3..ffb57bf 100644
+index 8dcd4ae..6efe561 100644
 --- a/security/security.c
 +++ b/security/security.c
-@@ -384,6 +384,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry)
+@@ -396,6 +396,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry)
  		return 0;
  	return security_ops->path_rmdir(dir, dentry);
  }
@@ -202,7 +202,7 @@
  
  int security_path_unlink(struct path *dir, struct dentry *dentry)
  {
-@@ -400,6 +401,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry,
+@@ -412,6 +413,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry,
  		return 0;
  	return security_ops->path_symlink(dir, dentry, old_name);
  }
@@ -210,7 +210,7 @@
  
  int security_path_link(struct dentry *old_dentry, struct path *new_dir,
  		       struct dentry *new_dentry)
-@@ -408,6 +410,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir,
+@@ -420,6 +422,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir,
  		return 0;
  	return security_ops->path_link(old_dentry, new_dir, new_dentry);
  }
@@ -218,7 +218,7 @@
  
  int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
  			 struct path *new_dir, struct dentry *new_dentry)
-@@ -426,6 +429,7 @@ int security_path_truncate(struct path *path)
+@@ -438,6 +441,7 @@ int security_path_truncate(struct path *path)
  		return 0;
  	return security_ops->path_truncate(path);
  }
@@ -226,15 +226,15 @@
  
  int security_path_chmod(struct path *path, umode_t mode)
  {
-@@ -433,6 +437,7 @@ int security_path_chmod(struct path *path, umode_t mode)
+@@ -445,6 +449,7 @@ int security_path_chmod(struct path *path, umode_t mode)
  		return 0;
  	return security_ops->path_chmod(path, mode);
  }
 +EXPORT_SYMBOL_GPL(security_path_chmod);
  
- int security_path_chown(struct path *path, uid_t uid, gid_t gid)
+ int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
  {
-@@ -440,6 +445,7 @@ int security_path_chown(struct path *path, uid_t uid, gid_t gid)
+@@ -452,6 +457,7 @@ int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
  		return 0;
  	return security_ops->path_chown(path, uid, gid);
  }
@@ -242,7 +242,7 @@
  
  int security_path_chroot(struct path *path)
  {
-@@ -516,6 +522,7 @@ int security_inode_readlink(struct dentry *dentry)
+@@ -528,6 +534,7 @@ int security_inode_readlink(struct dentry *dentry)
  		return 0;
  	return security_ops->inode_readlink(dentry);
  }
@@ -250,7 +250,7 @@
  
  int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd)
  {
-@@ -530,6 +537,7 @@ int security_inode_permission(struct inode *inode, int mask)
+@@ -542,6 +549,7 @@ int security_inode_permission(struct inode *inode, int mask)
  		return 0;
  	return security_ops->inode_permission(inode, mask);
  }
@@ -258,7 +258,7 @@
  
  int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
  {
-@@ -645,6 +653,7 @@ int security_file_permission(struct file *file, int mask)
+@@ -663,6 +671,7 @@ int security_file_permission(struct file *file, int mask)
  
  	return fsnotify_perm(file, mask);
  }
@@ -266,7 +266,7 @@
  
  int security_file_alloc(struct file *file)
  {
-@@ -705,6 +714,7 @@ int security_mmap_file(struct file *file, unsigned long prot,
+@@ -723,6 +732,7 @@ int security_mmap_file(struct file *file, unsigned long prot,
  		return ret;
  	return ima_file_mmap(file, prot);
  }

Modified: dists/trunk/linux/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch
==============================================================================
--- dists/trunk/linux/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -19,7 +19,7 @@
 
 --- a/Documentation/kernel-parameters.txt
 +++ b/Documentation/kernel-parameters.txt
-@@ -455,8 +455,8 @@
+@@ -455,8 +455,8 @@ bytes respectively. Such letter suffixes
  	ccw_timeout_log [S390]
  			See Documentation/s390/CommonIO for details.
  
@@ -32,7 +32,7 @@
  	checkreqprot	[SELINUX] Set initial checkreqprot flag value.
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -709,6 +709,14 @@
+@@ -784,6 +784,14 @@ config MEMCG
  	  This config option also selects MM_OWNER config option, which
  	  could in turn add some fork/exit overhead.
  
@@ -49,7 +49,7 @@
  	depends on MEMCG && SWAP
 --- a/kernel/cgroup.c
 +++ b/kernel/cgroup.c
-@@ -5029,7 +5029,7 @@
+@@ -5132,7 +5132,7 @@ static void cgroup_release_agent(struct
  	mutex_unlock(&cgroup_mutex);
  }
  
@@ -58,8 +58,8 @@
  {
  	int i;
  	char *token;
-@@ -5045,17 +5045,29 @@
- 			struct cgroup_subsys *ss = subsys[i];
+@@ -5152,17 +5152,29 @@ static int __init cgroup_disable(char *s
+ 				continue;
  
  			if (!strcmp(token, ss->name)) {
 -				ss->disabled = 1;
@@ -93,7 +93,7 @@
   */
 --- a/mm/memcontrol.c
 +++ b/mm/memcontrol.c
-@@ -5596,6 +5596,9 @@
+@@ -5630,6 +5630,9 @@ static void mem_cgroup_move_task(struct
  
  struct cgroup_subsys mem_cgroup_subsys = {
  	.name = "memory",

Modified: dists/trunk/linux/debian/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch
==============================================================================
--- dists/trunk/linux/debian/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/features/all/drivers-media-dvb-usb-af9005-request_firmware.patch	Sun Dec 16 15:20:29 2012	(r19608)
@@ -11,26 +11,22 @@
  drivers/media/dvb/dvb-usb/af9005-fe.c |   66 ++++++++++++++++++++++++++------
  2 files changed, 54 insertions(+), 14 deletions(-)
 
-diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
-index 868e1cb..1c3d56d 100644
---- a/drivers/media/dvb/dvb-usb/Kconfig
-+++ b/drivers/media/dvb/dvb-usb/Kconfig
-@@ -238,10 +238,10 @@ config DVB_USB_OPERA1
+--- a/drivers/media/usb/dvb-usb/Kconfig
++++ b/drivers/media/usb/dvb-usb/Kconfig
+@@ -227,10 +227,10 @@ config DVB_USB_OPERA1
  
  config DVB_USB_AF9005
  	tristate "Afatech AF9005 DVB-T USB1.1 support"
 -	depends on BROKEN
- 	depends on DVB_USB && EXPERIMENTAL
- 	select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE
- 	select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMISE
+ 	depends on DVB_USB
+ 	select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT
+ 	select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT
 +	select FW_LOADER
  	help
  	  Say Y here to support the Afatech AF9005 based DVB-T USB1.1 receiver
  	  and the TerraTec Cinergy T USB XE (Rev.1)
-diff --git a/drivers/media/dvb/dvb-usb/af9005-fe.c b/drivers/media/dvb/dvb-usb/af9005-fe.c
-index 199ece0..bcc26c8 100644
---- a/drivers/media/dvb/dvb-usb/af9005-fe.c
-+++ b/drivers/media/dvb/dvb-usb/af9005-fe.c
+--- a/drivers/media/usb/dvb-usb/af9005-fe.c
++++ b/drivers/media/usb/dvb-usb/af9005-fe.c
 @@ -22,10 +22,26 @@
   * see Documentation/dvb/README.dvb-usb for more information
   */
@@ -59,7 +55,7 @@
  
  struct af9005_fe_state {
  	struct dvb_usb_device *d;
-@@ -818,6 +834,8 @@ static int af9005_fe_init(struct dvb_frontend *fe)
+@@ -816,6 +832,8 @@ static int af9005_fe_init(struct dvb_fro
  {
  	struct af9005_fe_state *state = fe->demodulator_priv;
  	struct dvb_usb_adapter *adap = fe->dvb->priv;
@@ -68,7 +64,7 @@
  	int ret, i, scriptlen;
  	u8 temp, temp0 = 0, temp1 = 0, temp2 = 0;
  	u8 buf[2];
-@@ -969,37 +987,55 @@ static int af9005_fe_init(struct dvb_frontend *fe)
+@@ -968,37 +986,55 @@ static int af9005_fe_init(struct dvb_fro
  	if ((ret = af9005_write_ofdm_register(state->d, 0xaefb, 0x01)))
  		return ret;
  
@@ -136,7 +132,7 @@
  
  	/* save original TOPs */
  	deb_info("save original TOPs\n");
-@@ -1079,6 +1115,10 @@ static int af9005_fe_init(struct dvb_frontend *fe)
+@@ -1078,6 +1114,10 @@ static int af9005_fe_init(struct dvb_fro
  
  	deb_info("profit!\n");
  	return 0;
@@ -147,6 +143,3 @@
  }
  
  static int af9005_fe_sleep(struct dvb_frontend *fe)
--- 
-1.6.3.3
-

Modified: dists/trunk/linux/debian/patches/series
==============================================================================
--- dists/trunk/linux/debian/patches/series	Sun Dec 16 12:48:56 2012	(r19607)
+++ dists/trunk/linux/debian/patches/series	Sun Dec 16 15:20:29 2012	(r19608)
@@ -38,22 +38,14 @@
 bugfix/arm/ixp4xx_iobe.patch
 debian/x86-memtest-WARN-if-bad-RAM-found.patch
 
-bugfix/ia64/IA64-Export-asm-cmpxchg.h-to-userland.patch
 features/all/cpu-devices/Partially-revert-cpufreq-Add-support-for-x86-cpuinfo.patch
 
-debian/debugfs-set-default-mode-to-700.patch
-
 bugfix/alpha/alpha-use-large-data-model.diff
-bugfix/all/speakup-lower-default-software-speech-rate.patch
 debian/iwlwifi-do-not-request-unreleased-firmware.patch
 debian/cirrus-disable-modeset-by-default.patch
 debian/fs-enable-link-security-restrictions-by-default.patch
 bugfix/all/hid-add-apple-wireless-keyboard-2011-ansi-to-special-driver-list.patch
-bugfix/arm/ARM-7492-1-add-strstr-declaration-for-decompressors.patch
 bugfix/arm/lis3l02dq-fix-building-without-irq-to-gpio.patch
-bugfix/arm/0001-usb-phy-add-a-new-driver-for-omap-usb2-phy.patch
-bugfix/arm/0001-usb-otg-make-twl6030_usb-as-a-comparator-driver-to-o.patch
-bugfix/arm/0001-usb-otg-Fix-build-errors-if-USB_MUSB_OMAP2PLUS-is-se.patch
 bugfix/arm/omap-musb-choice.patch
 bugfix/x86/asus-laptop-Do-not-call-HWRS-on-init.patch
 



More information about the Kernel-svn-changes mailing list