***************************************************
tracking-ubuntu-sauce has 29 conflicts

--------------------------------------------------
diff --cc Makefile
index 14c93b3,8a81893..0000000
--- a/Makefile
+++ b/Makefile
@@@ -349,23 -349,22 +349,39 @@@ CFLAGS_KERNEL	
  AFLAGS_KERNEL	=
  CFLAGS_GCOV	= -fprofile-arcs -ftest-coverage
  
+ # Prefer linux-backports-modules
+ ifneq ($(KBUILD_SRC),)
+ ifneq ($(shell if test -e $(KBUILD_OUTPUT)/ubuntu-build; then echo yes; fi),yes)
+ UBUNTUINCLUDE := -I/usr/src/linux-headers-lbm-$(KERNELRELEASE)
+ endif
+ endif
  
 +# Use USERINCLUDE when you must reference the UAPI directories only.
 +USERINCLUDE    := \
 +		-I$(srctree)/arch/$(hdr-arch)/include/uapi \
 +		-Iarch/$(hdr-arch)/include/generated/uapi \
 +		-I$(srctree)/include/uapi \
 +		-Iinclude/generated/uapi \
 +                -include $(srctree)/include/linux/kconfig.h
 +
  # Use LINUXINCLUDE when you must reference the include/ directory.
  # Needed to be compatible with the O= option
++<<<<<<< HEAD
 +LINUXINCLUDE    := \
 +		-I$(srctree)/arch/$(hdr-arch)/include \
 +		-Iarch/$(hdr-arch)/include/generated \
 +		$(if $(KBUILD_SRC), -I$(srctree)/include) \
 +		-Iinclude \
 +		$(USERINCLUDE)
++=======
+ LINUXINCLUDE    := $(UBUNTUINCLUDE) -I$(srctree)/arch/$(hdr-arch)/include \
+                    -Iarch/$(hdr-arch)/include/generated -Iinclude \
+                    $(if $(KBUILD_SRC), -I$(srctree)/include) \
+                    -include $(srctree)/include/linux/kconfig.h
++>>>>>>> tracking-ubuntu-sauce
+ 
+ # UBUNTU: Include our third party driver stuff too
+ LINUXINCLUDE   += -Iubuntu/include $(if $(KBUILD_SRC),-I$(srctree)/ubuntu/include)
  
  KBUILD_CPPFLAGS := -D__KERNEL__
  
@@@ -908,10 -901,11 +924,18 @@@ headers_install_all
  
  PHONY += headers_install
  headers_install: __headers
++<<<<<<< HEAD
 +	$(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/uapi/asm/Kbuild),, \
 +	  $(error Headers not exportable for the $(SRCARCH) architecture))
 +	$(Q)$(MAKE) $(hdr-inst)=include/uapi
 +	$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst)
