Re: Linux 3.18.105

2018-04-15 Thread Harsh Shandilya
On 14 April 2018 1:54:59 AM IST, Greg KH  wrote:
>I'm announcing the release of the 3.18.105 kernel.
>
>All users of the 3.18 kernel series must upgrade.
>
>The updated 3.18.y git tree can be found at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
>linux-3.18.y
>and can be browsed at the normal kernel.org git web browser:
>   
> http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
>
>thanks,
>
>greg k-h
Just realised I actually forgot to report back here after yesterday's tests, 
insomnia's a bitch.

Everything's hunky dory on the OnePlus3T, clean merge and no regressions 
noticed over the past day. Thanks for your continued work on this!
-- 
Harsh Shandilya, PRJKT Development LLC


Re: Linux 3.18.105

2018-04-15 Thread Harsh Shandilya
On 14 April 2018 1:54:59 AM IST, Greg KH  wrote:
>I'm announcing the release of the 3.18.105 kernel.
>
>All users of the 3.18 kernel series must upgrade.
>
>The updated 3.18.y git tree can be found at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
>linux-3.18.y
>and can be browsed at the normal kernel.org git web browser:
>   
> http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
>
>thanks,
>
>greg k-h
Just realised I actually forgot to report back here after yesterday's tests, 
insomnia's a bitch.

Everything's hunky dory on the OnePlus3T, clean merge and no regressions 
noticed over the past day. Thanks for your continued work on this!
-- 
Harsh Shandilya, PRJKT Development LLC


Linux 3.18.105

2018-04-13 Thread Greg KH
/o data

Eric Dumazet (10):
  net: fix possible out-of-bound read in skb_network_protocol()
  pptp: remove a buggy dst release in pptp_connect()
  sctp: do not leak kernel memory to user space
  sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6
  net: fool proof dev_valid_name()
  ip_tunnel: better validate user provided tunnel names
  ipv6: sit: better validate user provided tunnel names
  ip6_gre: better validate user provided tunnel names
  vti6: better validate user provided tunnel names
  ip6_tunnel: better validate user provided tunnel names

Eryu Guan (1):
  ext4: fix off-by-one on max nr_pages in ext4_find_unwritten_pgoff()

Fabio Estevam (1):
  ARM: dts: imx6qdl-wandboard: Fix audio channel swap

Firo Yang (1):
  hdlcdrv: Fix divide by zero in hdlcdrv_ioctl

Geert Uytterhoeven (1):
  sh_eth: Use platform device for printing before register_netdev()

Greg Hackmann (1):
  Revert "xhci: plat: Register shutdown for xhci_plat"

Greg Kroah-Hartman (1):
  Linux 3.18.105

Grygorii Strashko (1):
  net: ethernet: ti: cpsw: adjust cpsw fifos depth for fullduplex flow 
control

Gustavo A. R. Silva (1):
  net: freescale: fix potential null pointer dereference

Hangbin Liu (1):
  l2tp: fix missing print session offset info

Heiko Carstens (1):
  s390: move _text symbol to address higher than zero

Heiner Kallweit (1):
  r8169: fix setting driver_data after register_netdev

Ihar Hrachyshka (1):
  neighbour: update neigh timestamps iff update is effective

Ivan Mikhaylov (1):
  powerpc/[booke|4xx]: Don't clobber TCR[WP] when setting TCR[DIE]

J. Bruce Fields (1):
  lockd: fix lockd shutdown race

Jacob Keller (1):
  e1000e: fix race condition around skb_tstamp_tx()

Jag Raman (1):
  sparc64: ldc abort during vds iso boot

Jan H. Schönherr (1):
  KVM: nVMX: Fix handling of lmsw instruction

Jason A. Donenfeld (4):
  skbuff: return -EMSGSIZE in skb_to_sgvec to prevent overflow
  ipsec: check return value of skb_to_sgvec always
  rxrpc: check return value of skb_to_sgvec always
  virtio_net: check return value of skb_to_sgvec always

