[kernel] r11016 - in dists/trunk/linux-2.6/debian/patches: bugfix/all series

Maximilian Attems maks at alioth.debian.org
Mon Mar 31 12:46:44 UTC 2008


Author: maks
Date: Mon Mar 31 12:46:43 2008
New Revision: 11016

Log:
update to 2.6.25-rc7-git6

no new conflicts.
upstream merged drm + sparse + various


Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.25-rc7-git6
      - copied, changed from r11011, /dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.25-rc7-git5
Removed:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.25-rc7-git5
Modified:
   dists/trunk/linux-2.6/debian/patches/series/1~experimental.1

Copied: dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.25-rc7-git6 (from r11011, /dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.25-rc7-git5)
==============================================================================
--- /dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.25-rc7-git5	(original)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/all/patch-2.6.25-rc7-git6	Mon Mar 31 12:46:43 2008
@@ -1009,6 +1009,125 @@
  
  	new_thread = &new->thread;
  	old_thread = &current->thread;
+diff --git a/arch/powerpc/oprofile/cell/vma_map.c b/arch/powerpc/oprofile/cell/vma_map.c
+index 76ec1d1..9a93217 100644
+--- a/arch/powerpc/oprofile/cell/vma_map.c
++++ b/arch/powerpc/oprofile/cell/vma_map.c
+@@ -92,7 +92,7 @@ vma_map_add(struct vma_to_fileoffset_map *map, unsigned int vma,
+  * A pointer to the first vma_map in the generated list
+  * of vma_maps is returned.  */
+ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu,
+-					     unsigned long spu_elf_start)
++					     unsigned long __spu_elf_start)
+ {
+ 	static const unsigned char expected[EI_PAD] = {
+ 		[EI_MAG0] = ELFMAG0,
+@@ -107,9 +107,11 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu,
+ 
+ 	int grd_val;
+ 	struct vma_to_fileoffset_map *map = NULL;
++	void __user *spu_elf_start = (void __user *)__spu_elf_start;
+ 	struct spu_overlay_info ovly;
+ 	unsigned int overlay_tbl_offset = -1;
+-	unsigned long phdr_start, shdr_start;
++	Elf32_Phdr __user *phdr_start;
++	Elf32_Shdr __user *shdr_start;
+ 	Elf32_Ehdr ehdr;
+ 	Elf32_Phdr phdr;
+ 	Elf32_Shdr shdr, shdr_str;
+@@ -121,12 +123,12 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu,
+ 	unsigned int ovly_buf_table_sym = 0;
+ 	unsigned int ovly_table_end_sym = 0;
+ 	unsigned int ovly_buf_table_end_sym = 0;
+-	unsigned long ovly_table;
++	struct spu_overlay_info __user *ovly_table;
+ 	unsigned int n_ovlys;
+ 
+ 	/* Get and validate ELF header.	 */
+ 
+-	if (copy_from_user(&ehdr, (void *) spu_elf_start, sizeof (ehdr)))
++	if (copy_from_user(&ehdr, spu_elf_start, sizeof (ehdr)))
+ 		goto fail;
+ 
+ 	if (memcmp(ehdr.e_ident, expected, EI_PAD) != 0) {
+@@ -152,9 +154,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu,
+ 
+ 	/* Traverse program headers.  */
+ 	for (i = 0; i < ehdr.e_phnum; i++) {
+-		if (copy_from_user(&phdr,
+-				   (void *) (phdr_start + i * sizeof(phdr)),
+-				   sizeof(phdr)))
++		if (copy_from_user(&phdr, phdr_start + i, sizeof(phdr)))
+ 			goto fail;
+ 
+ 		if (phdr.p_type != PT_LOAD)
+@@ -171,9 +171,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu,
+ 	pr_debug("SPU_PROF: Created non-overlay maps\n");
+ 	/* Traverse section table and search for overlay-related symbols.  */
+ 	for (i = 0; i < ehdr.e_shnum; i++) {
+-		if (copy_from_user(&shdr,
+-				   (void *) (shdr_start + i * sizeof(shdr)),
+-				   sizeof(shdr)))
++		if (copy_from_user(&shdr, shdr_start + i, sizeof(shdr)))
+ 			goto fail;
+ 
+ 		if (shdr.sh_type != SHT_SYMTAB)
+@@ -182,8 +180,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu,
+ 			continue;
+ 
+ 		if (copy_from_user(&shdr_str,
+-				   (void *) (shdr_start + shdr.sh_link *
+-					     sizeof(shdr)),
++				   shdr_start + shdr.sh_link,
+ 				   sizeof(shdr)))
+ 			goto fail;
+ 
+@@ -191,15 +188,15 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu,
+ 			goto fail;;
+ 
+ 		for (j = 0; j < shdr.sh_size / sizeof (sym); j++) {
+-			if (copy_from_user(&sym, (void *) (spu_elf_start +
+-						       shdr.sh_offset + j *
+-							   sizeof (sym)),
++			if (copy_from_user(&sym, spu_elf_start +
++						 shdr.sh_offset +
++						 j * sizeof (sym),
+ 					   sizeof (sym)))
+ 				goto fail;
+ 
+-			if (copy_from_user(name, (void *)
+-					   (spu_elf_start + shdr_str.sh_offset +
+-					    sym.st_name),
++			if (copy_from_user(name, 
++					   spu_elf_start + shdr_str.sh_offset +
++					   sym.st_name,
+ 					   20))
+ 				goto fail;
+ 
+@@ -245,9 +242,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu,
+ 
+ 	/* Traverse overlay table.  */
+ 	for (i = 0; i < n_ovlys; i++) {
+-		if (copy_from_user(&ovly, (void *)
+-				   (ovly_table + i * sizeof (ovly)),
+-				   sizeof (ovly)))
++		if (copy_from_user(&ovly, ovly_table + i, sizeof (ovly)))
+ 			goto fail;
+ 
+ 		/* The ovly.vma/size/offset arguments are analogous to the same
+diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c
+index ca52b58..a977f20 100644
+--- a/arch/powerpc/platforms/pseries/xics.c
++++ b/arch/powerpc/platforms/pseries/xics.c
+@@ -763,7 +763,7 @@ void xics_request_IPIs(void)
+ }
+ #endif /* CONFIG_SMP */
+ 
+-void xics_teardown_cpu()
++void xics_teardown_cpu(void)
+ {
+ 	int cpu = smp_processor_id();
+ 
 diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
 index 250958d..9d4bd22 100644
 --- a/arch/sparc64/defconfig
@@ -3249,6 +3368,49 @@
  
  		cid_list = acpi_dev->pnp.cid_list;
  		for (i = 0; i < cid_list->count; i++) {
+diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
+index c4248b3..4851988 100644
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -972,7 +972,7 @@ static void ata_dev_disable_pm(struct ata_device *dev)
+ void ata_lpm_schedule(struct ata_port *ap, enum link_pm policy)
+ {
+ 	ap->pm_policy = policy;
+-	ap->link.eh_info.action |= ATA_EHI_LPM;
++	ap->link.eh_info.action |= ATA_EH_LPM;
+ 	ap->link.eh_info.flags |= ATA_EHI_NO_AUTOPSY;
+ 	ata_port_schedule_eh(ap);
+ }
+diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
+index 681252f..a583032 100644
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -2748,7 +2748,7 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset,
+ 			ehc->i.flags &= ~ATA_EHI_SETMODE;
+ 		}
+ 
+-		if (ehc->i.action & ATA_EHI_LPM)
++		if (ehc->i.action & ATA_EH_LPM)
+ 			ata_link_for_each_dev(dev, link)
+ 				ata_dev_enable_pm(dev, ap->pm_policy);
+ 
+diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c
+index 503245a..3988e44 100644
+--- a/drivers/ata/pata_sil680.c
++++ b/drivers/ata/pata_sil680.c
+@@ -269,7 +269,11 @@ static u8 sil680_init_chip(struct pci_dev *pdev, int *try_mmio)
+ 	dev_dbg(&pdev->dev, "sil680: BA5_EN = %d clock = %02X\n",
+ 		tmpbyte & 1, tmpbyte & 0x30);
+ 
+-	*try_mmio = (tmpbyte & 1) || pci_resource_start(pdev, 5);
++	*try_mmio = 0;
++#ifdef CONFIG_PPC
++	if (machine_is(cell))
++		*try_mmio = (tmpbyte & 1) || pci_resource_start(pdev, 5);
++#endif
+ 
+ 	switch(tmpbyte & 0x30) {
+ 		case 0x00:
 diff --git a/drivers/base/driver.c b/drivers/base/driver.c
 index bf31a01..9a6537f 100644
 --- a/drivers/base/driver.c
@@ -3273,7 +3435,7 @@
  EXPORT_SYMBOL_GPL(driver_add_kobj);
  
 diff --git a/drivers/char/drm/ati_pcigart.c b/drivers/char/drm/ati_pcigart.c
-index e5a0e97..35d25d8 100644
+index e5a0e97..141f4df 100644
 --- a/drivers/char/drm/ati_pcigart.c
 +++ b/drivers/char/drm/ati_pcigart.c
 @@ -122,8 +122,9 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
@@ -3288,6 +3450,352 @@
  	}
  
  	pci_gart = (u32 *) address;
+@@ -167,6 +168,12 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
+ 		}
+ 	}
+ 
++	if (gart_info->gart_table_location == DRM_ATI_GART_MAIN)
++		dma_sync_single_for_device(&dev->pdev->dev,
++					   bus_address,
++					   max_pages * sizeof(u32),
++					   PCI_DMA_TODEVICE);
++
+ 	ret = 1;
+ 
+ #if defined(__i386__) || defined(__x86_64__)
+diff --git a/drivers/char/drm/drm_scatter.c b/drivers/char/drm/drm_scatter.c
+index 26d8f67..b2b0f3d 100644
+--- a/drivers/char/drm/drm_scatter.c
++++ b/drivers/char/drm/drm_scatter.c
+@@ -36,6 +36,15 @@
+ 
+ #define DEBUG_SCATTER 0
+ 
++static inline void *drm_vmalloc_dma(unsigned long size)
++{
++#if defined(__powerpc__) && defined(CONFIG_NOT_COHERENT_CACHE)
++	return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL | _PAGE_NO_CACHE);
++#else
++	return vmalloc_32(size);
++#endif
++}
++
+ void drm_sg_cleanup(struct drm_sg_mem * entry)
+ {
+ 	struct page *page;
+@@ -104,7 +113,7 @@ int drm_sg_alloc(struct drm_device *dev, struct drm_scatter_gather * request)
+ 	}
+ 	memset((void *)entry->busaddr, 0, pages * sizeof(*entry->busaddr));
+ 
+-	entry->virtual = vmalloc_32(pages << PAGE_SHIFT);
++	entry->virtual = drm_vmalloc_dma(pages << PAGE_SHIFT);
+ 	if (!entry->virtual) {
+ 		drm_free(entry->busaddr,
+ 			 entry->pages * sizeof(*entry->busaddr), DRM_MEM_PAGES);
+diff --git a/drivers/char/drm/drm_vm.c b/drivers/char/drm/drm_vm.c
+index 3d65c4d..945df72 100644
+--- a/drivers/char/drm/drm_vm.c
++++ b/drivers/char/drm/drm_vm.c
+@@ -54,13 +54,24 @@ static pgprot_t drm_io_prot(uint32_t map_type, struct vm_area_struct *vma)
+ 	pgprot_val(tmp) |= _PAGE_NO_CACHE;
+ 	if (map_type == _DRM_REGISTERS)
+ 		pgprot_val(tmp) |= _PAGE_GUARDED;
+-#endif
+-#if defined(__ia64__)
++#elif defined(__ia64__)
+ 	if (efi_range_is_wc(vma->vm_start, vma->vm_end -
+ 				    vma->vm_start))
+ 		tmp = pgprot_writecombine(tmp);
+ 	else
+ 		tmp = pgprot_noncached(tmp);
++#elif defined(__sparc__)
++	tmp = pgprot_noncached(tmp);
++#endif
++	return tmp;
++}
++
++static pgprot_t drm_dma_prot(uint32_t map_type, struct vm_area_struct *vma)
++{
++	pgprot_t tmp = vm_get_page_prot(vma->vm_flags);
++
++#if defined(__powerpc__) && defined(CONFIG_NOT_COHERENT_CACHE)
++	tmp |= _PAGE_NO_CACHE;
+ #endif
+ 	return tmp;
+ }
+@@ -603,9 +614,6 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
+ 		offset = dev->driver->get_reg_ofs(dev);
+ 		vma->vm_flags |= VM_IO;	/* not in core dump */
+ 		vma->vm_page_prot = drm_io_prot(map->type, vma);
+-#ifdef __sparc__
+-		vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+-#endif
+ 		if (io_remap_pfn_range(vma, vma->vm_start,
+ 				       (map->offset + offset) >> PAGE_SHIFT,
+ 				       vma->vm_end - vma->vm_start,
+@@ -624,6 +632,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
+ 		    page_to_pfn(virt_to_page(map->handle)),
+ 		    vma->vm_end - vma->vm_start, vma->vm_page_prot))
+ 			return -EAGAIN;
++		vma->vm_page_prot = drm_dma_prot(map->type, vma);
+ 	/* fall through to _DRM_SHM */
+ 	case _DRM_SHM:
+ 		vma->vm_ops = &drm_vm_shm_ops;
+@@ -631,6 +640,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
+ 		/* Don't let this area swap.  Change when
+ 		   DRM_KERNEL advisory is supported. */
+ 		vma->vm_flags |= VM_RESERVED;
++		vma->vm_page_prot = drm_dma_prot(map->type, vma);
+ 		break;
+ 	case _DRM_SCATTER_GATHER:
+ 		vma->vm_ops = &drm_vm_sg_ops;
+diff --git a/drivers/char/drm/i915_dma.c b/drivers/char/drm/i915_dma.c
+index e9d6663..a043bb1 100644
+--- a/drivers/char/drm/i915_dma.c
++++ b/drivers/char/drm/i915_dma.c
+@@ -804,6 +804,9 @@ void i915_driver_lastclose(struct drm_device * dev)
+ {
+ 	drm_i915_private_t *dev_priv = dev->dev_private;
+ 
++	if (!dev_priv)
++		return;
++
+ 	if (dev_priv->agp_heap)
+ 		i915_mem_takedown(&(dev_priv->agp_heap));
+ 
+diff --git a/drivers/char/drm/r300_cmdbuf.c b/drivers/char/drm/r300_cmdbuf.c
+index 0f4afc4..f535812 100644
+--- a/drivers/char/drm/r300_cmdbuf.c
++++ b/drivers/char/drm/r300_cmdbuf.c
+@@ -729,6 +729,47 @@ static void r300_discard_buffer(struct drm_device * dev, struct drm_buf * buf)
+ 	buf->used = 0;
+ }
+ 
++static void r300_cmd_wait(drm_radeon_private_t * dev_priv,
++			  drm_r300_cmd_header_t header)
++{
++	u32 wait_until;
++	RING_LOCALS;
++
++	if (!header.wait.flags)
++		return;
++
++	wait_until = 0;
++
++	switch(header.wait.flags) {
++	case R300_WAIT_2D:
++		wait_until = RADEON_WAIT_2D_IDLE;
++		break;
++	case R300_WAIT_3D:
++		wait_until = RADEON_WAIT_3D_IDLE;
++		break;
++	case R300_NEW_WAIT_2D_3D:
++		wait_until = RADEON_WAIT_2D_IDLE|RADEON_WAIT_3D_IDLE;
++		break;
++	case R300_NEW_WAIT_2D_2D_CLEAN:
++		wait_until = RADEON_WAIT_2D_IDLE|RADEON_WAIT_2D_IDLECLEAN;
++		break;
++	case R300_NEW_WAIT_3D_3D_CLEAN:
++		wait_until = RADEON_WAIT_3D_IDLE|RADEON_WAIT_3D_IDLECLEAN;
++		break;
++	case R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN:
++		wait_until = RADEON_WAIT_2D_IDLE|RADEON_WAIT_2D_IDLECLEAN;
++		wait_until |= RADEON_WAIT_3D_IDLE|RADEON_WAIT_3D_IDLECLEAN;
++		break;
++	default:
++		return;
++	}
++
++	BEGIN_RING(2);
++	OUT_RING(CP_PACKET0(RADEON_WAIT_UNTIL, 0));
++	OUT_RING(wait_until);
++	ADVANCE_RING();
++}
++
+ static int r300_scratch(drm_radeon_private_t *dev_priv,
+ 			drm_radeon_kcmd_buffer_t *cmdbuf,
+ 			drm_r300_cmd_header_t header)
+@@ -909,19 +950,8 @@ int r300_do_cp_cmdbuf(struct drm_device *dev,
+ 			break;
+ 
+ 		case R300_CMD_WAIT:
+-			/* simple enough, we can do it here */
+ 			DRM_DEBUG("R300_CMD_WAIT\n");
+-			if (header.wait.flags == 0)
+-				break;	/* nothing to do */
+-
+-			{
+-				RING_LOCALS;
+-
+-				BEGIN_RING(2);
+-				OUT_RING(CP_PACKET0(RADEON_WAIT_UNTIL, 0));
+-				OUT_RING((header.wait.flags & 0xf) << 14);
+-				ADVANCE_RING();
+-			}
++			r300_cmd_wait(dev_priv, header);
+ 			break;
+ 
+ 		case R300_CMD_SCRATCH:
+diff --git a/drivers/char/drm/radeon_drm.h b/drivers/char/drm/radeon_drm.h
+index 71e5b21..aab82e1 100644
+--- a/drivers/char/drm/radeon_drm.h
++++ b/drivers/char/drm/radeon_drm.h
+@@ -225,8 +225,20 @@ typedef union {
+ #define R300_CMD_WAIT			7
+ #	define R300_WAIT_2D		0x1
+ #	define R300_WAIT_3D		0x2
++/* these two defines are DOING IT WRONG - however
++ * we have userspace which relies on using these.
++ * The wait interface is backwards compat new 
++ * code should use the NEW_WAIT defines below
++ * THESE ARE NOT BIT FIELDS
++ */
+ #	define R300_WAIT_2D_CLEAN	0x3
+ #	define R300_WAIT_3D_CLEAN	0x4
++
++#	define R300_NEW_WAIT_2D_3D	0x3
++#	define R300_NEW_WAIT_2D_2D_CLEAN	0x4
++#	define R300_NEW_WAIT_3D_3D_CLEAN	0x6
++#	define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN	0x8
++
+ #define R300_CMD_SCRATCH		8
+ 
+ typedef union {
+diff --git a/drivers/char/drm/radeon_mem.c b/drivers/char/drm/radeon_mem.c
+index 78b34fa..4af5286 100644
+--- a/drivers/char/drm/radeon_mem.c
++++ b/drivers/char/drm/radeon_mem.c
+@@ -88,7 +88,7 @@ static struct mem_block *alloc_block(struct mem_block *heap, int size,
+ 
+ 	list_for_each(p, heap) {
+ 		int start = (p->start + mask) & ~mask;
+-		if (p->file_priv == 0 && start + size <= p->start + p->size)
++		if (p->file_priv == NULL && start + size <= p->start + p->size)
+ 			return split_block(p, start, size, file_priv);
+ 	}
+ 
+@@ -113,7 +113,7 @@ static void free_block(struct mem_block *p)
+ 	/* Assumes a single contiguous range.  Needs a special file_priv in
+ 	 * 'heap' to stop it being subsumed.
+ 	 */
+-	if (p->next->file_priv == 0) {
++	if (p->next->file_priv == NULL) {
+ 		struct mem_block *q = p->next;
+ 		p->size += q->size;
+ 		p->next = q->next;
+@@ -121,7 +121,7 @@ static void free_block(struct mem_block *p)
+ 		drm_free(q, sizeof(*q), DRM_MEM_BUFS);
+ 	}
+ 
+-	if (p->prev->file_priv == 0) {
++	if (p->prev->file_priv == NULL) {
+ 		struct mem_block *q = p->prev;
+ 		q->size += p->size;
+ 		q->next = p->next;
+@@ -174,7 +174,7 @@ void radeon_mem_release(struct drm_file *file_priv, struct mem_block *heap)
+ 	 * 'heap' to stop it being subsumed.
+ 	 */
+ 	list_for_each(p, heap) {
+-		while (p->file_priv == 0 && p->next->file_priv == 0) {
++		while (p->file_priv == NULL && p->next->file_priv == NULL) {
+ 			struct mem_block *q = p->next;
+ 			p->size += q->size;
+ 			p->next = q->next;
+diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c
+index 46b2a1c..0c09409 100644
+--- a/drivers/char/n_tty.c
++++ b/drivers/char/n_tty.c
+@@ -1183,7 +1183,7 @@ static int copy_from_read_buf(struct tty_struct *tty,
+ 	return retval;
+ }
+ 
+-extern ssize_t redirected_tty_write(struct file *, const char *,
++extern ssize_t redirected_tty_write(struct file *, const char __user *,
+ 							size_t, loff_t *);
+ 
+ /**
+diff --git a/drivers/char/nozomi.c b/drivers/char/nozomi.c
+index 6d0dc5f..6a6843a 100644
+--- a/drivers/char/nozomi.c
++++ b/drivers/char/nozomi.c
+@@ -438,7 +438,7 @@ static void read_mem32(u32 *buf, const void __iomem *mem_addr_start,
+ 			u32 size_bytes)
+ {
+ 	u32 i = 0;
+-	const u32 *ptr = (__force u32 *) mem_addr_start;
++	const u32 __iomem *ptr = mem_addr_start;
+ 	u16 *buf16;
+ 
+ 	if (unlikely(!ptr || !buf))
+@@ -448,11 +448,11 @@ static void read_mem32(u32 *buf, const void __iomem *mem_addr_start,
+ 	switch (size_bytes) {
+ 	case 2:	/* 2 bytes */
+ 		buf16 = (u16 *) buf;
+-		*buf16 = __le16_to_cpu(readw((void __iomem *)ptr));
++		*buf16 = __le16_to_cpu(readw(ptr));
+ 		goto out;
+ 		break;
+ 	case 4:	/* 4 bytes */
+-		*(buf) = __le32_to_cpu(readl((void __iomem *)ptr));
++		*(buf) = __le32_to_cpu(readl(ptr));
+ 		goto out;
+ 		break;
+ 	}
+@@ -461,11 +461,11 @@ static void read_mem32(u32 *buf, const void __iomem *mem_addr_start,
+ 		if (size_bytes - i == 2) {
+ 			/* Handle 2 bytes in the end */
+ 			buf16 = (u16 *) buf;
+-			*(buf16) = __le16_to_cpu(readw((void __iomem *)ptr));
++			*(buf16) = __le16_to_cpu(readw(ptr));
+ 			i += 2;
+ 		} else {
+ 			/* Read 4 bytes */
+-			*(buf) = __le32_to_cpu(readl((void __iomem *)ptr));
++			*(buf) = __le32_to_cpu(readl(ptr));
+ 			i += 4;
+ 		}
+ 		buf++;
+@@ -484,7 +484,7 @@ static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf,
+ 			u32 size_bytes)
+ {
+ 	u32 i = 0;
+-	u32 *ptr = (__force u32 *) mem_addr_start;
++	u32 __iomem *ptr = mem_addr_start;
+ 	const u16 *buf16;
+ 
+ 	if (unlikely(!ptr || !buf))
+@@ -494,7 +494,7 @@ static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf,
+ 	switch (size_bytes) {
+ 	case 2:	/* 2 bytes */
+ 		buf16 = (const u16 *)buf;
+-		writew(__cpu_to_le16(*buf16), (void __iomem *)ptr);
++		writew(__cpu_to_le16(*buf16), ptr);
+ 		return 2;
+ 		break;
+ 	case 1: /*
+@@ -502,7 +502,7 @@ static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf,
+ 		 * so falling through..
+ 		 */
+ 	case 4: /* 4 bytes */
+-		writel(__cpu_to_le32(*buf), (void __iomem *)ptr);
++		writel(__cpu_to_le32(*buf), ptr);
+ 		return 4;
+ 		break;
+ 	}
+@@ -511,11 +511,11 @@ static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf,
+ 		if (size_bytes - i == 2) {
+ 			/* 2 bytes */
+ 			buf16 = (const u16 *)buf;
+-			writew(__cpu_to_le16(*buf16), (void __iomem *)ptr);
++			writew(__cpu_to_le16(*buf16), ptr);
+ 			i += 2;
+ 		} else {
+ 			/* 4 bytes */
+-			writel(__cpu_to_le32(*buf), (void __iomem *)ptr);
++			writel(__cpu_to_le32(*buf), ptr);
+ 			i += 4;
+ 		}
+ 		buf++;
 diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
 index d73663a..fc555a9 100644
 --- a/drivers/cpuidle/cpuidle.c
@@ -3338,6 +3846,368 @@
  define_show_state_str_function(name)
  define_show_state_str_function(desc)
  
+diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
+index 3110bf7..81f3f95 100644
+--- a/drivers/crypto/hifn_795x.c
++++ b/drivers/crypto/hifn_795x.c
+@@ -392,8 +392,8 @@ static atomic_t hifn_dev_number;
+ 
+ struct hifn_desc
+ {
+-	volatile u32		l;
+-	volatile u32		p;
++	volatile __le32		l;
++	volatile __le32		p;
+ };
+ 
+ struct hifn_dma {
+@@ -481,10 +481,10 @@ struct hifn_device
+ 
+ struct hifn_base_command
+ {
+-	volatile u16		masks;
+-	volatile u16		session_num;
+-	volatile u16		total_source_count;
+-	volatile u16		total_dest_count;
++	volatile __le16		masks;
++	volatile __le16		session_num;
++	volatile __le16		total_source_count;
++	volatile __le16		total_dest_count;
+ };
+ 
+ #define	HIFN_BASE_CMD_COMP		0x0100	/* enable compression engine */
+@@ -504,10 +504,10 @@ struct hifn_base_command
+  */
+ struct hifn_crypt_command
+ {
+-	volatile u16 		masks;
+-	volatile u16 		header_skip;
+-	volatile u16 		source_count;
+-	volatile u16 		reserved;
++	volatile __le16 		masks;
++	volatile __le16 		header_skip;
++	volatile __le16 		source_count;
++	volatile __le16 		reserved;
+ };
+ 
+ #define	HIFN_CRYPT_CMD_ALG_MASK		0x0003		/* algorithm: */
+@@ -670,7 +670,7 @@ static inline u32 hifn_read_0(struct hifn_device *dev, u32 reg)
+ {
+ 	u32 ret;
+ 
+-	ret = readl((char *)(dev->bar[0]) + reg);
++	ret = readl(dev->bar[0] + reg);
+ 
+ 	return ret;
+ }
+@@ -679,19 +679,19 @@ static inline u32 hifn_read_1(struct hifn_device *dev, u32 reg)
+ {
+ 	u32 ret;
+ 
+-	ret = readl((char *)(dev->bar[1]) + reg);
++	ret = readl(dev->bar[1] + reg);
+ 
+ 	return ret;
+ }
+ 
+ static inline void hifn_write_0(struct hifn_device *dev, u32 reg, u32 val)
+ {
+-	writel(val, (char *)(dev->bar[0]) + reg);
++	writel(val, dev->bar[0] + reg);
+ }
+ 
+ static inline void hifn_write_1(struct hifn_device *dev, u32 reg, u32 val)
+ {
+-	writel(val, (char *)(dev->bar[1]) + reg);
++	writel(val, dev->bar[1] + reg);
+ }
+ 
+ static void hifn_wait_puc(struct hifn_device *dev)
+diff --git a/drivers/dma/fsldma.h b/drivers/dma/fsldma.h
+index fddd6ae..6faf07b 100644
+--- a/drivers/dma/fsldma.h
++++ b/drivers/dma/fsldma.h
+@@ -75,12 +75,15 @@
+ #define FSL_DMA_DGSR_EOSI	0x02
+ #define FSL_DMA_DGSR_EOLSI	0x01
+ 
++typedef u64 __bitwise v64;
++typedef u32 __bitwise v32;
++
+ struct fsl_dma_ld_hw {
+-	u64 __bitwise	src_addr;
+-	u64 __bitwise	dst_addr;
+-	u64 __bitwise	next_ln_addr;
+-	u32 __bitwise	count;
+-	u32 __bitwise	reserve;
++	v64 src_addr;
++	v64 dst_addr;
++	v64 next_ln_addr;
++	v32 count;
++	v32 reserve;
+ } __attribute__((aligned(32)));
+ 
+ struct fsl_desc_sw {
+@@ -92,13 +95,13 @@ struct fsl_desc_sw {
+ } __attribute__((aligned(32)));
+ 
+ struct fsl_dma_chan_regs {
+-	u32 __bitwise	mr;	/* 0x00 - Mode Register */
+-	u32 __bitwise	sr;	/* 0x04 - Status Register */
+-	u64 __bitwise	cdar;	/* 0x08 - Current descriptor address register */
+-	u64 __bitwise	sar;	/* 0x10 - Source Address Register */
+-	u64 __bitwise	dar;	/* 0x18 - Destination Address Register */
+-	u32 __bitwise	bcr;	/* 0x20 - Byte Count Register */
+-	u64 __bitwise	ndar;	/* 0x24 - Next Descriptor Address Register */
++	u32 mr;	/* 0x00 - Mode Register */
++	u32 sr;	/* 0x04 - Status Register */
++	u64 cdar;	/* 0x08 - Current descriptor address register */
++	u64 sar;	/* 0x10 - Source Address Register */
++	u64 dar;	/* 0x18 - Destination Address Register */
++	u32 bcr;	/* 0x20 - Byte Count Register */
++	u64 ndar;	/* 0x24 - Next Descriptor Address Register */
+ };
+ 
+ struct fsl_dma_chan;
+@@ -151,25 +154,27 @@ struct fsl_dma_chan {
+ #ifndef __powerpc64__
+ static u64 in_be64(const u64 __iomem *addr)
+ {
+-	return ((u64)in_be32((u32 *)addr) << 32) | (in_be32((u32 *)addr + 1));
++	return ((u64)in_be32((u32 __iomem *)addr) << 32) |
++		(in_be32((u32 __iomem *)addr + 1));
+ }
+ 
+ static void out_be64(u64 __iomem *addr, u64 val)
+ {
+-	out_be32((u32 *)addr, val >> 32);
+-	out_be32((u32 *)addr + 1, (u32)val);
++	out_be32((u32 __iomem *)addr, val >> 32);
++	out_be32((u32 __iomem *)addr + 1, (u32)val);
+ }
+ 
+ /* There is no asm instructions for 64 bits reverse loads and stores */
+ static u64 in_le64(const u64 __iomem *addr)
+ {
+-	return ((u64)in_le32((u32 *)addr + 1) << 32) | (in_le32((u32 *)addr));
++	return ((u64)in_le32((u32 __iomem *)addr + 1) << 32) |
++		(in_le32((u32 __iomem *)addr));
+ }
+ 
+ static void out_le64(u64 __iomem *addr, u64 val)
+ {
+-	out_le32((u32 *)addr + 1, val >> 32);
+-	out_le32((u32 *)addr, (u32)val);
++	out_le32((u32 __iomem *)addr + 1, val >> 32);
++	out_le32((u32 __iomem *)addr, (u32)val);
+ }
+ #endif
+ 
+@@ -182,9 +187,11 @@ static void out_le64(u64 __iomem *addr, u64 val)
+ 
+ #define DMA_TO_CPU(fsl_chan, d, width)					\
+ 		(((fsl_chan)->feature & FSL_DMA_BIG_ENDIAN) ?		\
+-			be##width##_to_cpu(d) :	le##width##_to_cpu(d))
++			be##width##_to_cpu((__force __be##width)(v##width)d) : \
++			le##width##_to_cpu((__force __le##width)(v##width)d))
+ #define CPU_TO_DMA(fsl_chan, c, width)					\
+ 		(((fsl_chan)->feature & FSL_DMA_BIG_ENDIAN) ?		\
+-			cpu_to_be##width(c) : cpu_to_le##width(c))
++			(__force v##width)cpu_to_be##width(c) :		\
++			(__force v##width)cpu_to_le##width(c))
+ 
+ #endif	/* __DMA_FSLDMA_H */
+diff --git a/drivers/dma/ioat_dca.c b/drivers/dma/ioat_dca.c
+index 0fa8a98..9e92276 100644
+--- a/drivers/dma/ioat_dca.c
++++ b/drivers/dma/ioat_dca.c
+@@ -98,7 +98,7 @@ struct ioat_dca_slot {
+ 
+ struct ioat_dca_priv {
+ 	void __iomem		*iobase;
+-	void			*dca_base;
++	void __iomem		*dca_base;
+ 	int			 max_requesters;
+ 	int			 requester_count;
+ 	u8			 tag_map[IOAT_TAG_MAP_LEN];
+@@ -338,7 +338,7 @@ static struct dca_ops ioat2_dca_ops = {
+ 	.get_tag		= ioat2_dca_get_tag,
+ };
+ 
+-static int ioat2_dca_count_dca_slots(void *iobase, u16 dca_offset)
++static int ioat2_dca_count_dca_slots(void __iomem *iobase, u16 dca_offset)
+ {
+ 	int slots = 0;
+ 	u32 req;
+diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
+index c419266..01b9220 100644
+--- a/drivers/ide/ide-iops.c
++++ b/drivers/ide/ide-iops.c
+@@ -595,6 +595,7 @@ u8 eighty_ninty_three (ide_drive_t *drive)
+ 
+ 	/*
+ 	 * FIXME:
++	 * - change master/slave IDENTIFY order
+ 	 * - force bit13 (80c cable present) check also for !ivb devices
+ 	 *   (unless the slave device is pre-ATA3)
+ 	 */
+diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
+index 194ecb0..47a1149 100644
+--- a/drivers/ide/ide-probe.c
++++ b/drivers/ide/ide-probe.c
+@@ -774,9 +774,10 @@ static int ide_probe_port(ide_hwif_t *hwif)
+ 		printk(KERN_DEBUG "%s: Wait for ready failed before probe !\n", hwif->name);
+ 
+ 	/*
+-	 * Need to probe slave device first to make it release PDIAG-.
++	 * Second drive should only exist if first drive was found,
++	 * but a lot of cdrom drives are configured as single slaves.
+ 	 */
+-	for (unit = MAX_DRIVES - 1; unit >= 0; unit--) {
++	for (unit = 0; unit < MAX_DRIVES; ++unit) {
+ 		ide_drive_t *drive = &hwif->drives[unit];
+ 		drive->dn = (hwif->channel ? 2 : 0) + unit;
+ 		(void) probe_for_drive(drive);
+diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
+index a58ad8a..781ea59 100644
+--- a/drivers/infiniband/core/addr.c
++++ b/drivers/infiniband/core/addr.c
+@@ -154,7 +154,7 @@ static void addr_send_arp(struct sockaddr_in *dst_in)
+ {
+ 	struct rtable *rt;
+ 	struct flowi fl;
+-	u32 dst_ip = dst_in->sin_addr.s_addr;
++	__be32 dst_ip = dst_in->sin_addr.s_addr;
+ 
+ 	memset(&fl, 0, sizeof fl);
+ 	fl.nl_u.ip4_u.daddr = dst_ip;
+@@ -169,8 +169,8 @@ static int addr_resolve_remote(struct sockaddr_in *src_in,
+ 			       struct sockaddr_in *dst_in,
+ 			       struct rdma_dev_addr *addr)
+ {
+-	u32 src_ip = src_in->sin_addr.s_addr;
+-	u32 dst_ip = dst_in->sin_addr.s_addr;
++	__be32 src_ip = src_in->sin_addr.s_addr;
++	__be32 dst_ip = dst_in->sin_addr.s_addr;
+ 	struct flowi fl;
+ 	struct rtable *rt;
+ 	struct neighbour *neigh;
+@@ -257,7 +257,7 @@ static int addr_resolve_local(struct sockaddr_in *src_in,
+ 			      struct rdma_dev_addr *addr)
+ {
+ 	struct net_device *dev;
+-	u32 src_ip = src_in->sin_addr.s_addr;
++	__be32 src_ip = src_in->sin_addr.s_addr;
+ 	__be32 dst_ip = dst_in->sin_addr.s_addr;
+ 	int ret;
+ 
+diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
+index 4df4051..faa7ce3 100644
+--- a/drivers/infiniband/core/cm.c
++++ b/drivers/infiniband/core/cm.c
+@@ -393,7 +393,7 @@ static int cm_alloc_id(struct cm_id_private *cm_id_priv)
+ 		spin_unlock_irqrestore(&cm.lock, flags);
+ 	} while( (ret == -EAGAIN) && idr_pre_get(&cm.local_id_table, GFP_KERNEL) );
+ 
+-	cm_id_priv->id.local_id = (__force __be32) (id ^ cm.random_id_operand);
++	cm_id_priv->id.local_id = (__force __be32)id ^ cm.random_id_operand;
+ 	return ret;
+ }
+ 
+diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
+index 34507da..d81c156 100644
+--- a/drivers/infiniband/core/cma.c
++++ b/drivers/infiniband/core/cma.c
+@@ -168,15 +168,15 @@ struct cma_work {
+ union cma_ip_addr {
+ 	struct in6_addr ip6;
+ 	struct {
+-		__u32 pad[3];
+-		__u32 addr;
++		__be32 pad[3];
++		__be32 addr;
+ 	} ip4;
+ };
+ 
+ struct cma_hdr {
+ 	u8 cma_version;
+ 	u8 ip_version;	/* IP version: 7:4 */
+-	__u16 port;
++	__be16 port;
+ 	union cma_ip_addr src_addr;
+ 	union cma_ip_addr dst_addr;
+ };
+@@ -186,8 +186,8 @@ struct sdp_hh {
+ 	u8 sdp_version; /* Major version: 7:4 */
+ 	u8 ip_version;	/* IP version: 7:4 */
+ 	u8 sdp_specific1[10];
+-	__u16 port;
+-	__u16 sdp_specific2;
++	__be16 port;
++	__be16 sdp_specific2;
+ 	union cma_ip_addr src_addr;
+ 	union cma_ip_addr dst_addr;
+ };
+@@ -663,7 +663,7 @@ static inline int cma_any_port(struct sockaddr *addr)
+ }
+ 
+ static int cma_get_net_info(void *hdr, enum rdma_port_space ps,
+-			    u8 *ip_ver, __u16 *port,
++			    u8 *ip_ver, __be16 *port,
+ 			    union cma_ip_addr **src, union cma_ip_addr **dst)
+ {
+ 	switch (ps) {
+@@ -695,7 +695,7 @@ static int cma_get_net_info(void *hdr, enum rdma_port_space ps,
+ 
+ static void cma_save_net_info(struct rdma_addr *addr,
+ 			      struct rdma_addr *listen_addr,
+-			      u8 ip_ver, __u16 port,
++			      u8 ip_ver, __be16 port,
+ 			      union cma_ip_addr *src, union cma_ip_addr *dst)
+ {
+ 	struct sockaddr_in *listen4, *ip4;
+@@ -996,7 +996,7 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id,
+ 	struct rdma_cm_id *id;
+ 	struct rdma_route *rt;
+ 	union cma_ip_addr *src, *dst;
+-	__u16 port;
++	__be16 port;
+ 	u8 ip_ver;
+ 
+ 	if (cma_get_net_info(ib_event->private_data, listen_id->ps,
+@@ -1043,7 +1043,7 @@ static struct rdma_id_private *cma_new_udp_id(struct rdma_cm_id *listen_id,
+ 	struct rdma_id_private *id_priv;
+ 	struct rdma_cm_id *id;
+ 	union cma_ip_addr *src, *dst;
+-	__u16 port;
++	__be16 port;
+ 	u8 ip_ver;
+ 	int ret;
+ 
+@@ -1165,7 +1165,7 @@ static void cma_set_compare_data(enum rdma_port_space ps, struct sockaddr *addr,
+ {
+ 	struct cma_hdr *cma_data, *cma_mask;
+ 	struct sdp_hh *sdp_data, *sdp_mask;
+-	__u32 ip4_addr;
++	__be32 ip4_addr;
+ 	struct in6_addr ip6_addr;
+ 
+ 	memset(compare, 0, sizeof *compare);
+@@ -1181,12 +1181,12 @@ static void cma_set_compare_data(enum rdma_port_space ps, struct sockaddr *addr,
+ 			sdp_set_ip_ver(sdp_data, 4);
+ 			sdp_set_ip_ver(sdp_mask, 0xF);
+ 			sdp_data->dst_addr.ip4.addr = ip4_addr;
+-			sdp_mask->dst_addr.ip4.addr = ~0;
++			sdp_mask->dst_addr.ip4.addr = htonl(~0);
+ 		} else {
+ 			cma_set_ip_ver(cma_data, 4);
+ 			cma_set_ip_ver(cma_mask, 0xF);
+ 			cma_data->dst_addr.ip4.addr = ip4_addr;
+-			cma_mask->dst_addr.ip4.addr = ~0;
++			cma_mask->dst_addr.ip4.addr = htonl(~0);
+ 		}
+ 		break;
+ 	case AF_INET6:
 diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
 index 320f2b6..99f2f2a 100644
 --- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
@@ -3351,6 +4221,20 @@
  	attrs.max_ord = ep->ord;
  	attrs.llp_stream_handle = ep;
  	attrs.next_state = IWCH_QP_STATE_RTS;
+diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
+index 0727b0a..99562ce 100644
+--- a/drivers/input/evdev.c
++++ b/drivers/input/evdev.c
+@@ -853,6 +853,9 @@ static void evdev_cleanup(struct evdev *evdev)
+ 	evdev_hangup(evdev);
+ 	evdev_remove_chrdev(evdev);
+ 
++	if (evdev->grab)
++		evdev_ungrab(evdev, evdev->grab);
++
+ 	/* evdev is marked dead so no one else accesses evdev->open */
+ 	if (evdev->open) {
+ 		input_flush_device(handle, NULL);
 diff --git a/drivers/input/misc/ixp4xx-beeper.c b/drivers/input/misc/ixp4xx-beeper.c
 index d2ade74..798d84c 100644
 --- a/drivers/input/misc/ixp4xx-beeper.c
@@ -3544,7 +4428,7 @@
  				    unsigned index,
  				    void (*callback)(struct virtqueue *vq))
 diff --git a/drivers/lguest/lguest_user.c b/drivers/lguest/lguest_user.c
-index 2221485..564e425 100644
+index 2221485..645e6e0 100644
 --- a/drivers/lguest/lguest_user.c
 +++ b/drivers/lguest/lguest_user.c
 @@ -73,7 +73,7 @@ static ssize_t read(struct file *file, char __user *user, size_t size,loff_t*o)
@@ -3608,8 +4492,12 @@
  	return 0;
  }
  
-@@ -185,14 +192,13 @@ static int initialize(struct file *file, const unsigned long __user *input)
- 	lg->mem_base = (void __user *)(long)args[0];
+@@ -182,17 +189,16 @@ static int initialize(struct file *file, const unsigned long __user *input)
+ 	}
+ 
+ 	/* Populate the easy fields of our "struct lguest" */
+-	lg->mem_base = (void __user *)(long)args[0];
++	lg->mem_base = (void __user *)args[0];
  	lg->pfn_limit = args[1];
  
 -	/* This is the first cpu */
@@ -4103,6 +4991,419 @@
  
  int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from,
  		unsigned int num_dests, struct io_region *dests,
+diff --git a/drivers/media/common/saa7146_core.c b/drivers/media/common/saa7146_core.c
+index 168a8d3..7707b8c 100644
+--- a/drivers/media/common/saa7146_core.c
++++ b/drivers/media/common/saa7146_core.c
+@@ -306,25 +306,22 @@ static irqreturn_t interrupt_hw(int irq, void *dev_id)
+ 		return IRQ_NONE;
+ 	}
+ 
+-	if( 0 != (dev->ext)) {
+-		if( 0 != (dev->ext->irq_mask & isr )) {
+-			if( 0 != dev->ext->irq_func ) {
++	if (dev->ext) {
++		if (dev->ext->irq_mask & isr) {
++			if (dev->ext->irq_func)
+ 				dev->ext->irq_func(dev, &isr);
+-			}
+ 			isr &= ~dev->ext->irq_mask;
+ 		}
+ 	}
+ 	if (0 != (isr & (MASK_27))) {
+ 		DEB_INT(("irq: RPS0 (0x%08x).\n",isr));
+-		if( 0 != dev->vv_data && 0 != dev->vv_callback) {
++		if (dev->vv_data && dev->vv_callback)
+ 			dev->vv_callback(dev,isr);
+-		}
+ 		isr &= ~MASK_27;
+ 	}
+ 	if (0 != (isr & (MASK_28))) {
+-		if( 0 != dev->vv_data && 0 != dev->vv_callback) {
++		if (dev->vv_data && dev->vv_callback)
+ 			dev->vv_callback(dev,isr);
+-		}
+ 		isr &= ~MASK_28;
+ 	}
+ 	if (0 != (isr & (MASK_16|MASK_17))) {
+diff --git a/drivers/media/common/saa7146_fops.c b/drivers/media/common/saa7146_fops.c
+index f0703d8..171afe7 100644
+--- a/drivers/media/common/saa7146_fops.c
++++ b/drivers/media/common/saa7146_fops.c
+@@ -272,7 +272,7 @@ static int fops_open(struct inode *inode, struct file *file)
+ 
+ 	result = 0;
+ out:
+-	if( fh != 0 && result != 0 ) {
++	if (fh && result != 0) {
+ 		kfree(fh);
+ 		file->private_data = NULL;
+ 	}
+diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c
+index ed3f826..4c8b62e 100644
+--- a/drivers/media/dvb/dvb-core/dvb_net.c
++++ b/drivers/media/dvb/dvb-core/dvb_net.c
+@@ -784,8 +784,8 @@ static int dvb_net_ts_callback(const u8 *buffer1, size_t buffer1_len,
+ {
+ 	struct net_device *dev = feed->priv;
+ 
+-	if (buffer2 != 0)
+-		printk(KERN_WARNING "buffer2 not 0: %p.\n", buffer2);
++	if (buffer2)
++		printk(KERN_WARNING "buffer2 not NULL: %p.\n", buffer2);
+ 	if (buffer1_len > 32768)
+ 		printk(KERN_WARNING "length > 32k: %zu.\n", buffer1_len);
+ 	/* printk("TS callback: %u bytes, %u TS cells @ %p.\n",
+diff --git a/drivers/media/video/adv7170.c b/drivers/media/video/adv7170.c
+index cbab53f..fea2e72 100644
+--- a/drivers/media/video/adv7170.c
++++ b/drivers/media/video/adv7170.c
+@@ -408,7 +408,7 @@ adv7170_detect_client (struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (client == 0)
++	if (!client)
+ 		return -ENOMEM;
+ 	client->addr = address;
+ 	client->adapter = adapter;
+diff --git a/drivers/media/video/adv7175.c b/drivers/media/video/adv7175.c
+index 0d0c554..10d4d89 100644
+--- a/drivers/media/video/adv7175.c
++++ b/drivers/media/video/adv7175.c
+@@ -426,7 +426,7 @@ adv7175_detect_client (struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (client == 0)
++	if (!client)
+ 		return -ENOMEM;
+ 	client->addr = address;
+ 	client->adapter = adapter;
+diff --git a/drivers/media/video/bt819.c b/drivers/media/video/bt819.c
+index 12d1b92..e663cc0 100644
+--- a/drivers/media/video/bt819.c
++++ b/drivers/media/video/bt819.c
+@@ -524,7 +524,7 @@ bt819_detect_client (struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (client == 0)
++	if (!client)
+ 		return -ENOMEM;
+ 	client->addr = address;
+ 	client->adapter = adapter;
+diff --git a/drivers/media/video/bt856.c b/drivers/media/video/bt856.c
+index e1028a7..7dee2e3 100644
+--- a/drivers/media/video/bt856.c
++++ b/drivers/media/video/bt856.c
+@@ -311,7 +311,7 @@ bt856_detect_client (struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (client == 0)
++	if (!client)
+ 		return -ENOMEM;
+ 	client->addr = address;
+ 	client->adapter = adapter;
+diff --git a/drivers/media/video/dpc7146.c b/drivers/media/video/dpc7146.c
+index 566e479..9ceb6b2 100644
+--- a/drivers/media/video/dpc7146.c
++++ b/drivers/media/video/dpc7146.c
+@@ -131,7 +131,7 @@ static int dpc_probe(struct saa7146_dev* dev)
+ 	device_for_each_child(&dpc->i2c_adapter.dev, dpc, dpc_check_clients);
+ 
+ 	/* check if all devices are present */
+-	if( 0 == dpc->saa7111a ) {
++	if (!dpc->saa7111a) {
+ 		DEB_D(("dpc_v4l2.o: dpc_attach failed for this device.\n"));
+ 		i2c_del_adapter(&dpc->i2c_adapter);
+ 		kfree(dpc);
+diff --git a/drivers/media/video/mt20xx.c b/drivers/media/video/mt20xx.c
+index 58bab65..74fd6a0 100644
+--- a/drivers/media/video/mt20xx.c
++++ b/drivers/media/video/mt20xx.c
+@@ -647,7 +647,7 @@ struct dvb_frontend *microtune_attach(struct dvb_frontend *fe,
+ 	default:
+ 		tuner_info("microtune %s found, not (yet?) supported, sorry :-/\n",
+ 			   name);
+-		return 0;
++		return NULL;
+ 	}
+ 
+ 	strlcpy(fe->ops.tuner_ops.info.name, name,
+diff --git a/drivers/media/video/mxb.c b/drivers/media/video/mxb.c
+index add6d0d..cb5a510 100644
+--- a/drivers/media/video/mxb.c
++++ b/drivers/media/video/mxb.c
+@@ -221,9 +221,8 @@ static int mxb_probe(struct saa7146_dev* dev)
+ 	device_for_each_child(&mxb->i2c_adapter.dev, mxb, mxb_check_clients);
+ 
+ 	/* check if all devices are present */
+-	if(    0 == mxb->tea6420_1	|| 0 == mxb->tea6420_2	|| 0 == mxb->tea6415c
+-	    || 0 == mxb->tda9840	|| 0 == mxb->saa7111a	|| 0 == mxb->tuner ) {
+-
++	if (!mxb->tea6420_1 || !mxb->tea6420_2 || !mxb->tea6415c ||
++	    !mxb->tda9840 || !mxb->saa7111a || !mxb->tuner) {
+ 		printk("mxb: did not find all i2c devices. aborting\n");
+ 		i2c_del_adapter(&mxb->i2c_adapter);
+ 		kfree(mxb);
+diff --git a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
+index 46f156f..5a3e8d2 100644
+--- a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
++++ b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
+@@ -60,7 +60,7 @@ int pvr2_ctrl_set_mask_value(struct pvr2_ctrl *cptr,int mask,int val)
+ 	int ret = 0;
+ 	if (!cptr) return -EINVAL;
+ 	LOCK_TAKE(cptr->hdw->big_lock); do {
+-		if (cptr->info->set_value != 0) {
++		if (cptr->info->set_value) {
+ 			if (cptr->info->type == pvr2_ctl_bitmask) {
+ 				mask &= cptr->info->def.type_bitmask.valid_bits;
+ 			} else if (cptr->info->type == pvr2_ctl_int) {
+@@ -265,7 +265,7 @@ unsigned int pvr2_ctrl_get_v4lflags(struct pvr2_ctrl *cptr)
+ int pvr2_ctrl_is_writable(struct pvr2_ctrl *cptr)
+ {
+ 	if (!cptr) return 0;
+-	return cptr->info->set_value != 0;
++	return cptr->info->set_value != NULL;
+ }
+ 
+ 
+diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+index 41ae980..d6955fa 100644
+--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
++++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+@@ -2291,7 +2291,7 @@ static int pvr2_hdw_commit_setup(struct pvr2_hdw *hdw)
+ 
+ 	for (idx = 0; idx < hdw->control_cnt; idx++) {
+ 		cptr = hdw->controls + idx;
+-		if (cptr->info->is_dirty == 0) continue;
++		if (!cptr->info->is_dirty) continue;
+ 		if (!cptr->info->is_dirty(cptr)) continue;
+ 		commit_flag = !0;
+ 
+@@ -2646,7 +2646,7 @@ void pvr2_hdw_cpufw_set_enabled(struct pvr2_hdw *hdw,
+ 	u16 address;
+ 	unsigned int pipe;
+ 	LOCK_TAKE(hdw->big_lock); do {
+-		if ((hdw->fw_buffer == 0) == !enable_flag) break;
++		if ((hdw->fw_buffer == NULL) == !enable_flag) break;
+ 
+ 		if (!enable_flag) {
+ 			pvr2_trace(PVR2_TRACE_FIRMWARE,
+@@ -2715,7 +2715,7 @@ void pvr2_hdw_cpufw_set_enabled(struct pvr2_hdw *hdw,
+ /* Return true if we're in a mode for retrieval CPU firmware */
+ int pvr2_hdw_cpufw_get_enabled(struct pvr2_hdw *hdw)
+ {
+-	return hdw->fw_buffer != 0;
++	return hdw->fw_buffer != NULL;
+ }
+ 
+ 
+diff --git a/drivers/media/video/pvrusb2/pvrusb2-io.c b/drivers/media/video/pvrusb2/pvrusb2-io.c
+index ce3c898..a9889ff 100644
+--- a/drivers/media/video/pvrusb2/pvrusb2-io.c
++++ b/drivers/media/video/pvrusb2/pvrusb2-io.c
+@@ -563,7 +563,7 @@ void pvr2_stream_kill(struct pvr2_stream *sp)
+ 	struct pvr2_buffer *bp;
+ 	mutex_lock(&sp->mutex); do {
+ 		pvr2_stream_internal_flush(sp);
+-		while ((bp = pvr2_stream_get_ready_buffer(sp)) != 0) {
++		while ((bp = pvr2_stream_get_ready_buffer(sp)) != NULL) {
+ 			pvr2_buffer_set_idle(bp);
+ 		}
+ 		if (sp->buffer_total_count != sp->buffer_target_count) {
+diff --git a/drivers/media/video/pvrusb2/pvrusb2-ioread.c b/drivers/media/video/pvrusb2/pvrusb2-ioread.c
+index f782418..c572212 100644
+--- a/drivers/media/video/pvrusb2/pvrusb2-ioread.c
++++ b/drivers/media/video/pvrusb2/pvrusb2-ioread.c
+@@ -165,7 +165,7 @@ static int pvr2_ioread_start(struct pvr2_ioread *cp)
+ 	if (!(cp->stream)) return 0;
+ 	pvr2_trace(PVR2_TRACE_START_STOP,
+ 		   "/*---TRACE_READ---*/ pvr2_ioread_start id=%p",cp);
+-	while ((bp = pvr2_stream_get_idle_buffer(cp->stream)) != 0) {
++	while ((bp = pvr2_stream_get_idle_buffer(cp->stream)) != NULL) {
+ 		stat = pvr2_buffer_queue(bp);
+ 		if (stat < 0) {
+ 			pvr2_trace(PVR2_TRACE_DATA_FLOW,
+diff --git a/drivers/media/video/pwc/pwc-if.c b/drivers/media/video/pwc/pwc-if.c
+index f991d72..e0a453a 100644
+--- a/drivers/media/video/pwc/pwc-if.c
++++ b/drivers/media/video/pwc/pwc-if.c
+@@ -915,7 +915,7 @@ static void pwc_iso_stop(struct pwc_device *pdev)
+ 		struct urb *urb;
+ 
+ 		urb = pdev->sbuf[i].urb;
+-		if (urb != 0) {
++		if (urb) {
+ 			PWC_DEBUG_MEMORY("Unlinking URB %p\n", urb);
+ 			usb_kill_urb(urb);
+ 		}
+@@ -931,7 +931,7 @@ static void pwc_iso_free(struct pwc_device *pdev)
+ 		struct urb *urb;
+ 
+ 		urb = pdev->sbuf[i].urb;
+-		if (urb != 0) {
++		if (urb) {
+ 			PWC_DEBUG_MEMORY("Freeing URB\n");
+ 			usb_free_urb(urb);
+ 			pdev->sbuf[i].urb = NULL;
+@@ -1759,8 +1759,7 @@ static int usb_pwc_probe(struct usb_interface *intf, const struct usb_device_id
+ 
+ 	/* Allocate video_device structure */
+ 	pdev->vdev = video_device_alloc();
+-	if (pdev->vdev == 0)
+-	{
++	if (!pdev->vdev) {
+ 		PWC_ERROR("Err, cannot allocate video_device struture. Failing probe.");
+ 		kfree(pdev);
+ 		return -ENOMEM;
+diff --git a/drivers/media/video/saa7110.c b/drivers/media/video/saa7110.c
+index 061134a..1df2602 100644
+--- a/drivers/media/video/saa7110.c
++++ b/drivers/media/video/saa7110.c
+@@ -488,7 +488,7 @@ saa7110_detect_client (struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (client == 0)
++	if (!client)
+ 		return -ENOMEM;
+ 	client->addr = address;
+ 	client->adapter = adapter;
+@@ -496,7 +496,7 @@ saa7110_detect_client (struct i2c_adapter *adapter,
+ 	strlcpy(I2C_NAME(client), "saa7110", sizeof(I2C_NAME(client)));
+ 
+ 	decoder = kzalloc(sizeof(struct saa7110), GFP_KERNEL);
+-	if (decoder == 0) {
++	if (!decoder) {
+ 		kfree(client);
+ 		return -ENOMEM;
+ 	}
+diff --git a/drivers/media/video/saa7111.c b/drivers/media/video/saa7111.c
+index 7ae2d64..a0772c5 100644
+--- a/drivers/media/video/saa7111.c
++++ b/drivers/media/video/saa7111.c
+@@ -502,7 +502,7 @@ saa7111_detect_client (struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (client == 0)
++	if (!client)
+ 		return -ENOMEM;
+ 	client->addr = address;
+ 	client->adapter = adapter;
+diff --git a/drivers/media/video/saa7114.c b/drivers/media/video/saa7114.c
+index 677df51..bf91a4f 100644
+--- a/drivers/media/video/saa7114.c
++++ b/drivers/media/video/saa7114.c
+@@ -841,7 +841,7 @@ saa7114_detect_client (struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (client == 0)
++	if (!client)
+ 		return -ENOMEM;
+ 	client->addr = address;
+ 	client->adapter = adapter;
+diff --git a/drivers/media/video/saa7185.c b/drivers/media/video/saa7185.c
+index 66cc92c..41f7044 100644
+--- a/drivers/media/video/saa7185.c
++++ b/drivers/media/video/saa7185.c
+@@ -403,7 +403,7 @@ saa7185_detect_client (struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (client == 0)
++	if (!client)
+ 		return -ENOMEM;
+ 	client->addr = address;
+ 	client->adapter = adapter;
+diff --git a/drivers/media/video/tda9840.c b/drivers/media/video/tda9840.c
+index ef494fe..bdca5d2 100644
+--- a/drivers/media/video/tda9840.c
++++ b/drivers/media/video/tda9840.c
+@@ -172,7 +172,7 @@ static int detect(struct i2c_adapter *adapter, int address, int kind)
+ 
+ 	/* allocate memory for client structure */
+ 	client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (0 == client) {
++	if (!client) {
+ 		printk("not enough kernel memory\n");
+ 		return -ENOMEM;
+ 	}
+diff --git a/drivers/media/video/tea6415c.c b/drivers/media/video/tea6415c.c
+index 523df0b..df2fad9 100644
+--- a/drivers/media/video/tea6415c.c
++++ b/drivers/media/video/tea6415c.c
+@@ -64,7 +64,7 @@ static int detect(struct i2c_adapter *adapter, int address, int kind)
+ 
+ 	/* allocate memory for client structure */
+ 	client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (0 == client) {
++	if (!client) {
+ 		return -ENOMEM;
+ 	}
+ 
+diff --git a/drivers/media/video/tea6420.c b/drivers/media/video/tea6420.c
+index ca05cd6..4ff6c63 100644
+--- a/drivers/media/video/tea6420.c
++++ b/drivers/media/video/tea6420.c
+@@ -101,7 +101,7 @@ static int tea6420_detect(struct i2c_adapter *adapter, int address, int kind)
+ 
+ 	/* allocate memory for client structure */
+ 	client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (0 == client) {
++	if (!client) {
+ 		return -ENOMEM;
+ 	}
+ 
+diff --git a/drivers/media/video/tvp5150.c b/drivers/media/video/tvp5150.c
+index d28318c..b6e24e7 100644
+--- a/drivers/media/video/tvp5150.c
++++ b/drivers/media/video/tvp5150.c
+@@ -1072,12 +1072,12 @@ static int tvp5150_detect_client(struct i2c_adapter *adapter,
+ 		return 0;
+ 
+ 	c = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
+-	if (c == 0)
++	if (!c)
+ 		return -ENOMEM;
+ 	memcpy(c, &client_template, sizeof(struct i2c_client));
+ 
+ 	core = kzalloc(sizeof(struct tvp5150), GFP_KERNEL);
+-	if (core == 0) {
++	if (!core) {
+ 		kfree(c);
+ 		return -ENOMEM;
+ 	}
+diff --git a/drivers/media/video/zoran_driver.c b/drivers/media/video/zoran_driver.c
+index dd3d7d2..fea4946 100644
+--- a/drivers/media/video/zoran_driver.c
++++ b/drivers/media/video/zoran_driver.c
+@@ -339,7 +339,7 @@ v4l_fbuffer_alloc (struct file *file)
+ 			/* Use kmalloc */
+ 
+ 			mem = kmalloc(fh->v4l_buffers.buffer_size, GFP_KERNEL);
+-			if (mem == 0) {
++			if (!mem) {
+ 				dprintk(1,
+ 					KERN_ERR
+ 					"%s: v4l_fbuffer_alloc() - kmalloc for V4L buf %d failed\n",
+diff --git a/drivers/media/video/zr364xx.c b/drivers/media/video/zr364xx.c
+index 1b44784..04949c8 100644
+--- a/drivers/media/video/zr364xx.c
++++ b/drivers/media/video/zr364xx.c
+@@ -390,7 +390,7 @@ static int read_frame(struct zr364xx_camera *cam, int framenum)
+ }
+ 
+ 
+-static ssize_t zr364xx_read(struct file *file, char *buf, size_t cnt,
++static ssize_t zr364xx_read(struct file *file, char __user *buf, size_t cnt,
+ 			    loff_t * ppos)
+ {
+ 	unsigned long count = cnt;
 diff --git a/drivers/memstick/host/tifm_ms.c b/drivers/memstick/host/tifm_ms.c
 index eb150df..8577de4 100644
 --- a/drivers/memstick/host/tifm_ms.c
@@ -4125,6 +5426,66 @@
  		if (host->req->long_data) {
  			pg = nth_page(sg_page(&host->req->sg),
  				      off >> PAGE_SHIFT);
+diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c
+index 63fb1ff..f6f2d96 100644
+--- a/drivers/mfd/asic3.c
++++ b/drivers/mfd/asic3.c
+@@ -28,14 +28,14 @@
+ static inline void asic3_write_register(struct asic3 *asic,
+ 				 unsigned int reg, u32 value)
+ {
+-	iowrite16(value, (unsigned long)asic->mapping +
++	iowrite16(value, asic->mapping +
+ 		  (reg >> asic->bus_shift));
+ }
+ 
+ static inline u32 asic3_read_register(struct asic3 *asic,
+ 			       unsigned int reg)
+ {
+-	return ioread16((unsigned long)asic->mapping +
++	return ioread16(asic->mapping +
+ 			(reg >> asic->bus_shift));
+ }
+ 
+diff --git a/drivers/misc/fujitsu-laptop.c b/drivers/misc/fujitsu-laptop.c
+index 1cfd7f3..e2e7c05 100644
+--- a/drivers/misc/fujitsu-laptop.c
++++ b/drivers/misc/fujitsu-laptop.c
+@@ -231,7 +231,7 @@ static int acpi_fujitsu_remove(struct acpi_device *device, int type)
+ 
+ 	if (!device || !acpi_driver_data(device))
+ 		return -EINVAL;
+-	fujitsu->acpi_handle = 0;
++	fujitsu->acpi_handle = NULL;
+ 
+ 	return 0;
+ }
+diff --git a/drivers/misc/ibmasm/module.c b/drivers/misc/ibmasm/module.c
+index 4f9d4a9..b5f6add 100644
+--- a/drivers/misc/ibmasm/module.c
++++ b/drivers/misc/ibmasm/module.c
+@@ -106,7 +106,7 @@ static int __devinit ibmasm_init_one(struct pci_dev *pdev, const struct pci_devi
+ 	sp->irq = pdev->irq;
+ 	sp->base_address = ioremap(pci_resource_start(pdev, 0),
+ 					pci_resource_len(pdev, 0));
+-	if (sp->base_address == 0) {
++	if (!sp->base_address) {
+ 		dev_err(sp->dev, "Failed to ioremap pci memory\n");
+ 		result =  -ENODEV;
+ 		goto error_ioremap;
+diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c
+index c884730..1bfe5d1 100644
+--- a/drivers/misc/lkdtm.c
++++ b/drivers/misc/lkdtm.c
+@@ -197,7 +197,7 @@ static int lkdtm_parse_commandline(void)
+ {
+ 	int i;
+ 
+-	if (cpoint_name == INVALID || cpoint_type == NONE ||
++	if (cpoint_name == NULL || cpoint_type == NULL ||
+ 					cpoint_count < 1 || recur_count < 1)
+ 		return -EINVAL;
+ 
 diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
 index f00e04e..bc4649a 100644
 --- a/drivers/mtd/maps/physmap.c
@@ -4340,7 +5701,7 @@
  	t3_free_qset(adapter, q);
  	return ret;
 diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
-index 1fe305c..b09a53d 100644
+index 1fe305c..d63cc93 100644
 --- a/drivers/net/dm9000.c
 +++ b/drivers/net/dm9000.c
 @@ -798,8 +798,6 @@ dm9000_init_dm9000(struct net_device *dev)
@@ -4352,6 +5713,15 @@
  	/* Enable TX/RX interrupt mask */
  	iow(db, DM9000_IMR, IMR_PAR | IMR_PTM | IMR_PRM);
  
+@@ -970,7 +968,7 @@ dm9000_interrupt(int irq, void *dev_id)
+ struct dm9000_rxhdr {
+ 	u8	RxPktReady;
+ 	u8	RxStatus;
+-	u16	RxLen;
++	__le16	RxLen;
+ } __attribute__((__packed__));
+ 
+ /*
 @@ -1197,6 +1195,7 @@ dm9000_hash_table(struct net_device *dev)
  	int i, oft;
  	u32 hash_val;
@@ -6492,6 +7862,24 @@
  				"resources: %d\n", PNP_MAX_MEM);
  		warned = 1;
  	}
+diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
+index a8bec49..f97224c 100644
+--- a/drivers/serial/8250_pci.c
++++ b/drivers/serial/8250_pci.c
+@@ -1214,13 +1214,6 @@ static struct pciserial_board pci_boards[] __devinitdata = {
+ 		.base_baud	= 115200,
+ 		.uart_offset	= 8,
+ 	},
+-	[pbn_b0_8_115200] = {
+-		.flags		= FL_BASE0,
+-		.num_ports	= 8,
+-		.base_baud	= 115200,
+-		.uart_offset	= 8,
+-	},
+-
+ 	[pbn_b0_1_921600] = {
+ 		.flags		= FL_BASE0,
+ 		.num_ports	= 1,
 diff --git a/drivers/video/bf54x-lq043fb.c b/drivers/video/bf54x-lq043fb.c
 index 986a550..eefba3d 100644
 --- a/drivers/video/bf54x-lq043fb.c
@@ -6626,9 +8014,36 @@
  
  	return 0;
 diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
-index 59a8f73..6c8ecde 100644
+index 59a8f73..c0df924 100644
 --- a/drivers/virtio/virtio_pci.c
 +++ b/drivers/virtio/virtio_pci.c
+@@ -37,7 +37,7 @@ struct virtio_pci_device
+ 	struct pci_dev *pci_dev;
+ 
+ 	/* the IO mapping for the PCI config space */
+-	void *ioaddr;
++	void __iomem *ioaddr;
+ 
+ 	/* a list of queues so we can dispatch IRQs */
+ 	spinlock_t lock;
+@@ -111,7 +111,7 @@ static void vp_get(struct virtio_device *vdev, unsigned offset,
+ 		   void *buf, unsigned len)
+ {
+ 	struct virtio_pci_device *vp_dev = to_vp_device(vdev);
+-	void *ioaddr = vp_dev->ioaddr + VIRTIO_PCI_CONFIG + offset;
++	void __iomem *ioaddr = vp_dev->ioaddr + VIRTIO_PCI_CONFIG + offset;
+ 	u8 *ptr = buf;
+ 	int i;
+ 
+@@ -125,7 +125,7 @@ static void vp_set(struct virtio_device *vdev, unsigned offset,
+ 		   const void *buf, unsigned len)
+ {
+ 	struct virtio_pci_device *vp_dev = to_vp_device(vdev);
+-	void *ioaddr = vp_dev->ioaddr + VIRTIO_PCI_CONFIG + offset;
++	void __iomem *ioaddr = vp_dev->ioaddr + VIRTIO_PCI_CONFIG + offset;
+ 	const u8 *ptr = buf;
+ 	int i;
+ 
 @@ -388,6 +388,7 @@ static void __devexit virtio_pci_remove(struct pci_dev *pci_dev)
  {
  	struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
@@ -6753,6 +8168,145 @@
  }
  
  /**
+diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
+index 1f5a428..1cb5b0a 100644
+--- a/fs/cifs/cifsacl.c
++++ b/fs/cifs/cifsacl.c
+@@ -261,7 +261,7 @@ static void mode_to_access_flags(umode_t mode, umode_t bits_to_use,
+ 	return;
+ }
+ 
+-static __le16 fill_ace_for_sid(struct cifs_ace *pntace,
++static __u16 fill_ace_for_sid(struct cifs_ace *pntace,
+ 			const struct cifs_sid *psid, __u64 nmode, umode_t bits)
+ {
+ 	int i;
+@@ -411,7 +411,7 @@ static void parse_dacl(struct cifs_acl *pdacl, char *end_of_acl,
+ static int set_chmod_dacl(struct cifs_acl *pndacl, struct cifs_sid *pownersid,
+ 			struct cifs_sid *pgrpsid, __u64 nmode)
+ {
+-	__le16 size = 0;
++	u16 size = 0;
+ 	struct cifs_acl *pnndacl;
+ 
+ 	pnndacl = (struct cifs_acl *)((char *)pndacl + sizeof(struct cifs_acl));
+diff --git a/fs/jbd/journal.c b/fs/jbd/journal.c
+index 9816293..0e081d5 100644
+--- a/fs/jbd/journal.c
++++ b/fs/jbd/journal.c
+@@ -1620,14 +1620,14 @@ static int journal_init_journal_head_cache(void)
+ {
+ 	int retval;
+ 
+-	J_ASSERT(journal_head_cache == 0);
++	J_ASSERT(journal_head_cache == NULL);
+ 	journal_head_cache = kmem_cache_create("journal_head",
+ 				sizeof(struct journal_head),
+ 				0,		/* offset */
+ 				SLAB_TEMPORARY,	/* flags */
+ 				NULL);		/* ctor */
+ 	retval = 0;
+-	if (journal_head_cache == 0) {
++	if (!journal_head_cache) {
+ 		retval = -ENOMEM;
+ 		printk(KERN_EMERG "JBD: no memory for journal_head cache\n");
+ 	}
+diff --git a/fs/jbd/revoke.c b/fs/jbd/revoke.c
+index ad2eacf..d5f8eee 100644
+--- a/fs/jbd/revoke.c
++++ b/fs/jbd/revoke.c
+@@ -173,13 +173,13 @@ int __init journal_init_revoke_caches(void)
+ 					   0,
+ 					   SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY,
+ 					   NULL);
+-	if (revoke_record_cache == 0)
++	if (!revoke_record_cache)
+ 		return -ENOMEM;
+ 
+ 	revoke_table_cache = kmem_cache_create("revoke_table",
+ 					   sizeof(struct jbd_revoke_table_s),
+ 					   0, SLAB_TEMPORARY, NULL);
+-	if (revoke_table_cache == 0) {
++	if (!revoke_table_cache) {
+ 		kmem_cache_destroy(revoke_record_cache);
+ 		revoke_record_cache = NULL;
+ 		return -ENOMEM;
+diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
+index 96ba846..954cff0 100644
+--- a/fs/jbd2/journal.c
++++ b/fs/jbd2/journal.c
+@@ -219,7 +219,7 @@ static int jbd2_journal_start_thread(journal_t *journal)
+ 	if (IS_ERR(t))
+ 		return PTR_ERR(t);
+ 
+-	wait_event(journal->j_wait_done_commit, journal->j_task != 0);
++	wait_event(journal->j_wait_done_commit, journal->j_task != NULL);
+ 	return 0;
+ }
+ 
+@@ -231,7 +231,7 @@ static void journal_kill_thread(journal_t *journal)
+ 	while (journal->j_task) {
+ 		wake_up(&journal->j_wait_commit);
+ 		spin_unlock(&journal->j_state_lock);
+-		wait_event(journal->j_wait_done_commit, journal->j_task == 0);
++		wait_event(journal->j_wait_done_commit, journal->j_task == NULL);
+ 		spin_lock(&journal->j_state_lock);
+ 	}
+ 	spin_unlock(&journal->j_state_lock);
+@@ -1969,14 +1969,14 @@ static int journal_init_jbd2_journal_head_cache(void)
+ {
+ 	int retval;
+ 
+-	J_ASSERT(jbd2_journal_head_cache == 0);
++	J_ASSERT(jbd2_journal_head_cache == NULL);
+ 	jbd2_journal_head_cache = kmem_cache_create("jbd2_journal_head",
+ 				sizeof(struct journal_head),
+ 				0,		/* offset */
+ 				SLAB_TEMPORARY,	/* flags */
+ 				NULL);		/* ctor */
+ 	retval = 0;
+-	if (jbd2_journal_head_cache == 0) {
++	if (!jbd2_journal_head_cache) {
+ 		retval = -ENOMEM;
+ 		printk(KERN_EMERG "JBD: no memory for journal_head cache\n");
+ 	}
+@@ -2002,14 +2002,14 @@ static struct journal_head *journal_alloc_journal_head(void)
+ 	atomic_inc(&nr_journal_heads);
+ #endif
+ 	ret = kmem_cache_alloc(jbd2_journal_head_cache, GFP_NOFS);
+-	if (ret == 0) {
++	if (!ret) {
+ 		jbd_debug(1, "out of memory for journal_head\n");
+ 		if (time_after(jiffies, last_warning + 5*HZ)) {
+ 			printk(KERN_NOTICE "ENOMEM in %s, retrying.\n",
+ 			       __FUNCTION__);
+ 			last_warning = jiffies;
+ 		}
+-		while (ret == 0) {
++		while (!ret) {
+ 			yield();
+ 			ret = kmem_cache_alloc(jbd2_journal_head_cache, GFP_NOFS);
+ 		}
+diff --git a/fs/jbd2/revoke.c b/fs/jbd2/revoke.c
+index df36f42..2e1453a 100644
+--- a/fs/jbd2/revoke.c
++++ b/fs/jbd2/revoke.c
+@@ -174,13 +174,13 @@ int __init jbd2_journal_init_revoke_caches(void)
+ 					   0,
+ 					   SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY,
+ 					   NULL);
+-	if (jbd2_revoke_record_cache == 0)
++	if (!jbd2_revoke_record_cache)
+ 		return -ENOMEM;
+ 
+ 	jbd2_revoke_table_cache = kmem_cache_create("jbd2_revoke_table",
+ 					   sizeof(struct jbd2_revoke_table_s),
+ 					   0, SLAB_TEMPORARY, NULL);
+-	if (jbd2_revoke_table_cache == 0) {
++	if (!jbd2_revoke_table_cache) {
+ 		kmem_cache_destroy(jbd2_revoke_record_cache);
+ 		jbd2_revoke_record_cache = NULL;
+ 		return -ENOMEM;
 diff --git a/fs/namespace.c b/fs/namespace.c
 index 7953c96..94f026e 100644
 --- a/fs/namespace.c
@@ -7199,6 +8753,118 @@
  	return (mycount > count);
  }
  
+diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c
+index f85c5cf..7ee4208 100644
+--- a/fs/reiserfs/do_balan.c
++++ b/fs/reiserfs/do_balan.c
+@@ -283,7 +283,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih,	/* item h
+ 		return balance_leaf_when_delete(tb, flag);
+ 
+ 	zeros_num = 0;
+-	if (flag == M_INSERT && body == 0)
++	if (flag == M_INSERT && !body)
+ 		zeros_num = ih_item_len(ih);
+ 
+ 	pos_in_item = tb->tb_path->pos_in_item;
+@@ -1728,7 +1728,7 @@ struct buffer_head *get_FEB(struct tree_balance *tb)
+ 	struct buffer_info bi;
+ 
+ 	for (i = 0; i < MAX_FEB_SIZE; i++)
+-		if (tb->FEB[i] != 0)
++		if (tb->FEB[i] != NULL)
+ 			break;
+ 
+ 	if (i == MAX_FEB_SIZE)
+@@ -1827,7 +1827,7 @@ int get_left_neighbor_position(struct tree_balance *tb, int h)
+ {
+ 	int Sh_position = PATH_H_POSITION(tb->tb_path, h + 1);
+ 
+-	RFALSE(PATH_H_PPARENT(tb->tb_path, h) == 0 || tb->FL[h] == 0,
++	RFALSE(PATH_H_PPARENT(tb->tb_path, h) == NULL || tb->FL[h] == NULL,
+ 	       "vs-12325: FL[%d](%p) or F[%d](%p) does not exist",
+ 	       h, tb->FL[h], h, PATH_H_PPARENT(tb->tb_path, h));
+ 
+@@ -1841,7 +1841,7 @@ int get_right_neighbor_position(struct tree_balance *tb, int h)
+ {
+ 	int Sh_position = PATH_H_POSITION(tb->tb_path, h + 1);
+ 
+-	RFALSE(PATH_H_PPARENT(tb->tb_path, h) == 0 || tb->FR[h] == 0,
++	RFALSE(PATH_H_PPARENT(tb->tb_path, h) == NULL || tb->FR[h] == NULL,
+ 	       "vs-12330: F[%d](%p) or FR[%d](%p) does not exist",
+ 	       h, PATH_H_PPARENT(tb->tb_path, h), h, tb->FR[h]);
+ 
+diff --git a/fs/reiserfs/fix_node.c b/fs/reiserfs/fix_node.c
+index 0ee35c6..07d05e0 100644
+--- a/fs/reiserfs/fix_node.c
++++ b/fs/reiserfs/fix_node.c
+@@ -153,7 +153,7 @@ static void create_virtual_node(struct tree_balance *tb, int h)
+ 	if (vn->vn_mode == M_INSERT) {
+ 		struct virtual_item *vi = vn->vn_vi + vn->vn_affected_item_num;
+ 
+-		RFALSE(vn->vn_ins_ih == 0,
++		RFALSE(vn->vn_ins_ih == NULL,
+ 		       "vs-8040: item header of inserted item is not specified");
+ 		vi->vi_item_len = tb->insert_size[0];
+ 		vi->vi_ih = vn->vn_ins_ih;
+@@ -857,7 +857,8 @@ static int get_lfree(struct tree_balance *tb, int h)
+ 	struct buffer_head *l, *f;
+ 	int order;
+ 
+-	if ((f = PATH_H_PPARENT(tb->tb_path, h)) == 0 || (l = tb->FL[h]) == 0)
++	if ((f = PATH_H_PPARENT(tb->tb_path, h)) == NULL ||
++	    (l = tb->FL[h]) == NULL)
+ 		return 0;
+ 
+ 	if (f == l)
+@@ -878,7 +879,8 @@ static int get_rfree(struct tree_balance *tb, int h)
+ 	struct buffer_head *r, *f;
+ 	int order;
+ 
+-	if ((f = PATH_H_PPARENT(tb->tb_path, h)) == 0 || (r = tb->FR[h]) == 0)
++	if ((f = PATH_H_PPARENT(tb->tb_path, h)) == NULL ||
++	    (r = tb->FR[h]) == NULL)
+ 		return 0;
+ 
+ 	if (f == r)
+diff --git a/fs/reiserfs/lbalance.c b/fs/reiserfs/lbalance.c
+index 281f806..6de060a 100644
+--- a/fs/reiserfs/lbalance.c
++++ b/fs/reiserfs/lbalance.c
+@@ -626,7 +626,7 @@ static void leaf_define_dest_src_infos(int shift_mode, struct tree_balance *tb,
+ 			       "vs-10250: leaf_define_dest_src_infos: shift type is unknown (%d)",
+ 			       shift_mode);
+ 	}
+-	RFALSE(src_bi->bi_bh == 0 || dest_bi->bi_bh == 0,
++	RFALSE(!src_bi->bi_bh || !dest_bi->bi_bh,
+ 	       "vs-10260: mode==%d, source (%p) or dest (%p) buffer is initialized incorrectly",
+ 	       shift_mode, src_bi->bi_bh, dest_bi->bi_bh);
+ }
+diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c
+index b378eea..8867533 100644
+--- a/fs/reiserfs/namei.c
++++ b/fs/reiserfs/namei.c
+@@ -452,7 +452,7 @@ static int reiserfs_add_entry(struct reiserfs_transaction_handle *th,
+ 	buflen = DEH_SIZE + ROUND_UP(namelen);
+ 	if (buflen > sizeof(small_buf)) {
+ 		buffer = kmalloc(buflen, GFP_NOFS);
+-		if (buffer == 0)
++		if (!buffer)
+ 			return -ENOMEM;
+ 	} else
+ 		buffer = small_buf;
+diff --git a/fs/smbfs/smbiod.c b/fs/smbfs/smbiod.c
+index fae8e85..6bd9b69 100644
+--- a/fs/smbfs/smbiod.c
++++ b/fs/smbfs/smbiod.c
+@@ -206,7 +206,7 @@ int smbiod_retry(struct smb_sb_info *server)
+ 
+ 	smb_close_socket(server);
+ 
+-	if (pid == 0) {
++	if (!pid) {
+ 		/* FIXME: this is fatal, umount? */
+ 		printk(KERN_ERR "smb_retry: no connection process\n");
+ 		server->state = CONN_RETRIED;
 diff --git a/include/asm-avr32/byteorder.h b/include/asm-avr32/byteorder.h
 index 402ff41..d77b48b 100644
 --- a/include/asm-avr32/byteorder.h
@@ -7218,6 +8884,28 @@
  
  #if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
  # define __BYTEORDER_HAS_U64__
+diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h
+index b400cea..2c57f47 100644
+--- a/include/asm-frv/system.h
++++ b/include/asm-frv/system.h
+@@ -234,7 +234,7 @@ extern void free_initmem(void);
+ 		break;								\
+ 										\
+ 	default:								\
+-		__xg_orig = 0;							\
++		__xg_orig = (__typeof__(__xg_orig))0;				\
+ 		asm volatile("break");						\
+ 		break;								\
+ 	}									\
+@@ -259,7 +259,7 @@ extern uint32_t __cmpxchg_32(uint32_t *v, uint32_t test, uint32_t new);
+ 					 (__force uint32_t)__xg_test,		\
+ 					 (__force uint32_t)__xg_new); break;	\
+ 	default:								\
+-		__xg_orig = 0;							\
++		__xg_orig = (__typeof__(__xg_orig))0;				\
+ 		asm volatile("break");						\
+ 		break;								\
+ 	}									\
 diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h
 index 5424214..532975e 100644
 --- a/include/asm-sparc64/cpudata.h
@@ -7537,6 +9225,21 @@
  static inline unsigned fls_long(unsigned long l)
  {
  	if (sizeof(l) == 4)
+diff --git a/include/linux/compat.h b/include/linux/compat.h
+index a671dbf..8fa7857 100644
+--- a/include/linux/compat.h
++++ b/include/linux/compat.h
+@@ -192,8 +192,8 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp,
+ 		struct compat_timeval __user *tvp);
+ 
+ asmlinkage long compat_sys_wait4(compat_pid_t pid,
+-				 compat_uint_t *stat_addr, int options,
+-				 struct compat_rusage *ru);
++				 compat_uint_t __user *stat_addr, int options,
++				 struct compat_rusage __user *ru);
+ 
+ #define BITS_PER_COMPAT_LONG    (8*sizeof(compat_long_t))
+ 
 diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
 index 6b72a45..51e6b1e 100644
 --- a/include/linux/cpuidle.h
@@ -7552,6 +9255,19 @@
  
  	int (*enter)	(struct cpuidle_device *dev,
  			 struct cpuidle_state *state);
+diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
+index 261e43a..34d4406 100644
+--- a/include/linux/dmaengine.h
++++ b/include/linux/dmaengine.h
+@@ -423,7 +423,7 @@ void dma_async_device_unregister(struct dma_device *device);
+ /* --- Helper iov-locking functions --- */
+ 
+ struct dma_page_list {
+-	char *base_address;
++	char __user *base_address;
+ 	int nr_pages;
+ 	struct page **pages;
+ };
 diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
 index 4982998..897f723 100644
 --- a/include/linux/hardirq.h
@@ -7570,6 +9286,19 @@
  #define in_atomic()		((preempt_count() & ~PREEMPT_ACTIVE) != 0)
  
  #ifdef CONFIG_PREEMPT
+diff --git a/include/linux/ide.h b/include/linux/ide.h
+index a3b69c1..bc26b2f 100644
+--- a/include/linux/ide.h
++++ b/include/linux/ide.h
+@@ -26,7 +26,7 @@
+ #include <asm/semaphore.h>
+ #include <asm/mutex.h>
+ 
+-#if defined(CRIS) || defined(FRV)
++#if defined(CONFIG_CRIS) || defined(CONFIG_FRV)
+ # define SUPPORT_VLB_SYNC 0
+ #else
+ # define SUPPORT_VLB_SYNC 1
 diff --git a/include/linux/lguest_launcher.h b/include/linux/lguest_launcher.h
 index 589be3e..e7217dc 100644
 --- a/include/linux/lguest_launcher.h
@@ -7594,6 +9323,26 @@
  	__u8 feature_len;
  	/* The number of bytes of the config array after virtqueues. */
  	__u8 config_len;
+diff --git a/include/linux/libata.h b/include/linux/libata.h
+index 269cdba..b064bfe 100644
+--- a/include/linux/libata.h
++++ b/include/linux/libata.h
+@@ -295,6 +295,7 @@ enum {
+ 	ATA_EH_SOFTRESET	= (1 << 1),
+ 	ATA_EH_HARDRESET	= (1 << 2),
+ 	ATA_EH_ENABLE_LINK	= (1 << 3),
++	ATA_EH_LPM		= (1 << 4),  /* link power management action */
+ 
+ 	ATA_EH_RESET_MASK	= ATA_EH_SOFTRESET | ATA_EH_HARDRESET,
+ 	ATA_EH_PERDEV_MASK	= ATA_EH_REVALIDATE,
+@@ -304,7 +305,6 @@ enum {
+ 	ATA_EHI_RESUME_LINK	= (1 << 1),  /* resume link (reset modifier) */
+ 	ATA_EHI_NO_AUTOPSY	= (1 << 2),  /* no autopsy */
+ 	ATA_EHI_QUIET		= (1 << 3),  /* be quiet */
+-	ATA_EHI_LPM		= (1 << 4),  /* link power management action */
+ 
+ 	ATA_EHI_DID_SOFTRESET	= (1 << 16), /* already soft-reset this port */
+ 	ATA_EHI_DID_HARDRESET	= (1 << 17), /* already soft-reset this port */
 diff --git a/include/linux/mount.h b/include/linux/mount.h
 index 6d3047d..5ee2df2 100644
 --- a/include/linux/mount.h
@@ -7738,6 +9487,28 @@
   * @string: string to be logged
   *
   * This code will escape a string that is passed to it if the string
+diff --git a/kernel/cgroup.c b/kernel/cgroup.c
+index e9c2fb0..53d86b4 100644
+--- a/kernel/cgroup.c
++++ b/kernel/cgroup.c
+@@ -2082,7 +2082,7 @@ static int cgroup_tasks_open(struct inode *unused, struct file *file)
+ 
+ 		kfree(pidarray);
+ 	} else {
+-		ctr->buf = 0;
++		ctr->buf = NULL;
+ 		ctr->bufsz = 0;
+ 	}
+ 	file->private_data = ctr;
+@@ -2614,7 +2614,7 @@ static int proc_cgroupstats_show(struct seq_file *m, void *v)
+ 
+ static int cgroupstats_open(struct inode *inode, struct file *file)
+ {
+-	return single_open(file, proc_cgroupstats_show, 0);
++	return single_open(file, proc_cgroupstats_show, NULL);
+ }
+ 
+ static struct file_operations proc_cgroupstats_operations = {
 diff --git a/kernel/fork.c b/kernel/fork.c
 index dd249c3..9c042f9 100644
 --- a/kernel/fork.c
@@ -7759,9 +9530,18 @@
  	}
  }
 diff --git a/kernel/futex.c b/kernel/futex.c
-index 06968cd..87a6428 100644
+index 06968cd..e43945e 100644
 --- a/kernel/futex.c
 +++ b/kernel/futex.c
+@@ -281,7 +281,7 @@ static int get_futex_key(u32 __user *uaddr, struct rw_semaphore *fshared,
+  */
+ static void get_futex_key_refs(union futex_key *key)
+ {
+-	if (key->both.ptr == 0)
++	if (key->both.ptr == NULL)
+ 		return;
+ 	switch (key->both.offset & (FUT_OFF_INODE|FUT_OFF_MMSHARED)) {
+ 		case FUT_OFF_INODE:
 @@ -2158,7 +2158,7 @@ static struct file_system_type futex_fs_type = {
  	.kill_sb	= kill_anon_super,
  };
@@ -7777,6 +9557,19 @@
  }
 -__initcall(init);
 +__initcall(futex_init);
+diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
+index ff90f04..04ac3a9 100644
+--- a/kernel/futex_compat.c
++++ b/kernel/futex_compat.c
+@@ -30,7 +30,7 @@ fetch_robust_entry(compat_uptr_t *uentry, struct robust_list __user **entry,
+ 	return 0;
+ }
+ 
+-static void __user *futex_uaddr(struct robust_list *entry,
++static void __user *futex_uaddr(struct robust_list __user *entry,
+ 				compat_long_t futex_offset)
+ {
+ 	compat_uptr_t base = ptr_to_compat(entry);
 diff --git a/kernel/relay.c b/kernel/relay.c
 index 4c035a8..d6204a4 100644
 --- a/kernel/relay.c
@@ -7900,6 +9693,19 @@
  /**
   * mod_timer - modify a timer's timeout
   * @timer: the timer to be modified
+diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c
+index 5a402e2..5b6d7f6 100644
+--- a/lib/kobject_uevent.c
++++ b/lib/kobject_uevent.c
+@@ -55,7 +55,7 @@ int kobject_action_type(const char *buf, size_t count,
+ 	enum kobject_action action;
+ 	int ret = -EINVAL;
+ 
+-	if (count && buf[count-1] == '\n')
++	if (count && (buf[count-1] == '\n' || buf[count-1] == '\0'))
+ 		count--;
+ 
+ 	if (!count)
 diff --git a/mm/hugetlb.c b/mm/hugetlb.c
 index 74c1b6b..51c9e2c 100644
 --- a/mm/hugetlb.c
@@ -8000,6 +9806,46 @@
  
  /*
   * kmem_cache_shrink removes empty slabs from the partial lists and sorts
+diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
+index cd75b21..99c4f36 100644
+--- a/mm/sparse-vmemmap.c
++++ b/mm/sparse-vmemmap.c
+@@ -76,7 +76,7 @@ pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node)
+ 		pte_t entry;
+ 		void *p = vmemmap_alloc_block(PAGE_SIZE, node);
+ 		if (!p)
+-			return 0;
++			return NULL;
+ 		entry = pfn_pte(__pa(p) >> PAGE_SHIFT, PAGE_KERNEL);
+ 		set_pte_at(&init_mm, addr, pte, entry);
+ 	}
+@@ -89,7 +89,7 @@ pmd_t * __meminit vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node)
+ 	if (pmd_none(*pmd)) {
+ 		void *p = vmemmap_alloc_block(PAGE_SIZE, node);
+ 		if (!p)
+-			return 0;
++			return NULL;
+ 		pmd_populate_kernel(&init_mm, pmd, p);
+ 	}
+ 	return pmd;
+@@ -101,7 +101,7 @@ pud_t * __meminit vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node)
+ 	if (pud_none(*pud)) {
+ 		void *p = vmemmap_alloc_block(PAGE_SIZE, node);
+ 		if (!p)
+-			return 0;
++			return NULL;
+ 		pud_populate(&init_mm, pud, p);
+ 	}
+ 	return pud;
+@@ -113,7 +113,7 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node)
+ 	if (pgd_none(*pgd)) {
+ 		void *p = vmemmap_alloc_block(PAGE_SIZE, node);
+ 		if (!p)
+-			return 0;
++			return NULL;
+ 		pgd_populate(&init_mm, pgd, p);
+ 	}
+ 	return pgd;
 diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
 index 8fbcefe..480ea90 100644
 --- a/net/8021q/vlan_dev.c
@@ -8348,6 +10194,93 @@
  		x->sel.family = x->props.family;
  
  	if (ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1]) {
+diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h
+index 1aaa2e8..126ca77 100644
+--- a/net/rxrpc/ar-internal.h
++++ b/net/rxrpc/ar-internal.h
+@@ -23,7 +23,7 @@
+ struct rxrpc_crypt {
+ 	union {
+ 		u8	x[FCRYPT_BSIZE];
+-		u32	n[2];
++		__be32	n[2];
+ 	};
+ } __attribute__((aligned(8)));
+ 
+diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c
+index f48434a..d1c296f 100644
+--- a/net/rxrpc/rxkad.c
++++ b/net/rxrpc/rxkad.c
+@@ -261,6 +261,7 @@ static int rxkad_secure_packet(const struct rxrpc_call *call,
+ 		__be32 x[2];
+ 	} tmpbuf __attribute__((aligned(8))); /* must all be in same page */
+ 	__be32 x;
++	u32 y;
+ 	int ret;
+ 
+ 	sp = rxrpc_skb(skb);
+@@ -292,11 +293,11 @@ static int rxkad_secure_packet(const struct rxrpc_call *call,
+ 	sg_init_one(&sg[1], &tmpbuf, sizeof(tmpbuf));
+ 	crypto_blkcipher_encrypt_iv(&desc, &sg[0], &sg[1], sizeof(tmpbuf));
+ 
+-	x = ntohl(tmpbuf.x[1]);
+-	x = (x >> 16) & 0xffff;
+-	if (x == 0)
+-		x = 1; /* zero checksums are not permitted */
+-	sp->hdr.cksum = htons(x);
++	y = ntohl(tmpbuf.x[1]);
++	y = (y >> 16) & 0xffff;
++	if (y == 0)
++		y = 1; /* zero checksums are not permitted */
++	sp->hdr.cksum = htons(y);
+ 
+ 	switch (call->conn->security_level) {
+ 	case RXRPC_SECURITY_PLAIN:
+@@ -314,7 +315,7 @@ static int rxkad_secure_packet(const struct rxrpc_call *call,
+ 		break;
+ 	}
+ 
+-	_leave(" = %d [set %hx]", ret, x);
++	_leave(" = %d [set %hx]", ret, y);
+ 	return ret;
+ }
+ 
+@@ -492,6 +493,7 @@ static int rxkad_verify_packet(const struct rxrpc_call *call,
+ 		__be32 x[2];
+ 	} tmpbuf __attribute__((aligned(8))); /* must all be in same page */
+ 	__be32 x;
++	u16 y;
+ 	__be16 cksum;
+ 	int ret;
+ 
+@@ -526,12 +528,12 @@ static int rxkad_verify_packet(const struct rxrpc_call *call,
+ 	sg_init_one(&sg[1], &tmpbuf, sizeof(tmpbuf));
+ 	crypto_blkcipher_encrypt_iv(&desc, &sg[0], &sg[1], sizeof(tmpbuf));
+ 
+-	x = ntohl(tmpbuf.x[1]);
+-	x = (x >> 16) & 0xffff;
+-	if (x == 0)
+-		x = 1; /* zero checksums are not permitted */
++	y = ntohl(tmpbuf.x[1]);
++	y = (y >> 16) & 0xffff;
++	if (y == 0)
++		y = 1; /* zero checksums are not permitted */
+ 
+-	cksum = htons(x);
++	cksum = htons(y);
+ 	if (sp->hdr.cksum != cksum) {
+ 		*_abort_code = RXKADSEALEDINCON;
+ 		_leave(" = -EPROTO [csum failed]");
+@@ -1001,7 +1003,8 @@ static int rxkad_verify_response(struct rxrpc_connection *conn,
+ 	struct rxrpc_crypt session_key;
+ 	time_t expiry;
+ 	void *ticket;
+-	u32 abort_code, version, kvno, ticket_len, csum, level;
++	u32 abort_code, version, kvno, ticket_len, level;
++	__be32 csum;
+ 	int ret;
+ 
+ 	_enter("{%d,%x}", conn->debug_id, key_serial(conn->server_key));
 diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
 index 9712716..c22d6b6 100644
 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c
@@ -9497,3 +11430,13 @@
  	}
  
  	# If we have no input at all, then there is nothing to report on
+diff --git a/sound/oss/ac97_codec.c b/sound/oss/ac97_codec.c
+index 87a6726..b63839e 100644
+--- a/sound/oss/ac97_codec.c
++++ b/sound/oss/ac97_codec.c
+@@ -1202,3 +1202,5 @@ static int pt101_init(struct ac97_codec * codec)
+ 
+ EXPORT_SYMBOL(ac97_probe_codec);
+ 
++MODULE_LICENSE("GPL");
++

Modified: dists/trunk/linux-2.6/debian/patches/series/1~experimental.1
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/1~experimental.1	(original)
+++ dists/trunk/linux-2.6/debian/patches/series/1~experimental.1	Mon Mar 31 12:46:43 2008
@@ -1,4 +1,4 @@
-+ bugfix/all/patch-2.6.25-rc7-git5
++ bugfix/all/patch-2.6.25-rc7-git6
 + debian/version.patch
 + debian/kernelvariables.patch
 + debian/doc-build-parallel.patch



More information about the Kernel-svn-changes mailing list