++=======
+ 	$(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild),, \
+ 	$(error Headers not exportable for the $(SRCARCH) architecture))
+ 	$(Q)$(MAKE) $(hdr-inst)=include
+ 	$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst)
+ 	$(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders=
++>>>>>>> tracking-ubuntu-sauce
  
  PHONY += headers_check_all
  headers_check_all: headers_install_all
@@@ -919,8 -913,9 +943,14 @@@
  
  PHONY += headers_check
  headers_check: headers_install
++<<<<<<< HEAD
 +	$(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1
 +	$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) HDRCHECK=1
++=======
+ 	$(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1
+ 	$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst) HDRCHECK=1
+ 	$(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= HDRCHECK=1
++>>>>>>> tracking-ubuntu-sauce
  
  # ---------------------------------------------------------------------------
  # Modules
--------------------------------------------------
diff --cc arch/arm/mach-highbank/highbank.c
index 40e36a5,4ed8211..0000000
--- a/arch/arm/mach-highbank/highbank.c
+++ b/arch/arm/mach-highbank/highbank.c
@@@ -15,7 -15,7 +15,11 @@@
   */
  #include <linux/clk.h>
  #include <linux/clkdev.h>
++<<<<<<< HEAD
 +#include <linux/dma-mapping.h>
++=======
+ #include <linux/input.h>
++>>>>>>> tracking-ubuntu-sauce
  #include <linux/io.h>
  #include <linux/irq.h>
  #include <linux/irqdomain.h>
@@@ -23,8 -23,8 +27,9 @@@
  #include <linux/of_irq.h>
  #include <linux/of_platform.h>
  #include <linux/of_address.h>
+ #include <linux/reboot.h>
  #include <linux/smp.h>
 +#include <linux/amba/bus.h>
  
  #include <asm/cacheflush.h>
  #include <asm/smp_plat.h>
@@@ -151,60 -152,28 +157,83 @@@ static void highbank_power_off(void
  		cpu_do_idle();
  }
  
++<<<<<<< HEAD
 +static int highbank_platform_notifier(struct notifier_block *nb,
 +				  unsigned long event, void *__dev)
 +{
 +	struct resource *res;
 +	int reg = -1;
 +	struct device *dev = __dev;
 +
 +	if (event != BUS_NOTIFY_ADD_DEVICE)
 +		return NOTIFY_DONE;
 +
 +	if (of_device_is_compatible(dev->of_node, "calxeda,hb-ahci"))
 +		reg = 0xc;
 +	else if (of_device_is_compatible(dev->of_node, "calxeda,hb-sdhci"))
 +		reg = 0x18;
 +	else if (of_device_is_compatible(dev->of_node, "arm,pl330"))
 +		reg = 0x20;
 +	else if (of_device_is_compatible(dev->of_node, "calxeda,hb-xgmac")) {
 +		res = platform_get_resource(to_platform_device(dev),
 +					    IORESOURCE_MEM, 0);
 +		if (res) {
 +			if (res->start == 0xfff50000)
 +				reg = 0;
 +			else if (res->start == 0xfff51000)
 +				reg = 4;
 +		}
 +	}
 +
 +	if (reg < 0)
 +		return NOTIFY_DONE;
 +
 +	if (of_property_read_bool(dev->of_node, "dma-coherent")) {
 +		writel(0xff31, sregs_base + reg);
 +		set_dma_ops(dev, &arm_coherent_dma_ops);
 +	} else
 +		writel(0, sregs_base + reg);
 +
 +	return NOTIFY_OK;
 +}
 +
 +static struct notifier_block highbank_amba_nb = {
 +	.notifier_call = highbank_platform_notifier,
 +};
 +
 +static struct notifier_block highbank_platform_nb = {
 +	.notifier_call = highbank_platform_notifier,
++=======
+ static int hb_keys_notifier(struct notifier_block *nb, unsigned long event, void *data)
+ {
+ 	u32 key = *(u32 *)data;
+ 
+ 	if (event != 0x1000)
+ 		return 0;
+ 
+ 	if (key == KEY_POWER)
+ 		orderly_poweroff(false);
+ 	else if (key == 0xffff)
+ 		ctrl_alt_del();
+ 
+ 	return 0;
+ }
+ static struct notifier_block hb_keys_nb = {
+ 	.notifier_call = hb_keys_notifier,
++>>>>>>> tracking-ubuntu-sauce
  };
  
  static void __init highbank_init(void)
  {
  	pm_power_off = highbank_power_off;
++<<<<<<< HEAD
 +	highbank_pm_init();
 +
 +	bus_register_notifier(&platform_bus_type, &highbank_platform_nb);
 +	bus_register_notifier(&amba_bustype, &highbank_amba_nb);
++=======
+ 	pl320_ipc_register_notifier(&hb_keys_nb);
++>>>>>>> tracking-ubuntu-sauce
  
  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
  }
--------------------------------------------------
diff --cc arch/x86/kernel/cpu/mcheck/mce-internal.h
index 6a05c1d,cd5a47c..0000000
--- a/arch/x86/kernel/cpu/mcheck/mce-internal.h
+++ b/arch/x86/kernel/cpu/mcheck/mce-internal.h
@@@ -28,17 -28,7 +28,21 @@@ extern int mce_ser
  
  extern struct mce_bank *mce_banks;
  
++<<<<<<< HEAD
 +#ifdef CONFIG_X86_MCE_INTEL
 +unsigned long mce_intel_adjust_timer(unsigned long interval);
 +void mce_intel_cmci_poll(void);
 +void mce_intel_hcpu_update(unsigned long cpu);
 +#else
 +# define mce_intel_adjust_timer mce_adjust_timer_default
 +static inline void mce_intel_cmci_poll(void) { }
 +static inline void mce_intel_hcpu_update(unsigned long cpu) { }
 +#endif
 +
 +void mce_timer_kick(unsigned long interval);
++=======
+ extern void (*mce_cpu_specific_poll)(struct mce *);
++>>>>>>> tracking-ubuntu-sauce
  
  #ifdef CONFIG_ACPI_APEI
  int apei_write_mce(struct mce *m);
--------------------------------------------------
diff --cc drivers/base/power/main.c
index a3c1404,fe5eb00..0000000
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@@ -570,6 -585,8 +590,11 @@@ static int device_resume(struct device 
  	pm_callback_t callback = NULL;
  	char *info = NULL;
  	int error = 0;
++<<<<<<< HEAD
++=======
+ 	bool put = false;
+ 	ktime_t starttime = ktime_get();
++>>>>>>> tracking-ubuntu-sauce
  
  	TRACE_DEVICE(dev);
  	TRACE_RESUME(0);
@@@ -843,10 -855,8 +869,11 @@@ static int device_suspend_noirq(struct 
  {
  	pm_callback_t callback = NULL;
  	char *info = NULL;
+ 	ktime_t starttime = ktime_get();
  
 +	if (dev->power.syscore)
 +		return 0;
 +
  	if (dev->pm_domain) {
  		info = "noirq power domain ";
  		callback = pm_noirq_op(&dev->pm_domain->ops, state);
--------------------------------------------------
diff --cc drivers/parport/Kconfig
index 4b6e4e7,9654a9e..0000000
--- a/drivers/parport/Kconfig
+++ b/drivers/parport/Kconfig
@@@ -36,7 -36,7 +36,11 @@@ if PARPOR
  config PARPORT_PC
  	tristate "PC-style hardware"
  	depends on (!SPARC64 || PCI) && !SPARC32 && !M32R && !FRV && \
++<<<<<<< HEAD
 +		(!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && !XTENSA
++=======
+ 		(!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && !ARCH_OMAP
++>>>>>>> tracking-ubuntu-sauce
  	---help---
  	  You should say Y here if you have a PC-style parallel port. All
  	  IBM PC compatible computers and some Alphas have PC-style
--------------------------------------------------
diff --cc drivers/staging/comedi/drivers/usbdux.c
index b536bba,25cd027..0000000
--- a/drivers/staging/comedi/drivers/usbdux.c
+++ b/drivers/staging/comedi/drivers/usbdux.c
@@@ -98,7 -98,8 +98,12 @@@ sampling rate. If you sample two channe
  
  #include "../comedidev.h"
  
++<<<<<<< HEAD
 +#include "comedi_fc.h"
++=======
+ #define BOARDNAME "usbdux"
+ #define FIRMWARE "usbdux_firmware.bin"
++>>>>>>> tracking-ubuntu-sauce
  
  /* timeout for the USB-transfer in ms*/
  #define BULK_TIMEOUT 1000
--------------------------------------------------
diff --cc drivers/usb/storage/ene_ub6250.c
index 118b134,3fec82f..0000000
--- a/drivers/usb/storage/ene_ub6250.c
+++ b/drivers/usb/storage/ene_ub6250.c
@@@ -1902,7 -1902,7 +1902,11 @@@ static int ene_load_bincode(struct us_d
  		fw_name = SD_INIT2_FIRMWARE;
  		break;
  	case SD_RW_PATTERN:
++<<<<<<< HEAD
 +		US_DEBUGP("SD_RW_PATTERN\n");
++=======
+ 		US_DEBUGP("SD_RDWR_PATTERN\n");
++>>>>>>> tracking-ubuntu-sauce
  		fw_name = SD_RW_FIRMWARE;
  		break;
  	/* For MS */
--------------------------------------------------
diff --cc firmware/Makefile
index eeb1403,a3bce56..0000000
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@@ -27,58 -27,23 +27,59 @@@ els
  acenic-objs := acenic/tg1.bin acenic/tg2.bin
  endif
  fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
- fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \
- 					 adaptec/starfire_tx.bin
  fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin
++<<<<<<< HEAD
 +fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw
 +fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \
 +			      bnx2x/bnx2x-e1h-6.2.9.0.fw \
 +			      bnx2x/bnx2x-e2-6.2.9.0.fw
 +fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \
 +			     bnx2/bnx2-rv2p-09-6.0.17.fw \
 +			     bnx2/bnx2-rv2p-09ax-6.0.17.fw \
 +			     bnx2/bnx2-mips-06-6.2.1.fw \
 +			     bnx2/bnx2-rv2p-06-6.0.15.fw
 +fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin
 +fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
 +				   cxgb3/t3c_psram-1.1.0.bin \
 +				   cxgb3/ael2005_opt_edc.bin \
 +				   cxgb3/ael2005_twx_edc.bin \
 +				   cxgb3/ael2020_twx_edc.bin
 +fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw
 +fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin
 +fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \
 +				   radeon/R300_cp.bin radeon/R420_cp.bin \
 +				   radeon/RS690_cp.bin radeon/RS600_cp.bin \
 +				   radeon/R520_cp.bin \
 +				   radeon/R600_pfp.bin radeon/R600_me.bin \
 +				   radeon/RV610_pfp.bin radeon/RV610_me.bin \
 +				   radeon/RV630_pfp.bin radeon/RV630_me.bin \
 +				   radeon/RV620_pfp.bin radeon/RV620_me.bin \
 +				   radeon/RV635_pfp.bin radeon/RV635_me.bin \
 +				   radeon/RV670_pfp.bin radeon/RV670_me.bin \
 +				   radeon/RS780_pfp.bin radeon/RS780_me.bin \
 +				   radeon/RV770_pfp.bin radeon/RV770_me.bin \
 +				   radeon/RV730_pfp.bin radeon/RV730_me.bin \
 +				   radeon/RV710_pfp.bin radeon/RV710_me.bin
 +fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
 +fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
++=======
+ fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-7.2.51.0.fw \
+ 			      bnx2x/bnx2x-e1h-7.2.51.0.fw \
+ 			      bnx2x/bnx2x-e2-7.2.51.0.fw
+ fw-shipped-$(CONFIG_BNX2) += 	bnx2/bnx2-mips-09-6.2.1b.fw \
+ 				bnx2/bnx2-rv2p-06-6.0.15.fw \
+ 				bnx2/bnx2-mips-06-6.2.3.fw \
+ 				bnx2/bnx2-rv2p-09-6.0.17.fw \
+ 				bnx2/bnx2-rv2p-09ax-6.0.17.fw
++>>>>>>> tracking-ubuntu-sauce
  fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
  			     e100/d102e_ucode.bin
- fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin
- fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \
- 				     cis/DP83903.cis cis/NE2K.cis \
- 				     cis/tamarack.cis cis/PE-200.cis \
- 				     cis/PE520.cis
- fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis
- fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis
- fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \
- 				       cis/COMpad2.cis cis/COMpad4.cis \
- 				       cis/SW_555_SER.cis cis/SW_7xx_SER.cis \
- 				       cis/SW_8xx_SER.cis
- fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
- fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \
- 				      advansys/3550.bin advansys/38C0800.bin
+ fw-shipped-$(CONFIG_PCMCIA_PCNET) += 
+ 				     
+ fw-shipped-$(CONFIG_PCMCIA_3C589) += 
+ fw-shipped-$(CONFIG_PCMCIA_3C574) += 
+ fw-shipped-$(CONFIG_SERIAL_8250_CS) +=
+ 				       
  fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \
  					 qlogic/12160.bin
  fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin
--------------------------------------------------
diff --cc fs/file_table.c
index a72bf9d,a9fe741..0000000
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@@ -36,7 -36,8 +36,12 @@@ struct files_stat_struct files_stat = 
  	.max_files = NR_FILE
  };
  
++<<<<<<< HEAD
 +DEFINE_STATIC_LGLOCK(files_lglock);
++=======
+ DEFINE_LGLOCK(files_lglock);
+ EXPORT_SYMBOL(files_lglock);
++>>>>>>> tracking-ubuntu-sauce
  
  /* SLAB cache for file structures */
  static struct kmem_cache *filp_cachep __read_mostly;
--------------------------------------------------
diff --cc fs/open.c
index 59071f5,4fa344b..0000000
--- a/fs/open.c
+++ b/fs/open.c
@@@ -797,6 -806,70 +800,73 @@@ struct file *dentry_open(const struct p
  }
  EXPORT_SYMBOL(dentry_open);
  
++<<<<<<< HEAD
++=======
+ /**
+  * vfs_open - open the file at the given path
+  * @path: path to open
+  * @filp: newly allocated file with f_flag initialized
+  * @cred: credentials to use
+  */
+ int vfs_open(const struct path *path, struct file *filp,
+ 	     const struct cred *cred)
+ {
+ 	struct inode *inode = path->dentry->d_inode;
+ 
+ 	if (inode->i_op->dentry_open)
+ 		return inode->i_op->dentry_open(path->dentry, filp, cred);
+ 	else {
+ 		filp->f_path = *path;
+ 		return do_dentry_open(filp, NULL, cred);
+ 	}
+ }
+ EXPORT_SYMBOL(vfs_open);
+ 
+ static void __put_unused_fd(struct files_struct *files, unsigned int fd)
+ {
+ 	struct fdtable *fdt = files_fdtable(files);
+ 	__clear_open_fd(fd, fdt);
+ 	if (fd < files->next_fd)
+ 		files->next_fd = fd;
+ }
+ 
+ void put_unused_fd(unsigned int fd)
+ {
+ 	struct files_struct *files = current->files;
+ 	spin_lock(&files->file_lock);
+ 	__put_unused_fd(files, fd);
+ 	spin_unlock(&files->file_lock);
+ }
+ 
+ EXPORT_SYMBOL(put_unused_fd);
+ 
+ /*
+  * Install a file pointer in the fd array.
+  *
+  * The VFS is full of places where we drop the files lock between
+  * setting the open_fds bitmap and installing the file in the file
+  * array.  At any such point, we are vulnerable to a dup2() race
+  * installing a file in the array before us.  We need to detect this and
+  * fput() the struct file we are about to overwrite in this case.
+  *
+  * It should never happen - if we allow dup2() do it, _really_ bad things
+  * will follow.
+  */
+ 
+ void fd_install(unsigned int fd, struct file *file)
+ {
+ 	struct files_struct *files = current->files;
+ 	struct fdtable *fdt;
+ 	spin_lock(&files->file_lock);
+ 	fdt = files_fdtable(files);
+ 	BUG_ON(fdt->fd[fd] != NULL);
+ 	rcu_assign_pointer(fdt->fd[fd], file);
+ 	spin_unlock(&files->file_lock);
+ }
+ 
+ EXPORT_SYMBOL(fd_install);
+ 
++>>>>>>> tracking-ubuntu-sauce
  static inline int build_open_flags(int flags, umode_t mode, struct open_flags *op)
  {
  	int lookup_flags = 0;
--------------------------------------------------
diff --cc include/Kbuild
index 83256b6,fe36acc..0000000
--- a/include/Kbuild
+++ b/include/Kbuild
@@@ -1,8 -1,11 +1,13 @@@
  # Top-level Makefile calls into asm-$(ARCH)
  # List only non-arch directories below
  
 -header-y += asm-generic/
  header-y += linux/
  header-y += sound/
 -header-y += mtd/
  header-y += rdma/
  header-y += video/
++<<<<<<< HEAD
 +header-y += scsi/
++=======
+ header-y += drm/
+ header-y += xen/
++>>>>>>> tracking-ubuntu-sauce
--------------------------------------------------
diff --cc include/linux/kd.h
index 25bd17f,5cc3c17..0000000
--- a/include/linux/kd.h
+++ b/include/linux/kd.h
@@@ -1,7 -1,187 +1,182 @@@
  #ifndef _LINUX_KD_H
  #define _LINUX_KD_H
 -#include <linux/types.h>
 -#include <linux/compiler.h>
  
 -/* 0x4B is 'K', to avoid collision with termios and vt */
 +#include <uapi/linux/kd.h>
  
++<<<<<<< HEAD
++=======
+ #define GIO_FONT	0x4B60	/* gets font in expanded form */
+ #define PIO_FONT	0x4B61	/* use font in expanded form */
+ 
+ #define GIO_FONTX	0x4B6B	/* get font using struct consolefontdesc */
+ #define PIO_FONTX	0x4B6C	/* set font using struct consolefontdesc */
+ struct consolefontdesc {
+ 	unsigned short charcount;	/* characters in font (256 or 512) */
+ 	unsigned short charheight;	/* scan lines per character (1-32) */
+ 	char __user *chardata;		/* font data in expanded form */
+ };
+ 
+ #define PIO_FONTRESET   0x4B6D	/* reset to default font */
+ 
+ #define GIO_CMAP	0x4B70	/* gets colour palette on VGA+ */
+ #define PIO_CMAP	0x4B71	/* sets colour palette on VGA+ */
+ 
+ #define KIOCSOUND	0x4B2F	/* start sound generation (0 for off) */
+ #define KDMKTONE	0x4B30	/* generate tone */
+ 
+ #define KDGETLED	0x4B31	/* return current led state */
+ #define KDSETLED	0x4B32	/* set led state [lights, not flags] */
+ #define 	LED_SCR		0x01	/* scroll lock led */
+ #define 	LED_NUM		0x02	/* num lock led */
+ #define 	LED_CAP		0x04	/* caps lock led */
+ 
+ #define KDGKBTYPE	0x4B33	/* get keyboard type */
+ #define 	KB_84		0x01
+ #define 	KB_101		0x02 	/* this is what we always answer */
+ #define 	KB_OTHER	0x03
+ 
+ #define KDADDIO		0x4B34	/* add i/o port as valid */
+ #define KDDELIO		0x4B35	/* del i/o port as valid */
+ #define KDENABIO	0x4B36	/* enable i/o to video board */
+ #define KDDISABIO	0x4B37	/* disable i/o to video board */
+ 
+ #define KDSETMODE	0x4B3A	/* set text/graphics mode */
+ #define		KD_TEXT		0x00
+ #define		KD_GRAPHICS	0x01
+ #define		KD_TEXT0	0x02	/* obsolete */
+ #define		KD_TEXT1	0x03	/* obsolete */
+ #define		KD_TRANSPARENT	0x04
+ #define KDGETMODE	0x4B3B	/* get current mode */
+ 
+ #define KDMAPDISP	0x4B3C	/* map display into address space */
+ #define KDUNMAPDISP	0x4B3D	/* unmap display from address space */
+ 
+ typedef char scrnmap_t;
+ #define		E_TABSZ		256
+ #define GIO_SCRNMAP	0x4B40	/* get screen mapping from kernel */
+ #define PIO_SCRNMAP	0x4B41	/* put screen mapping table in kernel */
+ #define GIO_UNISCRNMAP  0x4B69	/* get full Unicode screen mapping */
+ #define PIO_UNISCRNMAP  0x4B6A  /* set full Unicode screen mapping */
+ 
+ #define GIO_UNIMAP	0x4B66	/* get unicode-to-font mapping from kernel */
+ struct unipair {
+ 	unsigned short unicode;
+ 	unsigned short fontpos;
+ };
+ struct unimapdesc {
+ 	unsigned short entry_ct;
+ 	struct unipair __user *entries;
+ };
+ #define PIO_UNIMAP	0x4B67	/* put unicode-to-font mapping in kernel */
+ #define PIO_UNIMAPCLR	0x4B68	/* clear table, possibly advise hash algorithm */
+ struct unimapinit {
+ 	unsigned short advised_hashsize;  /* 0 if no opinion */
+ 	unsigned short advised_hashstep;  /* 0 if no opinion */
+ 	unsigned short advised_hashlevel; /* 0 if no opinion */
+ };
+ 
+ #define UNI_DIRECT_BASE 0xF000	/* start of Direct Font Region */
+ #define UNI_DIRECT_MASK 0x01FF	/* Direct Font Region bitmask */
+ 
+ #define		K_RAW		0x00
+ #define		K_XLATE		0x01
+ #define		K_MEDIUMRAW	0x02
+ #define		K_UNICODE	0x03
+ #define		K_OFF		0x04
+ #define KDGKBMODE	0x4B44	/* gets current keyboard mode */
+ #define KDSKBMODE	0x4B45	/* sets current keyboard mode */
+ 
+ #define		K_METABIT	0x03
+ #define		K_ESCPREFIX	0x04
+ #define KDGKBMETA	0x4B62	/* gets meta key handling mode */
+ #define KDSKBMETA	0x4B63	/* sets meta key handling mode */
+ 
+ #define		K_SCROLLLOCK	0x01
+ #define		K_NUMLOCK	0x02
+ #define		K_CAPSLOCK	0x04
+ #define	KDGKBLED	0x4B64	/* get led flags (not lights) */
+ #define	KDSKBLED	0x4B65	/* set led flags (not lights) */
+ 
+ struct kbentry {
+ 	unsigned char kb_table;
+ 	unsigned char kb_index;
+ 	unsigned short kb_value;
+ };
+ #define		K_NORMTAB	0x00
+ #define		K_SHIFTTAB	0x01
+ #define		K_ALTTAB	0x02
+ #define		K_ALTSHIFTTAB	0x03
+ 
+ #define KDGKBENT	0x4B46	/* gets one entry in translation table */
+ #define KDSKBENT	0x4B47	/* sets one entry in translation table */
+ 
+ struct kbsentry {
+ 	unsigned char kb_func;
+ 	unsigned char kb_string[512];
+ };
+ #define KDGKBSENT	0x4B48	/* gets one function key string entry */
+ #define KDSKBSENT	0x4B49	/* sets one function key string entry */
+ 
+ struct kbdiacr {
+         unsigned char diacr, base, result;
+ };
+ struct kbdiacrs {
+         unsigned int kb_cnt;    /* number of entries in following array */
+ 	struct kbdiacr kbdiacr[256];    /* MAX_DIACR from keyboard.h */
+ };
+ #define KDGKBDIACR      0x4B4A  /* read kernel accent table */
+ #define KDSKBDIACR      0x4B4B  /* write kernel accent table */
+ 
+ struct kbdiacruc {
+ 	unsigned int diacr, base, result;
+ };
+ struct kbdiacrsuc {
+         unsigned int kb_cnt;    /* number of entries in following array */
+ 	struct kbdiacruc kbdiacruc[256];    /* MAX_DIACR from keyboard.h */
+ };
+ #define KDGKBDIACRUC    0x4BFA  /* read kernel accent table - UCS */
+ #define KDSKBDIACRUC    0x4BFB  /* write kernel accent table - UCS */
+ 
+ struct kbkeycode {
+ 	unsigned int scancode, keycode;
+ };
+ #define KDGETKEYCODE	0x4B4C	/* read kernel keycode table entry */
+ #define KDSETKEYCODE	0x4B4D	/* write kernel keycode table entry */
+ 
+ #define KDSIGACCEPT	0x4B4E	/* accept kbd generated signals */
+ 
+ struct kbd_repeat {
+ 	int delay;	/* in msec; <= 0: don't change */
+ 	int period;	/* in msec; <= 0: don't change */
+ 			/* earlier this field was misnamed "rate" */
+ };
+ 
+ #define KDKBDREP        0x4B52  /* set keyboard delay/repeat rate;
+ 				 * actually used values are returned */
+ 
+ #define KDFONTOP	0x4B72	/* font operations */
+ 
+ struct console_font_op {
+ 	unsigned int op;	/* operation code KD_FONT_OP_* */
+ 	unsigned int flags;	/* KD_FONT_FLAG_* */
+ 	unsigned int width, height;	/* font size */
+ 	unsigned int charcount;
+ 	unsigned char __user *data;	/* font data with height fixed to 32 */
+ };
+ 
+ struct console_font {
+ 	unsigned int width, height;	/* font size */
+ 	unsigned int charcount;
+ 	unsigned char *data;	/* font data with height fixed to 32 */
+ };
+ 
+ #define KD_FONT_OP_SET		0	/* Set font */
+ #define KD_FONT_OP_GET		1	/* Get font */
+ #define KD_FONT_OP_SET_DEFAULT	2	/* Set font to default, data points to name / NULL */
+ #define KD_FONT_OP_COPY		3	/* Copy from another console */
+ 
+ #define KD_FONT_FLAG_DONT_RECALC 	1	/* Don't recalculate hw charcell size [compat] */
+ #ifdef __KERNEL__
++>>>>>>> tracking-ubuntu-sauce
  #define KD_FONT_FLAG_OLD		0x80000000	/* Invoked via old interface [compat] */
 -#endif
 -
 -/* note: 0x4B00-0x4B4E all have had a value at some time;
 -   don't reuse for the time being */
 -/* note: 0x4B60-0x4B6D, 0x4B70-0x4B72 used above */
 -
  #endif /* _LINUX_KD_H */
--------------------------------------------------
diff --cc include/linux/screen_info.h
index 005bf3e,e699dd4..0000000
--- a/include/linux/screen_info.h
+++ b/include/linux/screen_info.h
@@@ -1,8 -1,75 +1,78 @@@
  #ifndef _SCREEN_INFO_H
  #define _SCREEN_INFO_H
  
 -#include <linux/types.h>
 +#include <uapi/linux/screen_info.h>
  
++<<<<<<< HEAD
++=======
+ /*
+  * These are set up by the setup-routine at boot-time:
+  */
+ 
+ struct screen_info {
+ 	__u8  orig_x;		/* 0x00 */
+ 	__u8  orig_y;		/* 0x01 */
+ 	__u16 ext_mem_k;	/* 0x02 */
+ 	__u16 orig_video_page;	/* 0x04 */
+ 	__u8  orig_video_mode;	/* 0x06 */
+ 	__u8  orig_video_cols;	/* 0x07 */
+ 	__u8  flags;		/* 0x08 */
+ 	__u8  unused2;		/* 0x09 */
+ 	__u16 orig_video_ega_bx;/* 0x0a */
+ 	__u16 unused3;		/* 0x0c */
+ 	__u8  orig_video_lines;	/* 0x0e */
+ 	__u8  orig_video_isVGA;	/* 0x0f */
+ 	__u16 orig_video_points;/* 0x10 */
+ 
+ 	/* VESA graphic mode -- linear frame buffer */
+ 	__u16 lfb_width;	/* 0x12 */
+ 	__u16 lfb_height;	/* 0x14 */
+ 	__u16 lfb_depth;	/* 0x16 */
+ 	__u32 lfb_base;		/* 0x18 */
+ 	__u32 lfb_size;		/* 0x1c */
+ 	__u16 cl_magic, cl_offset; /* 0x20 */
+ 	__u16 lfb_linelength;	/* 0x24 */
+ 	__u8  red_size;		/* 0x26 */
+ 	__u8  red_pos;		/* 0x27 */
+ 	__u8  green_size;	/* 0x28 */
+ 	__u8  green_pos;	/* 0x29 */
+ 	__u8  blue_size;	/* 0x2a */
+ 	__u8  blue_pos;		/* 0x2b */
+ 	__u8  rsvd_size;	/* 0x2c */
+ 	__u8  rsvd_pos;		/* 0x2d */
+ 	__u16 vesapm_seg;	/* 0x2e */
+ 	__u16 vesapm_off;	/* 0x30 */
+ 	__u16 pages;		/* 0x32 */
+ 	__u16 vesa_attributes;	/* 0x34 */
+ 	__u32 capabilities;     /* 0x36 */
+ 	__u8  _reserved[6];	/* 0x3a */
+ } __attribute__((packed));
+ 
+ #define VIDEO_TYPE_MDA		0x10	/* Monochrome Text Display	*/
+ #define VIDEO_TYPE_CGA		0x11	/* CGA Display 			*/
+ #define VIDEO_TYPE_EGAM		0x20	/* EGA/VGA in Monochrome Mode	*/
+ #define VIDEO_TYPE_EGAC		0x21	/* EGA in Color Mode		*/
+ #define VIDEO_TYPE_VGAC		0x22	/* VGA+ in Color Mode		*/
+ #define VIDEO_TYPE_VLFB		0x23	/* VESA VGA in graphic mode	*/
+ 
+ #define VIDEO_TYPE_PICA_S3	0x30	/* ACER PICA-61 local S3 video	*/
+ #define VIDEO_TYPE_MIPS_G364	0x31    /* MIPS Magnum 4000 G364 video  */
+ #define VIDEO_TYPE_SGI          0x33    /* Various SGI graphics hardware */
+ 
+ #define VIDEO_TYPE_TGAC		0x40	/* DEC TGA */
+ 
+ #define VIDEO_TYPE_SUN          0x50    /* Sun frame buffer. */
+ #define VIDEO_TYPE_SUNPCI       0x51    /* Sun PCI based frame buffer. */
+ 
+ #define VIDEO_TYPE_PMAC		0x60	/* PowerMacintosh frame buffer. */
+ 
+ #define VIDEO_TYPE_EFI		0x70	/* EFI graphic mode		*/
+ 
+ #define VIDEO_FLAGS_NOCURSOR	(1 << 0) /* The video mode has no cursor set */
+ #define VIDEO_FLAGS_HANDOFF	(1 << 1) /* Video buffer is alredy painted */
+ 
+ #ifdef __KERNEL__
++>>>>>>> tracking-ubuntu-sauce
  extern struct screen_info screen_info;
  
  #define ORIG_X			(screen_info.orig_x)
--------------------------------------------------
diff --cc include/linux/security.h
index 05e88bd,6ae2a7f..0000000
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@@ -3025,7 -3026,10 +3025,14 @@@ static inline void free_secdata(void *s
  #ifdef CONFIG_SECURITY_YAMA
  extern int yama_ptrace_access_check(struct task_struct *child,
  				    unsigned int mode);
++<<<<<<< HEAD
 +extern int yama_ptrace_traceme(struct task_struct *parent);
++=======
+ extern int yama_path_link(struct dentry *old_dentry, struct path *new_dir,
+ 			  struct dentry *new_dentry);
+ extern int yama_inode_follow_link(struct dentry *dentry,
+ 				  struct nameidata *nameidata);
++>>>>>>> tracking-ubuntu-sauce
  extern void yama_task_free(struct task_struct *task);
  extern int yama_task_prctl(int option, unsigned long arg2, unsigned long arg3,
  			   unsigned long arg4, unsigned long arg5);
@@@ -3036,7 -3040,15 +3043,19 @@@ static inline int yama_ptrace_access_ch
  	return 0;
  }
  
++<<<<<<< HEAD
 +static inline int yama_ptrace_traceme(struct task_struct *parent)
++=======
+ static inline int yama_path_link(struct dentry *old_dentry,
+ 				 struct path *new_dir,
+ 				 struct dentry *new_dentry)
+ {
+ 	return 0;
+ }
+ 
+ static inline int yama_inode_follow_link(struct dentry *dentry,
+ 					 struct nameidata *nameidata)
++>>>>>>> tracking-ubuntu-sauce
  {
  	return 0;
  }
--------------------------------------------------
diff --cc scripts/Makefile.headersinst
index 06ba4a7,2a3c1b7..0000000
--- a/scripts/Makefile.headersinst
+++ b/scripts/Makefile.headersinst
@@@ -71,9 -55,11 +71,15 @@@ printdir = $(patsubst $(INSTALL_HDR_PAT
  quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
                              file$(if $(word 2, $(all-files)),s))
        cmd_install = \
++<<<<<<< HEAD
 +        $(PERL) $< $(installdir) $(SRCARCH) $(input-files); \
++=======
+         $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(printdir) $(header-y); \
+         $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(printdir) $(objhdr-y); \
+         $(PERL) $< $(objtree)/$(gen) $(install) $(SRCARCH) $(printdir) $(genhdr-y); \
++>>>>>>> tracking-ubuntu-sauce
          for F in $(wrapper-files); do                                   \
 -                echo "\#include <asm-generic/$$F>" > $(install)/$$F;    \
 +                echo "\#include <asm-generic/$$F>" > $(installdir)/$$F;    \
          done;                                                           \
          touch $@
  
--------------------------------------------------
diff --cc scripts/headers_install.pl
index 239d22d,9f56fc5..0000000
--- a/scripts/headers_install.pl
+++ b/scripts/headers_install.pl
@@@ -17,7 -18,9 +17,13 @@@
  
  use strict;
  
++<<<<<<< HEAD
 +my ($installdir, $arch, @files) = @ARGV;
++=======
+ my ($readdir, $installdir, $arch, $printdir, @files) = @ARGV;
+ 
+ $printdir =~ s@^include/@@;
++>>>>>>> tracking-ubuntu-sauce
  
  my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__";
  
--------------------------------------------------
diff --cc scripts/kconfig/Makefile
index 3091794,e064d4f..0000000
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@@ -73,24 -79,18 +79,31 @@@ update-po-config: $(obj)/kxgettext $(ob
  
  PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig
  
- allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf
+ allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(CONF)
  	$< --$@ $(Kconfig)
  
 -PHONY += listnewconfig oldnoconfig savedefconfig defconfig
 +PHONY += listnewconfig olddefconfig oldnoconfig savedefconfig defconfig
  
++<<<<<<< HEAD
 +listnewconfig olddefconfig: $(obj)/conf
 +	$< --$@ $(Kconfig)
 +
 +# oldnoconfig is an alias of olddefconfig, because people already are dependent
 +# on its behavior(sets new symbols to their default value but not 'n') with the
 +# counter-intuitive name.
 +oldnoconfig: $(obj)/conf
 +	$< --olddefconfig $(Kconfig)
 +
 +savedefconfig: $(obj)/conf
++=======
+ listnewconfig oldnoconfig: $(CONF)
+ 	$< --$@ $(Kconfig)
+ 
+ savedefconfig: $(CONF)
++>>>>>>> tracking-ubuntu-sauce
  	$< --$@=defconfig $(Kconfig)
  
- defconfig: $(obj)/conf
+ defconfig: $(CONF)
  ifeq ($(KBUILD_DEFCONFIG),)
  	$< --defconfig $(Kconfig)
  else
--------------------------------------------------
diff --cc security/apparmor/.gitignore
index 9cdec70,d5b291e..0000000
--- a/security/apparmor/.gitignore
+++ b/security/apparmor/.gitignore
@@@ -1,5 -1,6 +1,9 @@@
  #
  # Generated include files
  #
++<<<<<<< HEAD
++=======
+ net_names.h
++>>>>>>> tracking-ubuntu-sauce
  capability_names.h
  rlim_names.h
--------------------------------------------------
diff --cc security/security.c
index 8dcd4ae,48859be..0000000
--- a/security/security.c
+++ b/security/security.c
@@@ -136,12 -136,10 +136,18 @@@ int __init register_security(struct sec
  
  int security_ptrace_access_check(struct task_struct *child, unsigned int mode)
  {
++<<<<<<< HEAD
 +#ifdef CONFIG_SECURITY_YAMA_STACKED
++=======
++>>>>>>> tracking-ubuntu-sauce
  	int rc;
  	rc = yama_ptrace_access_check(child, mode);
  	if (rc)
  		return rc;
++<<<<<<< HEAD
 +#endif
++=======
++>>>>>>> tracking-ubuntu-sauce
  	return security_ops->ptrace_access_check(child, mode);
  }
  
@@@ -445,8 -445,9 +459,9 @@@ int security_path_chmod(struct path *pa
  		return 0;
  	return security_ops->path_chmod(path, mode);
  }
+ EXPORT_SYMBOL(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)
  {
  	if (unlikely(IS_PRIVATE(path->dentry->d_inode)))
  		return 0;
@@@ -779,9 -783,7 +803,13 @@@ int security_task_create(unsigned long 
  
  void security_task_free(struct task_struct *task)
  {
++<<<<<<< HEAD
 +#ifdef CONFIG_SECURITY_YAMA_STACKED
  	yama_task_free(task);
 +#endif
++=======
++	yama_task_free(task);
++>>>>>>> tracking-ubuntu-sauce
  	security_ops->task_free(task);
  }
  
@@@ -897,12 -899,10 +925,18 @@@ int security_task_wait(struct task_stru
  int security_task_prctl(int option, unsigned long arg2, unsigned long arg3,
  			 unsigned long arg4, unsigned long arg5)
  {
++<<<<<<< HEAD
 +#ifdef CONFIG_SECURITY_YAMA_STACKED
++=======
++>>>>>>> tracking-ubuntu-sauce
  	int rc;
  	rc = yama_task_prctl(option, arg2, arg3, arg4, arg5);
  	if (rc != -ENOSYS)
  		return rc;
++<<<<<<< HEAD
 +#endif
++=======
++>>>>>>> tracking-ubuntu-sauce
  	return security_ops->task_prctl(option, arg2, arg3, arg4, arg5);
  }
  
--------------------------------------------------
diff --cc security/yama/yama_lsm.c
index b4c2984,8694b0e..0000000
--- a/security/yama/yama_lsm.c
+++ b/security/yama/yama_lsm.c
@@@ -288,52 -296,117 +293,166 @@@ int yama_ptrace_access_check(struct tas
  }
  
  /**
++<<<<<<< HEAD
 + * yama_ptrace_traceme - validate PTRACE_TRACEME calls
 + * @parent: task that will become the ptracer of the current task
 + *
 + * Returns 0 if following the ptrace is allowed, -ve on error.
 + */
 +int yama_ptrace_traceme(struct task_struct *parent)
 +{
 +	int rc;
 +
 +	/* If standard caps disallows it, so does Yama.  We should
 +	 * only tighten restrictions further.
 +	 */
 +	rc = cap_ptrace_traceme(parent);
 +	if (rc)
 +		return rc;
 +
 +	/* Only disallow PTRACE_TRACEME on more aggressive settings. */
 +	switch (ptrace_scope) {
 +	case YAMA_SCOPE_CAPABILITY:
 +		if (!ns_capable(task_user_ns(parent), CAP_SYS_PTRACE))
 +			rc = -EPERM;
 +		break;
 +	case YAMA_SCOPE_NO_ATTACH:
 +		rc = -EPERM;
 +		break;
 +	}
 +
 +	if (rc) {
 +		printk_ratelimited(KERN_NOTICE
 +			"ptraceme of pid %d was attempted by: %s (pid %d)\n",
 +			current->pid, parent->comm, parent->pid);
 +	}
 +
 +	return rc;
 +}
 +
 +#ifndef CONFIG_SECURITY_YAMA_STACKED
 +static struct security_operations yama_ops = {
 +	.name =			"yama",
 +
 +	.ptrace_access_check =	yama_ptrace_access_check,
 +	.ptrace_traceme =	yama_ptrace_traceme,
 +	.task_prctl =		yama_task_prctl,
 +	.task_free =		yama_task_free,
 +};
 +#endif
++=======
+  * yama_inode_follow_link - check for symlinks in sticky world-writeable dirs
+  * @dentry: The inode/dentry of the symlink
+  * @nameidata: The path data of the symlink
+  *
+  * In the case of the protected_sticky_symlinks sysctl being enabled,
+  * CAP_DAC_OVERRIDE needs to be specifically ignored if the symlink is
+  * in a sticky world-writable directory.  This is to protect privileged
+  * processes from failing races against path names that may change out
+  * from under them by way of other users creating malicious symlinks.
+  * It will permit symlinks to only be followed when outside a sticky
+  * world-writable directory, or when the uid of the symlink and follower
+  * match, or when the directory owner matches the symlink's owner.
+  *
+  * Returns 0 if following the symlink is allowed, -ve on error.
+  */
+ int yama_inode_follow_link(struct dentry *dentry,
+ 				  struct nameidata *nameidata)
+ {
+ 	int rc = 0;
+ 	const struct inode *parent;
+ 	const struct inode *inode;
+ 	const struct cred *cred;
+ 
+ 	if (!protected_sticky_symlinks)
+ 		return 0;
+ 
+ 	/* if inode isn't a symlink, don't try to evaluate blocking it */
+ 	inode = dentry->d_inode;
+ 	if (!S_ISLNK(inode->i_mode))
+ 		return 0;
+ 
+ 	/* owner and follower match? */
+ 	cred = current_cred();
+ 	if (cred->fsuid == inode->i_uid)
+ 		return 0;
+ 
+ 	/* check parent directory mode and owner */
+ 	spin_lock(&dentry->d_lock);
+ 	parent = dentry->d_parent->d_inode;
+ 	if ((parent->i_mode & (S_ISVTX|S_IWOTH)) == (S_ISVTX|S_IWOTH) &&
+ 	    parent->i_uid != inode->i_uid) {
+ 		rc = -EACCES;
+ 	}
+ 	spin_unlock(&dentry->d_lock);
+ 
+ 	if (rc) {
+ 		char name[sizeof(current->comm)];
+ 		printk_ratelimited(KERN_NOTICE "non-matching-uid symlink "
+ 			"following attempted in sticky world-writable "
+ 			"directory by %s (fsuid %d != %d)\n",
+ 			get_task_comm(name, current),
+ 			cred->fsuid, inode->i_uid);
+ 	}
+ 
+ 	return rc;
+ }
+ 
+ static int yama_generic_permission(struct inode *inode, int mask)
+ {
+ 	int retval;
+ 
+ 	if (inode->i_op->permission)
+ 		retval = inode->i_op->permission(inode, mask);
+ 	else
+ 		retval = generic_permission(inode, mask);
+ 	return retval;
+ }
+ 
+ /**
+  * yama_path_link - verify that hardlinking is allowed
+  * @old_dentry: the source inode/dentry to hardlink from
+  * @new_dir: target directory
+  * @new_dentry: the target inode/dentry to hardlink to
+  *
+  * Block hardlink when all of:
+  *  - fsuid does not match inode
+  *  - not CAP_FOWNER
+  *  - and at least one of:
+  *    - inode is not a regular file
+  *    - inode is setuid
+  *    - inode is setgid and group-exec
+  *    - access failure for read and write
+  *
+  * Returns 0 if successful, -ve on error.
+  */
+ int yama_path_link(struct dentry *old_dentry, struct path *new_dir,
+ 			  struct dentry *new_dentry)
+ {
+ 	int rc = 0;
+ 	struct inode *inode = old_dentry->d_inode;
+ 	const int mode = inode->i_mode;
+ 	const struct cred *cred = current_cred();
+ 
+ 	if (!protected_nonaccess_hardlinks)
+ 		return 0;
+ 
+ 	if (cred->fsuid != inode->i_uid &&
+ 	    (!S_ISREG(mode) || (mode & S_ISUID) ||
+ 	     ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) ||
+ 	     (yama_generic_permission(inode, MAY_READ | MAY_WRITE))) &&
+ 	    !capable(CAP_FOWNER)) {
+ 		char name[sizeof(current->comm)];
+ 		printk_ratelimited(KERN_NOTICE "non-accessible hardlink"
+ 			" creation was attempted by: %s (fsuid %d)\n",
+ 			get_task_comm(name, current),
+ 			cred->fsuid);
+ 		rc = -EPERM;
+ 	}
+ 
+ 	return rc;
+ }
++>>>>>>> tracking-ubuntu-sauce
  
  #ifdef CONFIG_SYSCTL
  static int yama_dointvec_minmax(struct ctl_table *table, int write,
@@@ -380,18 -471,8 +517,23 @@@ static struct ctl_table yama_sysctl_tab
  
  static __init int yama_init(void)
  {
++<<<<<<< HEAD
 +#ifndef CONFIG_SECURITY_YAMA_STACKED
 +	if (!security_module_enable(&yama_ops))
 +		return 0;
 +#endif
 +
 +	printk(KERN_INFO "Yama: becoming mindful.\n");
 +
 +#ifndef CONFIG_SECURITY_YAMA_STACKED
 +	if (register_security(&yama_ops))
 +		panic("Yama: kernel registration failed.\n");
 +#endif
 +
++=======
+ 	printk(KERN_INFO "Yama: becoming mindful.\n");
+ 
++>>>>>>> tracking-ubuntu-sauce
  #ifdef CONFIG_SYSCTL
  	if (!register_sysctl_paths(yama_sysctl_path, yama_sysctl_table))
  		panic("Yama: sysctl registration failed.\n");
--------------------------------------------------
* Unmerged path drivers/media/video/cpia2/cpia2_core.c
--------------------------------------------------
* Unmerged path drivers/media/video/cx18/cx18-av-firmware.c
--------------------------------------------------
* Unmerged path drivers/media/video/cx18/cx18-driver.c
--------------------------------------------------
* Unmerged path drivers/media/video/cx18/cx18-firmware.c
--------------------------------------------------
* Unmerged path drivers/media/video/cx231xx/cx231xx-417.c
--------------------------------------------------
* Unmerged path drivers/media/video/cx23885/cx23885-417.c
--------------------------------------------------
* Unmerged path drivers/media/video/cx25840/cx25840-firmware.c
--------------------------------------------------
* Unmerged path drivers/media/video/ivtv/ivtv-firmware.c
--------------------------------------------------
* Unmerged path drivers/media/video/pvrusb2/pvrusb2-devattr.c