Jason Wang (1):
  vhost: correctly remove wait queue during poll failure

Jason Yan (2):
  scsi: libsas: fix memory leak in sas_smp_get_phy_events()
  scsi: libsas: fix error when getting phy events

Jia-Ju Bai (2):
  qlcnic: Fix a sleep-in-atomic bug in qlcnic_82xx_hw_write_wx_2M and 
qlcnic_82xx_hw_read_wx_2M
  mISDN: Fix a sleep-in-atomic bug

Jiri Olsa (1):
  perf trace: Add mmap alias for s390

Jisheng Zhang (1):
  usb: chipidea: properly handle host or gadget initialization failure

Kai-Heng Feng (1):
  sky2: Increase D3 delay to sky2 stops working after suspend

Kees Cook (3):
  bna: Avoid reading past end of buffer
  qlge: Avoid reading past end of buffer
  ray_cs: Avoid reading past end of buffer

Kirill Tkhai (1):
  pidns: disable pid allocation if pid_ns_prepare_proc() is failed in 
alloc_pid()

Liping Zhang (1):
  netfilter: ctnetlink: fix incorrect nf_ct_put during hash resize

Lorenzo Bianconi (1):
  iio: magnetometer: st_magn_spi: fix spi_device_id table

Luca Coelho (1):
  mac80211: bail out from prep_connection() if a reconfig is ongoing

Lv Zheng (1):
  ACPICA: Events: Add runtime stub support for event APIs

Mahesh Bandewar (1):
  ipv6: avoid dad-failures for addresses with NODAD

Marcel Holtmann (1):
  Bluetooth: Send HCI Set Event Mask Page 2 command only when needed

Marcin Nowakowski (2):
  MIPS: mm: fixed mappings: correct initialisation
  MIPS: kprobes: flush_insn_slot should flush only if probe initialised

Maurizio Lombardi (1):
  scsi: bnx2fc: fix race condition in bnx2fc_get_host_stats()

Mel Gorman (1):
  futex: Remove requirement for lock_page() in get_futex_key()

Michael Ellerman (2):
  selftests/powerpc: Fix TM resched DSCR test with some compilers
  powerpc/spufs: Fix coredump of SPU contexts

Michael Schmitz (1):
  fix race in drivers/char/random.c:get_reg()

Miklos Szeredi (1):
  ovl: filter trusted xattr for non-admin

Milian Wolff (1):
  perf report: Ensure the perf DSO mapping matches what libdw sees

Mintz, Yuval (1):
  bnx2x: Allow vfs to disable txvlan offload

Namhyung Kim (1):
  perf tests: Decompress kernel module before objdump

Nathan Chancellor (1):
  virtio_net: check return value of skb_to_sgvec in one more location

Neil Horman (1):
  vmxnet3: ensure that adapter is in proper state during force_close

Nithin Sujir (1):
  bonding: Don't update slave->link until ready to commit

Pan Bian (2):
  usb: dwc3: keystone: check return value
  cx25840: fix unchecked return values

Paolo Abeni (1):
  ipv6: the entire IPv6 header chain must fit the first fragment

Paul Mackerras (1):
  KVM: PPC: Book3S PR: Check copy_to/from_user return values

Pete

Linux 3.18.105

2018-04-13 Thread Greg KH
/o data

Eric Dumazet (10):
  net: fix possible out-of-bound read in skb_network_protocol()
  pptp: remove a buggy dst release in pptp_connect()
  sctp: do not leak kernel memory to user space
  sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6
  net: fool proof dev_valid_name()
  ip_tunnel: better validate user provided tunnel names
  ipv6: sit: better validate user provided tunnel names
  ip6_gre: better validate user provided tunnel names
  vti6: better validate user provided tunnel names
  ip6_tunnel: better validate user provided tunnel names

Eryu Guan (1):
  ext4: fix off-by-one on max nr_pages in ext4_find_unwritten_pgoff()

Fabio Estevam (1):
  ARM: dts: imx6qdl-wandboard: Fix audio channel swap

Firo Yang (1):
  hdlcdrv: Fix divide by zero in hdlcdrv_ioctl

Geert Uytterhoeven (1):
  sh_eth: Use platform device for printing before register_netdev()

Greg Hackmann (1):
  Revert "xhci: plat: Register shutdown for xhci_plat"

Greg Kroah-Hartman (1):
  Linux 3.18.105

Grygorii Strashko (1):
  net: ethernet: ti: cpsw: adjust cpsw fifos depth for fullduplex flow 
control

Gustavo A. R. Silva (1):
  net: freescale: fix potential null pointer dereference

Hangbin Liu (1):
  l2tp: fix missing print session offset info

Heiko Carstens (1):
  s390: move _text symbol to address higher than zero

Heiner Kallweit (1):
  r8169: fix setting driver_data after register_netdev

Ihar Hrachyshka (1):
  neighbour: update neigh timestamps iff update is effective

Ivan Mikhaylov (1):
  powerpc/[booke|4xx]: Don't clobber TCR[WP] when setting TCR[DIE]

J. Bruce Fields (1):
  lockd: fix lockd shutdown race

Jacob Keller (1):
  e1000e: fix race condition around skb_tstamp_tx()

Jag Raman (1):
  sparc64: ldc abort during vds iso boot

Jan H. Schönherr (1):
  KVM: nVMX: Fix handling of lmsw instruction

Jason A. Donenfeld (4):
  skbuff: return -EMSGSIZE in skb_to_sgvec to prevent overflow
  ipsec: check return value of skb_to_sgvec always
  rxrpc: check return value of skb_to_sgvec always
  virtio_net: check return value of skb_to_sgvec always

Jason Wang (1):
  vhost: correctly remove wait queue during poll failure

Jason Yan (2):
  scsi: libsas: fix memory leak in sas_smp_get_phy_events()
  scsi: libsas: fix error when getting phy events

Jia-Ju Bai (2):
  qlcnic: Fix a sleep-in-atomic bug in qlcnic_82xx_hw_write_wx_2M and 
qlcnic_82xx_hw_read_wx_2M
  mISDN: Fix a sleep-in-atomic bug

Jiri Olsa (1):
  perf trace: Add mmap alias for s390

Jisheng Zhang (1):
  usb: chipidea: properly handle host or gadget initialization failure

Kai-Heng Feng (1):
  sky2: Increase D3 delay to sky2 stops working after suspend

Kees Cook (3):
  bna: Avoid reading past end of buffer
  qlge: Avoid reading past end of buffer
  ray_cs: Avoid reading past end of buffer

Kirill Tkhai (1):
  pidns: disable pid allocation if pid_ns_prepare_proc() is failed in 
alloc_pid()

Liping Zhang (1):
  netfilter: ctnetlink: fix incorrect nf_ct_put during hash resize

Lorenzo Bianconi (1):
  iio: magnetometer: st_magn_spi: fix spi_device_id table

Luca Coelho (1):
  mac80211: bail out from prep_connection() if a reconfig is ongoing

Lv Zheng (1):
  ACPICA: Events: Add runtime stub support for event APIs

Mahesh Bandewar (1):
  ipv6: avoid dad-failures for addresses with NODAD

Marcel Holtmann (1):
  Bluetooth: Send HCI Set Event Mask Page 2 command only when needed

Marcin Nowakowski (2):
  MIPS: mm: fixed mappings: correct initialisation
  MIPS: kprobes: flush_insn_slot should flush only if probe initialised

Maurizio Lombardi (1):
  scsi: bnx2fc: fix race condition in bnx2fc_get_host_stats()

Mel Gorman (1):
  futex: Remove requirement for lock_page() in get_futex_key()

Michael Ellerman (2):
  selftests/powerpc: Fix TM resched DSCR test with some compilers
  powerpc/spufs: Fix coredump of SPU contexts

Michael Schmitz (1):
  fix race in drivers/char/random.c:get_reg()

Miklos Szeredi (1):
  ovl: filter trusted xattr for non-admin

Milian Wolff (1):
  perf report: Ensure the perf DSO mapping matches what libdw sees

Mintz, Yuval (1):
  bnx2x: Allow vfs to disable txvlan offload

Namhyung Kim (1):
  perf tests: Decompress kernel module before objdump

Nathan Chancellor (1):
  virtio_net: check return value of skb_to_sgvec in one more location

Neil Horman (1):
  vmxnet3: ensure that adapter is in proper state during force_close

Nithin Sujir (1):
  bonding: Don't update slave->link until ready to commit

Pan Bian (2):
  usb: dwc3: keystone: check return value
  cx25840: fix unchecked return values

Paolo Abeni (1):
  ipv6: the entire IPv6 header chain must fit the first fragment

Paul Mackerras (1):
  KVM: PPC: Book3S PR: Check copy_to/from_user return values

Pete

Re: Linux 3.18.105

2018-04-13 Thread Greg KH
diff --git a/Makefile b/Makefile
index 2eae8b1039aa..ba34e4e77d96 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 3
 PATCHLEVEL = 18
-SUBLEVEL = 104
+SUBLEVEL = 105
 EXTRAVERSION =
 NAME = Diseased Newt
 
diff --git a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi 
b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
index 5fb091675582..6052ea7d9d21 100644
--- a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
@@ -86,6 +86,7 @@
clocks = < 201>;
VDDA-supply = <_2p5v>;
VDDIO-supply = <_3p3v>;
+   lrclk-strength = <3>;
};
 };
 
diff --git a/arch/arm/include/asm/xen/events.h 
b/arch/arm/include/asm/xen/events.h
index 8b1f37bfeeec..b7aadab9b0e8 100644
--- a/arch/arm/include/asm/xen/events.h
+++ b/arch/arm/include/asm/xen/events.h
@@ -16,7 +16,7 @@ static inline int xen_irqs_disabled(struct pt_regs *regs)
return raw_irqs_disabled_flags(regs->ARM_cpsr);
 }
 
-#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((ptr), \
+#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((long long*)(ptr),\
atomic64_t, \
counter), (val))
 
diff --git a/arch/arm/mach-davinci/devices-da8xx.c 
b/arch/arm/mach-davinci/devices-da8xx.c
index b85b781b05fd..e83874ba6e6d 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -761,6 +761,8 @@ static struct platform_device da8xx_dsp = {
.resource   = da8xx_rproc_resources,
 };
 
+static bool rproc_mem_inited __initdata;
+
 #if IS_ENABLED(CONFIG_DA8XX_REMOTEPROC)
 
 static phys_addr_t rproc_base __initdata;
@@ -799,6 +801,8 @@ void __init da8xx_rproc_reserve_cma(void)
ret = dma_declare_contiguous(_dsp.dev, rproc_size, rproc_base, 0);
if (ret)
pr_err("%s: dma_declare_contiguous failed %d\n", __func__, ret);
+   else
+   rproc_mem_inited = true;
 }
 
 #else
@@ -813,6 +817,12 @@ int __init da8xx_register_rproc(void)
 {
int ret;
 
+   if (!rproc_mem_inited) {
+   pr_warn("%s: memory not reserved for DSP, not registering DSP 
device\n",
+   __func__);
+   return -ENOMEM;
+   }
+
ret = platform_device_register(_dsp);
if (ret)
pr_err("%s: can't register DSP device: %d\n", __func__, ret);
diff --git a/arch/arm64/include/asm/futex.h b/arch/arm64/include/asm/futex.h
index 5f750dc96e0f..49d057eb93d6 100644
--- a/arch/arm64/include/asm/futex.h
+++ b/arch/arm64/include/asm/futex.h
@@ -44,16 +44,16 @@
: "memory")
 
 static inline int
-futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
+futex_atomic_op_inuser(unsigned int encoded_op, u32 __user *uaddr)
 {
int op = (encoded_op >> 28) & 7;
int cmp = (encoded_op >> 24) & 15;
-   int oparg = (encoded_op << 8) >> 20;
-   int cmparg = (encoded_op << 20) >> 20;
+   int oparg = (int)(encoded_op << 8) >> 20;
+   int cmparg = (int)(encoded_op << 20) >> 20;
int oldval = 0, ret, tmp;
 
if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
-   oparg = 1 << oparg;
+   oparg = 1U << (oparg & 0x1f);
 
if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
return -EFAULT;
diff --git a/arch/mips/include/asm/kprobes.h b/arch/mips/include/asm/kprobes.h
index daba1f9a4f79..174aedce3167 100644
--- a/arch/mips/include/asm/kprobes.h
+++ b/arch/mips/include/asm/kprobes.h
@@ -40,7 +40,8 @@ typedef union mips_instruction kprobe_opcode_t;
 
 #define flush_insn_slot(p) \
 do {   \
-   flush_icache_range((unsigned long)p->addr,  \
+   if (p->addr)\
+   flush_icache_range((unsigned long)p->addr,  \
   (unsigned long)p->addr + \
   (MAX_INSN_SIZE * sizeof(kprobe_opcode_t)));  \
 } while (0)
diff --git a/arch/mips/mm/pgtable-32.c b/arch/mips/mm/pgtable-32.c
index adc6911ba748..b19a3c506b1e 100644
--- a/arch/mips/mm/pgtable-32.c
+++ b/arch/mips/mm/pgtable-32.c
@@ -51,15 +51,15 @@ void __init pagetable_init(void)
/*
 * Fixed mappings:
 */
-   vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
-   fixrange_init(vaddr, vaddr + FIXADDR_SIZE, pgd_base);
+   vaddr = __fix_to_virt(__end_of_fixed_addresses - 1);
+   fixrange_init(vaddr & PMD_MASK, vaddr + FIXADDR_SIZE, pgd_base);
 
 #ifdef CONFIG_HIGHMEM
/*
 * Permanent kmaps:
 */
vaddr = PKMAP_BASE;
-   fixrange_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);
+   fixrange_init(vaddr & PMD_MASK, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);
 

Re: Linux 3.18.105

2018-04-13 Thread Greg KH
diff --git a/Makefile b/Makefile
index 2eae8b1039aa..ba34e4e77d96 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 3
 PATCHLEVEL = 18
-SUBLEVEL = 104
+SUBLEVEL = 105
 EXTRAVERSION =
 NAME = Diseased Newt
 
diff --git a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi 
b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
index 5fb091675582..6052ea7d9d21 100644
--- a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
@@ -86,6 +86,7 @@
clocks = < 201>;
VDDA-supply = <_2p5v>;
VDDIO-supply = <_3p3v>;
+   lrclk-strength = <3>;
};
 };
 
diff --git a/arch/arm/include/asm/xen/events.h 
b/arch/arm/include/asm/xen/events.h
index 8b1f37bfeeec..b7aadab9b0e8 100644
--- a/arch/arm/include/asm/xen/events.h
+++ b/arch/arm/include/asm/xen/events.h
@@ -16,7 +16,7 @@ static inline int xen_irqs_disabled(struct pt_regs *regs)
return raw_irqs_disabled_flags(regs->ARM_cpsr);
 }
 
-#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((ptr), \
+#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((long long*)(ptr),\
atomic64_t, \
counter), (val))
 
diff --git a/arch/arm/mach-davinci/devices-da8xx.c 
b/arch/arm/mach-davinci/devices-da8xx.c
index b85b781b05fd..e83874ba6e6d 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -761,6 +761,8 @@ static struct platform_device da8xx_dsp = {
.resource   = da8xx_rproc_resources,
 };
 
+static bool rproc_mem_inited __initdata;
+
 #if IS_ENABLED(CONFIG_DA8XX_REMOTEPROC)
 
 static phys_addr_t rproc_base __initdata;
@@ -799,6 +801,8 @@ void __init da8xx_rproc_reserve_cma(void)
ret = dma_declare_contiguous(_dsp.dev, rproc_size, rproc_base, 0);
if (ret)
pr_err("%s: dma_declare_contiguous failed %d\n", __func__, ret);
+   else
+   rproc_mem_inited = true;
 }
 
 #else
@@ -813,6 +817,12 @@ int __init da8xx_register_rproc(void)
 {
int ret;
 
+   if (!rproc_mem_inited) {
+   pr_warn("%s: memory not reserved for DSP, not registering DSP 
device\n",
+   __func__);
+   return -ENOMEM;
+   }
+
ret = platform_device_register(_dsp);
if (ret)
pr_err("%s: can't register DSP device: %d\n", __func__, ret);
diff --git a/arch/arm64/include/asm/futex.h b/arch/arm64/include/asm/futex.h
index 5f750dc96e0f..49d057eb93d6 100644
--- a/arch/arm64/include/asm/futex.h
+++ b/arch/arm64/include/asm/futex.h
@@ -44,16 +44,16 @@
: "memory")
 
 static inline int
-futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
+futex_atomic_op_inuser(unsigned int encoded_op, u32 __user *uaddr)
 {
int op = (encoded_op >> 28) & 7;
int cmp = (encoded_op >> 24) & 15;
-   int oparg = (encoded_op << 8) >> 20;
-   int cmparg = (encoded_op << 20) >> 20;
+   int oparg = (int)(encoded_op << 8) >> 20;
+   int cmparg = (int)(encoded_op << 20) >> 20;
int oldval = 0, ret, tmp;
 
if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
-   oparg = 1 << oparg;
+   oparg = 1U << (oparg & 0x1f);
 
if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
return -EFAULT;
diff --git a/arch/mips/include/asm/kprobes.h b/arch/mips/include/asm/kprobes.h
index daba1f9a4f79..174aedce3167 100644
--- a/arch/mips/include/asm/kprobes.h
+++ b/arch/mips/include/asm/kprobes.h
@@ -40,7 +40,8 @@ typedef union mips_instruction kprobe_opcode_t;
 
 #define flush_insn_slot(p) \
 do {   \
-   flush_icache_range((unsigned long)p->addr,  \
+   if (p->addr)\
+   flush_icache_range((unsigned long)p->addr,  \
   (unsigned long)p->addr + \
   (MAX_INSN_SIZE * sizeof(kprobe_opcode_t)));  \
 } while (0)
diff --git a/arch/mips/mm/pgtable-32.c b/arch/mips/mm/pgtable-32.c
index adc6911ba748..b19a3c506b1e 100644
--- a/arch/mips/mm/pgtable-32.c
+++ b/arch/mips/mm/pgtable-32.c
@@ -51,15 +51,15 @@ void __init pagetable_init(void)
/*
 * Fixed mappings:
 */
-   vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
-   fixrange_init(vaddr, vaddr + FIXADDR_SIZE, pgd_base);
+   vaddr = __fix_to_virt(__end_of_fixed_addresses - 1);
+   fixrange_init(vaddr & PMD_MASK, vaddr + FIXADDR_SIZE, pgd_base);
 
 #ifdef CONFIG_HIGHMEM
/*
 * Permanent kmaps:
 */
vaddr = PKMAP_BASE;
-   fixrange_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);
+   fixrange_init(vaddr & PMD_MASK, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);