From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_PASS, URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7E8C3C0044C for ; Wed, 31 Oct 2018 12:56:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 88E9120664 for ; Wed, 31 Oct 2018 12:56:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="GDJkQVmX" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 88E9120664 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729248AbeJaVyN (ORCPT ); Wed, 31 Oct 2018 17:54:13 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:57990 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729054AbeJaVyM (ORCPT ); Wed, 31 Oct 2018 17:54:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Transfer-Encoding :Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=fDsRJqGLuqH39gTLCq3i/5lToL/hjidrWwVUl9Wf9RY=; b=GDJkQVmX2lq+AWOAWMMlIxYoeo 88wxTGY37mk5DxFnicCa11hKsm7t+ReyZhByHtXBJ0yO07B4WSU/Cde/tcjMpyD3YoLNP0SVZJVNU sYFDwljrEGkLDP6kgeJpAKz8wHcMVB71xWOk3Ff8yUHXQFMJk3qf1bru+r+bx7PNZ0XxMZwxBIwk9 I8jUSMDZQ8y3zkZmsusGGbsbe5Xjq0MoBtodoTKV5RRmtG36icG9K05QDSFeGjlPspiXaAa9HquA/ 7YTg27aZVDX5hTRzrwelHaQRahQf13Y+lF95gzqxaJ2WrkdzTm4BiCuMxKdKLmlfD0xXPTZ++nCSb EE4ZLs1A==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=hirez.programming.kicks-ass.net) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1gHq1x-0007NE-RJ; Wed, 31 Oct 2018 12:55:31 +0000 Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id D33D920297604; Wed, 31 Oct 2018 13:55:26 +0100 (CET) Date: Wed, 31 Oct 2018 13:55:26 +0100 From: Peter Zijlstra To: Borislav Petkov Cc: Segher Boessenkool , Ingo Molnar , Richard Biener , Michael Matz , gcc@gcc.gnu.org, Nadav Amit , Ingo Molnar , linux-kernel@vger.kernel.org, x86@kernel.org, Masahiro Yamada , Sam Ravnborg , Alok Kataria , Christopher Li , Greg Kroah-Hartman , "H. Peter Anvin" , Jan Beulich , Josh Poimboeuf , Juergen Gross , Kate Stewart , Kees Cook , linux-sparse@vger.kernel.org, Philippe Ombredanne , Thomas Gleixner , virtualization@lists.linux-foundation.org, Linus Torvalds , Chris Zankel , Max Filippov , linux-xtensa@linux-xtensa.org, Andrew Morton Subject: Re: PROPOSAL: Extend inline asm syntax with size spec Message-ID: <20181031125526.GA13219@hirez.programming.kicks-ass.net> References: <20181008073128.GL29268@gate.crashing.org> <20181009145330.GT29268@gate.crashing.org> <20181010072240.GB103159@gmail.com> <20181010080324.GV29268@gate.crashing.org> <20181010081906.GA5533@zn.tnic> <20181010185432.GB29268@gate.crashing.org> <20181010191427.GF5533@zn.tnic> <20181013193335.GD31650@zn.tnic> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20181013193335.GD31650@zn.tnic> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Oct 13, 2018 at 09:33:35PM +0200, Borislav Petkov wrote: > Ok, > > with Segher's help I've been playing with his patch ontop of bleeding > edge gcc 9 and here are my observations. Please double-check me for > booboos so that they can be addressed while there's time. > > So here's what I see ontop of 4.19-rc7: > > First marked the alternative asm() as inline and undeffed the "inline" > keyword. I need to do that because of the funky games we do with > "inline" redefinitions in include/linux/compiler_types.h. > > And Segher hinted at either doing: > > asm volatile inline(... > > or > > asm volatile __inline__(... > > but both "inline" variants are defined as macros in that file. > > Which means we either need to #undef inline before using it in asm() or > come up with something cleverer. # git grep -e "\<__inline__\>" | wc -l 488 # git grep -e "\<__inline\>" | wc -l 56 # git grep -e "\" | wc -l 69598 And we already have scripts/checkpatch.pl: # Check for __inline__ and __inline, prefer inline Which suggests we do: git grep -l "\<__inline\(\|__\)\>" | while read file do sed -i -e 's/\<__inline\(\|__\)\>/inline/g' $file done and get it over with. Anyway, with the below patch, I get: text data bss dec hex filename 17385183 5064780 1953892 24403855 1745f8f defconfig-build/vmlinux 17385678 5064780 1953892 24404350 174617e defconfig-build/vmlinux Which shows we inline more (look for asm_volatile for the actual changes). So yes, this seems like something we could work with. --- Documentation/trace/tracepoint-analysis.rst | 2 +- Documentation/translations/ja_JP/SubmittingPatches | 4 +-- Documentation/translations/zh_CN/SubmittingPatches | 4 +-- arch/alpha/include/asm/atomic.h | 12 +++---- arch/alpha/include/asm/bitops.h | 6 ++-- arch/alpha/include/asm/compiler.h | 4 +-- arch/alpha/include/asm/dma.h | 22 ++++++------ arch/alpha/include/asm/floppy.h | 4 +-- arch/alpha/include/asm/irq.h | 2 +- arch/alpha/include/asm/local.h | 4 +-- arch/alpha/include/asm/smp.h | 2 +- arch/arm/mach-iop32x/include/mach/uncompress.h | 2 +- arch/arm/mach-iop33x/include/mach/uncompress.h | 2 +- arch/arm/mach-ixp4xx/include/mach/uncompress.h | 2 +- arch/ia64/hp/common/sba_iommu.c | 2 +- arch/ia64/hp/sim/simeth.c | 2 +- arch/ia64/include/asm/atomic.h | 8 ++--- arch/ia64/include/asm/bitops.h | 34 +++++++++--------- arch/ia64/include/asm/delay.h | 14 ++++---- arch/ia64/include/asm/irq.h | 2 +- arch/ia64/include/asm/page.h | 2 +- arch/ia64/include/asm/sn/leds.h | 2 +- arch/ia64/include/asm/uaccess.h | 4 +-- arch/ia64/include/uapi/asm/rse.h | 12 +++---- arch/ia64/include/uapi/asm/swab.h | 6 ++-- arch/ia64/oprofile/backtrace.c | 4 +-- arch/m68k/include/asm/blinken.h | 2 +- arch/m68k/include/asm/checksum.h | 2 +- arch/m68k/include/asm/dma.h | 32 ++++++++--------- arch/m68k/include/asm/floppy.h | 8 ++--- arch/m68k/include/asm/nettel.h | 8 ++--- arch/m68k/mac/iop.c | 14 ++++---- arch/mips/include/asm/atomic.h | 16 ++++----- arch/mips/include/asm/checksum.h | 2 +- arch/mips/include/asm/dma.h | 20 +++++------ arch/mips/include/asm/jazz.h | 2 +- arch/mips/include/asm/local.h | 4 +-- arch/mips/include/asm/string.h | 8 ++--- arch/mips/kernel/binfmt_elfn32.c | 2 +- arch/nds32/include/asm/swab.h | 4 +-- arch/parisc/include/asm/atomic.h | 20 +++++------ arch/parisc/include/asm/bitops.h | 18 +++++----- arch/parisc/include/asm/checksum.h | 4 +-- arch/parisc/include/asm/compat.h | 2 +- arch/parisc/include/asm/delay.h | 2 +- arch/parisc/include/asm/dma.h | 20 +++++------ arch/parisc/include/asm/ide.h | 8 ++--- arch/parisc/include/asm/irq.h | 2 +- arch/parisc/include/asm/spinlock.h | 12 +++---- arch/powerpc/include/asm/atomic.h | 40 +++++++++++----------- arch/powerpc/include/asm/bitops.h | 28 +++++++-------- arch/powerpc/include/asm/dma.h | 20 +++++------ arch/powerpc/include/asm/edac.h | 2 +- arch/powerpc/include/asm/irq.h | 2 +- arch/powerpc/include/asm/local.h | 14 ++++---- arch/sh/include/asm/pgtable_64.h | 2 +- arch/sh/include/asm/processor_32.h | 4 +-- arch/sh/include/cpu-sh3/cpu/dac.h | 6 ++-- arch/x86/include/asm/alternative.h | 14 ++++---- arch/x86/um/asm/checksum.h | 4 +-- arch/x86/um/asm/checksum_32.h | 4 +-- arch/xtensa/include/asm/checksum.h | 14 ++++---- arch/xtensa/include/asm/cmpxchg.h | 4 +-- arch/xtensa/include/asm/irq.h | 2 +- block/partitions/amiga.c | 2 +- drivers/atm/he.c | 6 ++-- drivers/atm/idt77252.c | 6 ++-- drivers/gpu/drm/mga/mga_drv.h | 2 +- drivers/gpu/drm/mga/mga_state.c | 14 ++++---- drivers/gpu/drm/r128/r128_drv.h | 2 +- drivers/gpu/drm/r128/r128_state.c | 14 ++++---- drivers/gpu/drm/via/via_irq.c | 2 +- drivers/gpu/drm/via/via_verifier.c | 30 ++++++++-------- drivers/isdn/hardware/eicon/platform.h | 14 ++++---- drivers/isdn/i4l/isdn_net.c | 14 ++++---- drivers/isdn/i4l/isdn_net.h | 8 ++--- drivers/media/pci/ivtv/ivtv-ioctl.c | 2 +- drivers/net/ethernet/sun/sungem.c | 8 ++--- drivers/net/ethernet/sun/sunhme.c | 6 ++-- drivers/net/hamradio/baycom_ser_fdx.c | 2 +- drivers/net/wan/lapbether.c | 2 +- drivers/net/wan/n2.c | 4 +-- drivers/parisc/led.c | 4 +-- drivers/parisc/sba_iommu.c | 2 +- drivers/parport/parport_gsc.c | 2 +- drivers/parport/parport_gsc.h | 4 +-- drivers/parport/parport_pc.c | 2 +- drivers/scsi/lpfc/lpfc_scsi.c | 2 +- drivers/scsi/pcmcia/sym53c500_cs.c | 4 +-- drivers/scsi/qla2xxx/qla_inline.h | 2 +- drivers/scsi/qla2xxx/qla_os.c | 4 +-- drivers/staging/rtl8723bs/core/rtw_pwrctrl.c | 4 +-- drivers/staging/rtl8723bs/core/rtw_wlan_util.c | 2 +- drivers/staging/rtl8723bs/include/drv_types.h | 6 ++-- drivers/staging/rtl8723bs/include/ieee80211.h | 6 ++-- drivers/staging/rtl8723bs/include/osdep_service.h | 10 +++--- .../rtl8723bs/include/osdep_service_linux.h | 14 ++++---- drivers/staging/rtl8723bs/include/rtw_mlme.h | 14 ++++---- drivers/staging/rtl8723bs/include/rtw_recv.h | 16 ++++----- drivers/staging/rtl8723bs/include/sta_info.h | 2 +- drivers/staging/rtl8723bs/include/wifi.h | 14 ++++---- drivers/staging/rtl8723bs/include/wlan_bssdef.h | 2 +- drivers/tty/amiserial.c | 2 +- drivers/tty/serial/ip22zilog.c | 2 +- drivers/tty/serial/sunsab.c | 4 +-- drivers/tty/serial/sunzilog.c | 2 +- drivers/video/fbdev/core/fbcon.c | 20 +++++------ drivers/video/fbdev/ffb.c | 2 +- drivers/video/fbdev/intelfb/intelfbdrv.c | 10 +++--- drivers/video/fbdev/intelfb/intelfbhw.c | 2 +- drivers/w1/masters/matrox_w1.c | 4 +-- fs/coda/coda_linux.h | 6 ++-- fs/freevxfs/vxfs_inode.c | 2 +- fs/nfsd/nfsfh.h | 4 +-- include/acpi/platform/acgcc.h | 2 +- include/acpi/platform/acintel.h | 2 +- include/asm-generic/ide_iops.h | 8 ++--- include/linux/atalk.h | 4 +-- include/linux/ceph/messenger.h | 2 +- include/linux/compiler_types.h | 4 +-- include/linux/hdlc.h | 4 +-- include/linux/inetdevice.h | 8 ++--- include/linux/parport.h | 4 +-- include/linux/parport_pc.h | 22 ++++++------ include/net/ax25.h | 2 +- include/net/checksum.h | 2 +- include/net/dn_nsp.h | 16 ++++----- include/net/ip.h | 2 +- include/net/ip6_checksum.h | 2 +- include/net/ipx.h | 10 +++--- include/net/llc_c_ev.h | 4 +-- include/net/llc_conn.h | 4 +-- include/net/llc_s_ev.h | 2 +- include/net/netrom.h | 8 ++--- include/net/scm.h | 14 ++++---- include/net/udplite.h | 2 +- include/net/x25.h | 8 ++--- include/net/xfrm.h | 18 +++++----- include/uapi/linux/atm.h | 4 +-- include/uapi/linux/atmsap.h | 2 +- include/uapi/linux/map_to_7segment.h | 2 +- include/uapi/linux/netfilter_arp/arp_tables.h | 2 +- include/uapi/linux/netfilter_bridge/ebtables.h | 2 +- include/uapi/linux/netfilter_ipv4/ip_tables.h | 2 +- include/uapi/linux/netfilter_ipv6/ip6_tables.h | 2 +- include/video/newport.h | 12 +++---- lib/zstd/mem.h | 2 +- net/appletalk/atalk_proc.c | 4 +-- net/appletalk/ddp.c | 2 +- net/core/neighbour.c | 2 +- net/core/scm.c | 2 +- net/decnet/dn_nsp_in.c | 2 +- net/decnet/dn_nsp_out.c | 2 +- net/decnet/dn_route.c | 2 +- net/decnet/dn_table.c | 4 +-- net/ipv4/igmp.c | 2 +- net/ipv6/af_inet6.c | 2 +- net/ipv6/icmp.c | 4 +-- net/ipv6/udp.c | 4 +-- net/lapb/lapb_iface.c | 4 +-- net/llc/llc_input.c | 2 +- scripts/checkpatch.pl | 8 ++--- scripts/genksyms/keywords.c | 4 +-- scripts/kernel-doc | 4 +-- sound/sparc/amd7930.c | 6 ++-- 165 files changed, 547 insertions(+), 547 deletions(-) diff --git a/Documentation/trace/tracepoint-analysis.rst b/Documentation/trace/tracepoint-analysis.rst index 716326b9f152..edd735a9ba2d 100644 --- a/Documentation/trace/tracepoint-analysis.rst +++ b/Documentation/trace/tracepoint-analysis.rst @@ -315,7 +315,7 @@ To see where within the function pixmanFillsse2 things are going wrong: 0.00 : 34eeb: 0f 18 08 prefetcht0 (%eax) : } : - : extern __inline void __attribute__((__gnu_inline__, __always_inline__, _ + : extern inline void __attribute__((__gnu_inline__, __always_inline__, _ : _mm_store_si128 (__m128i *__P, __m128i __B) : { : *__P = __B; 12.40 : 34eee: 66 0f 7f 80 40 ff ff movdqa %xmm0,-0xc0(%eax) diff --git a/Documentation/translations/ja_JP/SubmittingPatches b/Documentation/translations/ja_JP/SubmittingPatches index 02139656463e..188846f1184b 100644 --- a/Documentation/translations/ja_JP/SubmittingPatches +++ b/Documentation/translations/ja_JP/SubmittingPatches @@ -676,8 +676,8 @@ gcc においては、マクロと同じくらい軽いです。 いくつかの特定のケース)や「 static inline 」関数を使うことができないような 場所(マクロの引数の文字列連結のような)にだけ使われるべきです。 -「 static inline 」は「 static __inline__ 」や「 extern inline 」や -「 extern __inline__ 」よりも適切です。 +「 static inline 」は「 static inline 」や「 extern inline 」や +「 extern inline 」よりも適切です。 4) 設計に凝りすぎるな diff --git a/Documentation/translations/zh_CN/SubmittingPatches b/Documentation/translations/zh_CN/SubmittingPatches index e9098da8f1a4..5c39b6c487b5 100644 --- a/Documentation/translations/zh_CN/SubmittingPatches +++ b/Documentation/translations/zh_CN/SubmittingPatches @@ -377,8 +377,8 @@ Static inline 函数相比宏来说,是好得多的选择。Static inline 函 宏只在 static inline 函数不是最优的时候[在 fast paths 里有很少的独立的 案例],或者不可能用 static inline 函数的时候[例如字符串分配]。 -应该用 'static inline' 而不是 'static __inline__', 'extern inline' 和 -'extern __inline__' 。 +应该用 'static inline' 而不是 'static inline', 'extern inline' 和 +'extern inline' 。 4) 不要过度设计 diff --git a/arch/alpha/include/asm/atomic.h b/arch/alpha/include/asm/atomic.h index 150a1c5d6a2c..f8d494bcd72c 100644 --- a/arch/alpha/include/asm/atomic.h +++ b/arch/alpha/include/asm/atomic.h @@ -40,7 +40,7 @@ */ #define ATOMIC_OP(op, asm_op) \ -static __inline__ void atomic_##op(int i, atomic_t * v) \ +static inline void atomic_##op(int i, atomic_t * v) \ { \ unsigned long temp; \ __asm__ __volatile__( \ @@ -93,7 +93,7 @@ static inline int atomic_fetch_##op##_relaxed(int i, atomic_t *v) \ } #define ATOMIC64_OP(op, asm_op) \ -static __inline__ void atomic64_##op(long i, atomic64_t * v) \ +static inline void atomic64_##op(long i, atomic64_t * v) \ { \ unsigned long temp; \ __asm__ __volatile__( \ @@ -109,7 +109,7 @@ static __inline__ void atomic64_##op(long i, atomic64_t * v) \ } \ #define ATOMIC64_OP_RETURN(op, asm_op) \ -static __inline__ long atomic64_##op##_return_relaxed(long i, atomic64_t * v) \ +static inline long atomic64_##op##_return_relaxed(long i, atomic64_t * v) \ { \ long temp, result; \ __asm__ __volatile__( \ @@ -128,7 +128,7 @@ static __inline__ long atomic64_##op##_return_relaxed(long i, atomic64_t * v) \ } #define ATOMIC64_FETCH_OP(op, asm_op) \ -static __inline__ long atomic64_fetch_##op##_relaxed(long i, atomic64_t * v) \ +static inline long atomic64_fetch_##op##_relaxed(long i, atomic64_t * v) \ { \ long temp, result; \ __asm__ __volatile__( \ @@ -214,7 +214,7 @@ ATOMIC_OPS(xor, xor) * Atomically adds @a to @v, so long as it was not @u. * Returns the old value of @v. */ -static __inline__ int atomic_fetch_add_unless(atomic_t *v, int a, int u) +static inline int atomic_fetch_add_unless(atomic_t *v, int a, int u) { int c, new, old; smp_mb(); @@ -246,7 +246,7 @@ static __inline__ int atomic_fetch_add_unless(atomic_t *v, int a, int u) * Atomically adds @a to @v, so long as it was not @u. * Returns the old value of @v. */ -static __inline__ long atomic64_fetch_add_unless(atomic64_t *v, long a, long u) +static inline long atomic64_fetch_add_unless(atomic64_t *v, long a, long u) { long c, new, old; smp_mb(); diff --git a/arch/alpha/include/asm/bitops.h b/arch/alpha/include/asm/bitops.h index ca43f4d0b937..4d08bd8243c0 100644 --- a/arch/alpha/include/asm/bitops.h +++ b/arch/alpha/include/asm/bitops.h @@ -82,7 +82,7 @@ clear_bit_unlock(unsigned long nr, volatile void * addr) /* * WARNING: non atomic version. */ -static __inline__ void +static inline void __clear_bit(unsigned long nr, volatile void * addr) { int *m = ((int *) addr) + (nr >> 5); @@ -118,7 +118,7 @@ change_bit(unsigned long nr, volatile void * addr) /* * WARNING: non atomic version. */ -static __inline__ void +static inline void __change_bit(unsigned long nr, volatile void * addr) { int *m = ((int *) addr) + (nr >> 5); @@ -272,7 +272,7 @@ test_and_change_bit(unsigned long nr, volatile void * addr) /* * WARNING: non atomic version. */ -static __inline__ int +static inline int __test_and_change_bit(unsigned long nr, volatile void * addr) { unsigned long mask = 1 << (nr & 0x1f); diff --git a/arch/alpha/include/asm/compiler.h b/arch/alpha/include/asm/compiler.h index 5159ba259d65..11176dc182f8 100644 --- a/arch/alpha/include/asm/compiler.h +++ b/arch/alpha/include/asm/compiler.h @@ -10,8 +10,8 @@ #include #undef inline -#undef __inline__ -#undef __inline +#undef inline +#undef inline #undef __always_inline #define __always_inline inline __attribute__((always_inline)) diff --git a/arch/alpha/include/asm/dma.h b/arch/alpha/include/asm/dma.h index 28610ea7786d..73bf4154b6a5 100644 --- a/arch/alpha/include/asm/dma.h +++ b/arch/alpha/include/asm/dma.h @@ -198,20 +198,20 @@ extern spinlock_t dma_spin_lock; -static __inline__ unsigned long claim_dma_lock(void) +static inline unsigned long claim_dma_lock(void) { unsigned long flags; spin_lock_irqsave(&dma_spin_lock, flags); return flags; } -static __inline__ void release_dma_lock(unsigned long flags) +static inline void release_dma_lock(unsigned long flags) { spin_unlock_irqrestore(&dma_spin_lock, flags); } /* enable/disable a specific DMA channel */ -static __inline__ void enable_dma(unsigned int dmanr) +static inline void enable_dma(unsigned int dmanr) { if (dmanr<=3) dma_outb(dmanr, DMA1_MASK_REG); @@ -219,7 +219,7 @@ static __inline__ void enable_dma(unsigned int dmanr) dma_outb(dmanr & 3, DMA2_MASK_REG); } -static __inline__ void disable_dma(unsigned int dmanr) +static inline void disable_dma(unsigned int dmanr) { if (dmanr<=3) dma_outb(dmanr | 4, DMA1_MASK_REG); @@ -234,7 +234,7 @@ static __inline__ void disable_dma(unsigned int dmanr) * --- In order to do that, the DMA routines below should --- * --- only be used while interrupts are disabled! --- */ -static __inline__ void clear_dma_ff(unsigned int dmanr) +static inline void clear_dma_ff(unsigned int dmanr) { if (dmanr<=3) dma_outb(0, DMA1_CLEAR_FF_REG); @@ -243,7 +243,7 @@ static __inline__ void clear_dma_ff(unsigned int dmanr) } /* set mode (above) for a specific DMA channel */ -static __inline__ void set_dma_mode(unsigned int dmanr, char mode) +static inline void set_dma_mode(unsigned int dmanr, char mode) { if (dmanr<=3) dma_outb(mode | dmanr, DMA1_MODE_REG); @@ -252,7 +252,7 @@ static __inline__ void set_dma_mode(unsigned int dmanr, char mode) } /* set extended mode for a specific DMA channel */ -static __inline__ void set_dma_ext_mode(unsigned int dmanr, char ext_mode) +static inline void set_dma_ext_mode(unsigned int dmanr, char ext_mode) { if (dmanr<=3) dma_outb(ext_mode | dmanr, DMA1_EXT_MODE_REG); @@ -264,7 +264,7 @@ static __inline__ void set_dma_ext_mode(unsigned int dmanr, char ext_mode) * This is used for successive transfers when we know the contents of * the lower 16 bits of the DMA current address register. */ -static __inline__ void set_dma_page(unsigned int dmanr, unsigned int pagenr) +static inline void set_dma_page(unsigned int dmanr, unsigned int pagenr) { switch(dmanr) { case 0: @@ -302,7 +302,7 @@ static __inline__ void set_dma_page(unsigned int dmanr, unsigned int pagenr) /* Set transfer address & page bits for specific DMA channel. * Assumes dma flipflop is clear. */ -static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) +static inline void set_dma_addr(unsigned int dmanr, unsigned int a) { if (dmanr <= 3) { dma_outb( a & 0xff, ((dmanr&3)<<1) + IO_DMA1_BASE ); @@ -323,7 +323,7 @@ static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) * Assumes dma flip-flop is clear. * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7. */ -static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) +static inline void set_dma_count(unsigned int dmanr, unsigned int count) { count--; if (dmanr <= 3) { @@ -344,7 +344,7 @@ static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) * * Assumes DMA flip-flop is clear. */ -static __inline__ int get_dma_residue(unsigned int dmanr) +static inline int get_dma_residue(unsigned int dmanr) { unsigned int io_port = (dmanr<=3)? ((dmanr&3)<<1) + 1 + IO_DMA1_BASE : ((dmanr&3)<<2) + 2 + IO_DMA2_BASE; diff --git a/arch/alpha/include/asm/floppy.h b/arch/alpha/include/asm/floppy.h index 942924756cf2..37947c2a8336 100644 --- a/arch/alpha/include/asm/floppy.h +++ b/arch/alpha/include/asm/floppy.h @@ -34,7 +34,7 @@ #define fd_dma_setup(addr,size,mode,io) alpha_fd_dma_setup(addr,size,mode,io) -static __inline__ int +static inline int alpha_fd_dma_setup(char *addr, unsigned long size, int mode, int io) { static unsigned long prev_size; @@ -72,7 +72,7 @@ alpha_fd_dma_setup(char *addr, unsigned long size, int mode, int io) #endif /* CONFIG_PCI */ -__inline__ void virtual_dma_init(void) +inline void virtual_dma_init(void) { /* Nothing to do on an Alpha */ } diff --git a/arch/alpha/include/asm/irq.h b/arch/alpha/include/asm/irq.h index 4d17cacd1462..bfad8598e972 100644 --- a/arch/alpha/include/asm/irq.h +++ b/arch/alpha/include/asm/irq.h @@ -77,7 +77,7 @@ # define NR_IRQS 16 #endif -static __inline__ int irq_canonicalize(int irq) +static inline int irq_canonicalize(int irq) { /* * XXX is this true for all Alpha's? The old serial driver diff --git a/arch/alpha/include/asm/local.h b/arch/alpha/include/asm/local.h index fab26a1c93d5..b13615ee5431 100644 --- a/arch/alpha/include/asm/local.h +++ b/arch/alpha/include/asm/local.h @@ -18,7 +18,7 @@ typedef struct #define local_add(i,l) atomic_long_add((i),(&(l)->a)) #define local_sub(i,l) atomic_long_sub((i),(&(l)->a)) -static __inline__ long local_add_return(long i, local_t * l) +static inline long local_add_return(long i, local_t * l) { long temp, result; __asm__ __volatile__( @@ -35,7 +35,7 @@ static __inline__ long local_add_return(long i, local_t * l) return result; } -static __inline__ long local_sub_return(long i, local_t * l) +static inline long local_sub_return(long i, local_t * l) { long temp, result; __asm__ __volatile__( diff --git a/arch/alpha/include/asm/smp.h b/arch/alpha/include/asm/smp.h index 2264ae72673b..f5e49acf60a4 100644 --- a/arch/alpha/include/asm/smp.h +++ b/arch/alpha/include/asm/smp.h @@ -9,7 +9,7 @@ /* HACK: Cabrio WHAMI return value is bogus if more than 8 bits used.. :-( */ -static __inline__ unsigned char +static inline unsigned char __hard_smp_processor_id(void) { register unsigned char __r0 __asm__("$0"); diff --git a/arch/arm/mach-iop32x/include/mach/uncompress.h b/arch/arm/mach-iop32x/include/mach/uncompress.h index ed4ac3e28fa1..24d1dd4ea27f 100644 --- a/arch/arm/mach-iop32x/include/mach/uncompress.h +++ b/arch/arm/mach-iop32x/include/mach/uncompress.h @@ -23,7 +23,7 @@ static inline void flush(void) { } -static __inline__ void __arch_decomp_setup(unsigned long arch_id) +static inline void __arch_decomp_setup(unsigned long arch_id) { if (machine_is_iq80321()) uart_base = (volatile u8 *)IQ80321_UART; diff --git a/arch/arm/mach-iop33x/include/mach/uncompress.h b/arch/arm/mach-iop33x/include/mach/uncompress.h index 62b71cde1f79..9fc5a2aae8de 100644 --- a/arch/arm/mach-iop33x/include/mach/uncompress.h +++ b/arch/arm/mach-iop33x/include/mach/uncompress.h @@ -23,7 +23,7 @@ static inline void flush(void) { } -static __inline__ void __arch_decomp_setup(unsigned long arch_id) +static inline void __arch_decomp_setup(unsigned long arch_id) { if (machine_is_iq80331() || machine_is_iq80332()) uart_base = (volatile u32 *)IOP33X_UART0_PHYS; diff --git a/arch/arm/mach-ixp4xx/include/mach/uncompress.h b/arch/arm/mach-ixp4xx/include/mach/uncompress.h index 7b25c0225e46..d9e698f7d7e1 100644 --- a/arch/arm/mach-ixp4xx/include/mach/uncompress.h +++ b/arch/arm/mach-ixp4xx/include/mach/uncompress.h @@ -35,7 +35,7 @@ static void flush(void) { } -static __inline__ void __arch_decomp_setup(unsigned long arch_id) +static inline void __arch_decomp_setup(unsigned long arch_id) { /* * Some boards are using UART2 as console diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index 671ce1e3f6f2..d597f810bb84 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c @@ -107,7 +107,7 @@ extern int swiotlb_late_init_with_default_size (size_t size); #error FULL_VALID_PDIR and ASSERT_PDIR_SANITY are mutually exclusive #endif -#define SBA_INLINE __inline__ +#define SBA_INLINE inline /* #define SBA_INLINE */ #ifdef DEBUG_SBA_INIT diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c index f39ef2b4ed72..e0620283dfc6 100644 --- a/arch/ia64/hp/sim/simeth.c +++ b/arch/ia64/hp/sim/simeth.c @@ -246,7 +246,7 @@ simeth_open(struct net_device *dev) } /* copied from lapbether.c */ -static __inline__ int dev_is_ethdev(struct net_device *dev) +static inline int dev_is_ethdev(struct net_device *dev) { return ( dev->type == ARPHRD_ETHER && strncmp(dev->name, "dummy", 5)); } diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h index 206530d0751b..9408fa96e2dd 100644 --- a/arch/ia64/include/asm/atomic.h +++ b/arch/ia64/include/asm/atomic.h @@ -29,7 +29,7 @@ #define atomic64_set(v,i) WRITE_ONCE(((v)->counter), (i)) #define ATOMIC_OP(op, c_op) \ -static __inline__ int \ +static inline int \ ia64_atomic_##op (int i, atomic_t *v) \ { \ __s32 old, new; \ @@ -44,7 +44,7 @@ ia64_atomic_##op (int i, atomic_t *v) \ } #define ATOMIC_FETCH_OP(op, c_op) \ -static __inline__ int \ +static inline int \ ia64_atomic_fetch_##op (int i, atomic_t *v) \ { \ __s32 old, new; \ @@ -124,7 +124,7 @@ ATOMIC_FETCH_OP(xor, ^) #undef ATOMIC_OP #define ATOMIC64_OP(op, c_op) \ -static __inline__ long \ +static inline long \ ia64_atomic64_##op (__s64 i, atomic64_t *v) \ { \ __s64 old, new; \ @@ -139,7 +139,7 @@ ia64_atomic64_##op (__s64 i, atomic64_t *v) \ } #define ATOMIC64_FETCH_OP(op, c_op) \ -static __inline__ long \ +static inline long \ ia64_atomic64_fetch_##op (__s64 i, atomic64_t *v) \ { \ __s64 old, new; \ diff --git a/arch/ia64/include/asm/bitops.h b/arch/ia64/include/asm/bitops.h index 56a774bf13fa..d3249d081ab6 100644 --- a/arch/ia64/include/asm/bitops.h +++ b/arch/ia64/include/asm/bitops.h @@ -36,7 +36,7 @@ * * bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1). */ -static __inline__ void +static inline void set_bit (int nr, volatile void *addr) { __u32 bit, old, new; @@ -61,7 +61,7 @@ set_bit (int nr, volatile void *addr) * If it's called on the same region of memory simultaneously, the effect * may be that only one operation succeeds. */ -static __inline__ void +static inline void __set_bit (int nr, volatile void *addr) { *((__u32 *) addr + (nr >> 5)) |= (1 << (nr & 31)); @@ -77,7 +77,7 @@ __set_bit (int nr, volatile void *addr) * you should call smp_mb__before_atomic() and/or smp_mb__after_atomic() * in order to ensure changes are visible on other processors. */ -static __inline__ void +static inline void clear_bit (int nr, volatile void *addr) { __u32 mask, old, new; @@ -101,7 +101,7 @@ clear_bit (int nr, volatile void *addr) * clear_bit_unlock() is atomic and may not be reordered. It does * contain a memory barrier suitable for unlock type operations. */ -static __inline__ void +static inline void clear_bit_unlock (int nr, volatile void *addr) { __u32 mask, old, new; @@ -125,7 +125,7 @@ clear_bit_unlock (int nr, volatile void *addr) * Similarly to clear_bit_unlock, the implementation uses a store * with release semantics. See also arch_spin_unlock(). */ -static __inline__ void +static inline void __clear_bit_unlock(int nr, void *addr) { __u32 * const m = (__u32 *) addr + (nr >> 5); @@ -143,7 +143,7 @@ __clear_bit_unlock(int nr, void *addr) * If it's called on the same region of memory simultaneously, the effect * may be that only one operation succeeds. */ -static __inline__ void +static inline void __clear_bit (int nr, volatile void *addr) { *((__u32 *) addr + (nr >> 5)) &= ~(1 << (nr & 31)); @@ -158,7 +158,7 @@ __clear_bit (int nr, volatile void *addr) * Note that @nr may be almost arbitrarily large; this function is not * restricted to acting on a single-word quantity. */ -static __inline__ void +static inline void change_bit (int nr, volatile void *addr) { __u32 bit, old, new; @@ -183,7 +183,7 @@ change_bit (int nr, volatile void *addr) * If it's called on the same region of memory simultaneously, the effect * may be that only one operation succeeds. */ -static __inline__ void +static inline void __change_bit (int nr, volatile void *addr) { *((__u32 *) addr + (nr >> 5)) ^= (1 << (nr & 31)); @@ -197,7 +197,7 @@ __change_bit (int nr, volatile void *addr) * This operation is atomic and cannot be reordered. * It also implies the acquisition side of the memory barrier. */ -static __inline__ int +static inline int test_and_set_bit (int nr, volatile void *addr) { __u32 bit, old, new; @@ -232,7 +232,7 @@ test_and_set_bit (int nr, volatile void *addr) * If two examples of this operation race, one can appear to succeed * but actually fail. You must protect multiple accesses with a lock. */ -static __inline__ int +static inline int __test_and_set_bit (int nr, volatile void *addr) { __u32 *p = (__u32 *) addr + (nr >> 5); @@ -251,7 +251,7 @@ __test_and_set_bit (int nr, volatile void *addr) * This operation is atomic and cannot be reordered. * It also implies the acquisition side of the memory barrier. */ -static __inline__ int +static inline int test_and_clear_bit (int nr, volatile void *addr) { __u32 mask, old, new; @@ -277,7 +277,7 @@ test_and_clear_bit (int nr, volatile void *addr) * If two examples of this operation race, one can appear to succeed * but actually fail. You must protect multiple accesses with a lock. */ -static __inline__ int +static inline int __test_and_clear_bit(int nr, volatile void * addr) { __u32 *p = (__u32 *) addr + (nr >> 5); @@ -296,7 +296,7 @@ __test_and_clear_bit(int nr, volatile void * addr) * This operation is atomic and cannot be reordered. * It also implies the acquisition side of the memory barrier. */ -static __inline__ int +static inline int test_and_change_bit (int nr, volatile void *addr) { __u32 bit, old, new; @@ -320,7 +320,7 @@ test_and_change_bit (int nr, volatile void *addr) * * This operation is non-atomic and can be reordered. */ -static __inline__ int +static inline int __test_and_change_bit (int nr, void *addr) { __u32 old, bit = (1 << (nr & 31)); @@ -331,7 +331,7 @@ __test_and_change_bit (int nr, void *addr) return (old & bit) != 0; } -static __inline__ int +static inline int test_bit (int nr, const volatile void *addr) { return 1 & (((const volatile __u32 *) addr)[nr >> 5] >> (nr & 31)); @@ -359,7 +359,7 @@ ffz (unsigned long x) * * Undefined if no bit exists, so code should check against 0 first. */ -static __inline__ unsigned long +static inline unsigned long __ffs (unsigned long x) { unsigned long result; @@ -427,7 +427,7 @@ __fls (unsigned long x) * hweightN: returns the hamming weight (i.e. the number * of bits set) of a N-bit word */ -static __inline__ unsigned long __arch_hweight64(unsigned long x) +static inline unsigned long __arch_hweight64(unsigned long x) { unsigned long result; result = ia64_popcnt(x); diff --git a/arch/ia64/include/asm/delay.h b/arch/ia64/include/asm/delay.h index 0227ac586107..9f7e60496feb 100644 --- a/arch/ia64/include/asm/delay.h +++ b/arch/ia64/include/asm/delay.h @@ -20,14 +20,14 @@ #include #include -static __inline__ void +static inline void ia64_set_itm (unsigned long val) { ia64_setreg(_IA64_REG_CR_ITM, val); ia64_srlz_d(); } -static __inline__ unsigned long +static inline unsigned long ia64_get_itm (void) { unsigned long result; @@ -37,27 +37,27 @@ ia64_get_itm (void) return result; } -static __inline__ void +static inline void ia64_set_itv (unsigned long val) { ia64_setreg(_IA64_REG_CR_ITV, val); ia64_srlz_d(); } -static __inline__ unsigned long +static inline unsigned long ia64_get_itv (void) { return ia64_getreg(_IA64_REG_CR_ITV); } -static __inline__ void +static inline void ia64_set_itc (unsigned long val) { ia64_setreg(_IA64_REG_AR_ITC, val); ia64_srlz_d(); } -static __inline__ unsigned long +static inline unsigned long ia64_get_itc (void) { unsigned long result; @@ -75,7 +75,7 @@ ia64_get_itc (void) extern void ia64_delay_loop (unsigned long loops); -static __inline__ void +static inline void __delay (unsigned long loops) { if (unlikely(loops < 1)) diff --git a/arch/ia64/include/asm/irq.h b/arch/ia64/include/asm/irq.h index 8b84a55ed38a..eab8defa30de 100644 --- a/arch/ia64/include/asm/irq.h +++ b/arch/ia64/include/asm/irq.h @@ -16,7 +16,7 @@ #include #include -static __inline__ int +static inline int irq_canonicalize (int irq) { /* diff --git a/arch/ia64/include/asm/page.h b/arch/ia64/include/asm/page.h index 5798bd2b462c..858317be10cb 100644 --- a/arch/ia64/include/asm/page.h +++ b/arch/ia64/include/asm/page.h @@ -154,7 +154,7 @@ typedef union ia64_va { extern unsigned int hpage_shift; #endif -static __inline__ int +static inline int get_order (unsigned long size) { long double d = size - 1; diff --git a/arch/ia64/include/asm/sn/leds.h b/arch/ia64/include/asm/sn/leds.h index 66cf8c4d92c9..48aabe95523f 100644 --- a/arch/ia64/include/asm/sn/leds.h +++ b/arch/ia64/include/asm/sn/leds.h @@ -22,7 +22,7 @@ * Basic macros for flashing the LEDS on an SGI SN. */ -static __inline__ void +static inline void set_led_bits(u8 value, u8 mask) { pda->led_state = (pda->led_state & ~mask) | (value & mask); diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h index a74524f2d625..386bfe1550c0 100644 --- a/arch/ia64/include/asm/uaccess.h +++ b/arch/ia64/include/asm/uaccess.h @@ -259,7 +259,7 @@ extern unsigned long __strnlen_user (const char __user *, long); }) #define ARCH_HAS_TRANSLATE_MEM_PTR 1 -static __inline__ void * +static inline void * xlate_dev_mem_ptr(phys_addr_t p) { struct page *page; @@ -277,7 +277,7 @@ xlate_dev_mem_ptr(phys_addr_t p) /* * Convert a virtual cached kernel memory pointer to an uncached pointer */ -static __inline__ void * +static inline void * xlate_dev_kmem_ptr(void *p) { struct page *page; diff --git a/arch/ia64/include/uapi/asm/rse.h b/arch/ia64/include/uapi/asm/rse.h index 6d260af571c5..55e66cae10e1 100644 --- a/arch/ia64/include/uapi/asm/rse.h +++ b/arch/ia64/include/uapi/asm/rse.h @@ -8,11 +8,11 @@ * * Register stack engine related helper functions. This file may be * used in applications, so be careful about the name-space and give - * some consideration to non-GNU C compilers (though __inline__ is + * some consideration to non-GNU C compilers (though inline is * fine). */ -static __inline__ unsigned long +static inline unsigned long ia64_rse_slot_num (unsigned long *addr) { return (((unsigned long) addr) >> 3) & 0x3f; @@ -21,7 +21,7 @@ ia64_rse_slot_num (unsigned long *addr) /* * Return TRUE if ADDR is the address of an RNAT slot. */ -static __inline__ unsigned long +static inline unsigned long ia64_rse_is_rnat_slot (unsigned long *addr) { return ia64_rse_slot_num(addr) == 0x3f; @@ -31,7 +31,7 @@ ia64_rse_is_rnat_slot (unsigned long *addr) * Returns the address of the RNAT slot that covers the slot at * address SLOT_ADDR. */ -static __inline__ unsigned long * +static inline unsigned long * ia64_rse_rnat_addr (unsigned long *slot_addr) { return (unsigned long *) ((unsigned long) slot_addr | (0x3f << 3)); @@ -42,7 +42,7 @@ ia64_rse_rnat_addr (unsigned long *slot_addr) * ending at BSP. This isn't simply (BSP-BSPSTORE)/8 because every 64th slot stores * ar.rnat. */ -static __inline__ unsigned long +static inline unsigned long ia64_rse_num_regs (unsigned long *bspstore, unsigned long *bsp) { unsigned long slots = (bsp - bspstore); @@ -54,7 +54,7 @@ ia64_rse_num_regs (unsigned long *bspstore, unsigned long *bsp) * The inverse of the above: given bspstore and the number of * registers, calculate ar.bsp. */ -static __inline__ unsigned long * +static inline unsigned long * ia64_rse_skip_regs (unsigned long *addr, long num_regs) { long delta = ia64_rse_slot_num(addr) + num_regs; diff --git a/arch/ia64/include/uapi/asm/swab.h b/arch/ia64/include/uapi/asm/swab.h index 79f3fef1a05e..5b5df7a05f7e 100644 --- a/arch/ia64/include/uapi/asm/swab.h +++ b/arch/ia64/include/uapi/asm/swab.h @@ -11,7 +11,7 @@ #include #include -static __inline__ __attribute_const__ __u64 __arch_swab64(__u64 x) +static inline __attribute_const__ __u64 __arch_swab64(__u64 x) { __u64 result; @@ -20,13 +20,13 @@ static __inline__ __attribute_const__ __u64 __arch_swab64(__u64 x) } #define __arch_swab64 __arch_swab64 -static __inline__ __attribute_const__ __u32 __arch_swab32(__u32 x) +static inline __attribute_const__ __u32 __arch_swab32(__u32 x) { return __arch_swab64(x) >> 32; } #define __arch_swab32 __arch_swab32 -static __inline__ __attribute_const__ __u16 __arch_swab16(__u16 x) +static inline __attribute_const__ __u16 __arch_swab16(__u16 x) { return __arch_swab64(x) >> 48; } diff --git a/arch/ia64/oprofile/backtrace.c b/arch/ia64/oprofile/backtrace.c index 6a219a946050..c9c8282f7a73 100644 --- a/arch/ia64/oprofile/backtrace.c +++ b/arch/ia64/oprofile/backtrace.c @@ -32,7 +32,7 @@ typedef struct } ia64_backtrace_t; /* Returns non-zero if the PC is in the Interrupt Vector Table */ -static __inline__ int in_ivt_code(unsigned long pc) +static inline int in_ivt_code(unsigned long pc) { extern char ia64_ivt[]; return (pc >= (u_long)ia64_ivt && pc < (u_long)ia64_ivt+32768); @@ -41,7 +41,7 @@ static __inline__ int in_ivt_code(unsigned long pc) /* * Unwind to next stack frame. */ -static __inline__ int next_frame(ia64_backtrace_t *bt) +static inline int next_frame(ia64_backtrace_t *bt) { /* * Avoid unsightly console message from unw_unwind() when attempting diff --git a/arch/m68k/include/asm/blinken.h b/arch/m68k/include/asm/blinken.h index 0626582a7db4..2e5e74d74f82 100644 --- a/arch/m68k/include/asm/blinken.h +++ b/arch/m68k/include/asm/blinken.h @@ -19,7 +19,7 @@ extern unsigned char hp300_ledstate; -static __inline__ void blinken_leds(int on, int off) +static inline void blinken_leds(int on, int off) { if (MACH_IS_HP300) { diff --git a/arch/m68k/include/asm/checksum.h b/arch/m68k/include/asm/checksum.h index f9b94e4b94f9..3724307be4a1 100644 --- a/arch/m68k/include/asm/checksum.h +++ b/arch/m68k/include/asm/checksum.h @@ -116,7 +116,7 @@ static inline __sum16 ip_compute_csum(const void *buff, int len) } #define _HAVE_ARCH_IPV6_CSUM -static __inline__ __sum16 +static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, __u8 proto, __wsum sum) { diff --git a/arch/m68k/include/asm/dma.h b/arch/m68k/include/asm/dma.h index ae2021964e32..a451778fe112 100644 --- a/arch/m68k/include/asm/dma.h +++ b/arch/m68k/include/asm/dma.h @@ -123,7 +123,7 @@ extern unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; #if !defined(CONFIG_M5272) /* enable/disable a specific DMA channel */ -static __inline__ void enable_dma(unsigned int dmanr) +static inline void enable_dma(unsigned int dmanr) { volatile unsigned short *dmawp; @@ -135,7 +135,7 @@ static __inline__ void enable_dma(unsigned int dmanr) dmawp[MCFDMA_DCR] |= MCFDMA_DCR_EEXT; } -static __inline__ void disable_dma(unsigned int dmanr) +static inline void disable_dma(unsigned int dmanr) { volatile unsigned short *dmawp; volatile unsigned char *dmapb; @@ -162,12 +162,12 @@ static __inline__ void disable_dma(unsigned int dmanr) * * This is a NOP for ColdFire. Provide a stub for compatibility. */ -static __inline__ void clear_dma_ff(unsigned int dmanr) +static inline void clear_dma_ff(unsigned int dmanr) { } /* set mode (above) for a specific DMA channel */ -static __inline__ void set_dma_mode(unsigned int dmanr, char mode) +static inline void set_dma_mode(unsigned int dmanr, char mode) { volatile unsigned char *dmabp; @@ -210,7 +210,7 @@ static __inline__ void set_dma_mode(unsigned int dmanr, char mode) } /* Set transfer address for specific DMA channel */ -static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) +static inline void set_dma_addr(unsigned int dmanr, unsigned int a) { volatile unsigned short *dmawp; volatile unsigned int *dmalp; @@ -247,7 +247,7 @@ static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) * Specific for Coldfire - sets device address. * Should be called after the mode set call, and before set DMA address. */ -static __inline__ void set_dma_device_addr(unsigned int dmanr, unsigned int a) +static inline void set_dma_device_addr(unsigned int dmanr, unsigned int a) { #ifdef DMA_DEBUG printk("set_dma_device_addr(dmanr=%d,a=%x)\n", dmanr, a); @@ -259,7 +259,7 @@ static __inline__ void set_dma_device_addr(unsigned int dmanr, unsigned int a) /* * NOTE 2: "count" represents _bytes_. */ -static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) +static inline void set_dma_count(unsigned int dmanr, unsigned int count) { volatile unsigned short *dmawp; @@ -277,7 +277,7 @@ static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) * still in progress will return unpredictable results. * Otherwise, it returns the number of _bytes_ left to transfer. */ -static __inline__ int get_dma_residue(unsigned int dmanr) +static inline int get_dma_residue(unsigned int dmanr) { volatile unsigned short *dmawp; unsigned short count; @@ -316,7 +316,7 @@ static __inline__ int get_dma_residue(unsigned int dmanr) */ /* enable/disable a specific DMA channel */ -static __inline__ void enable_dma(unsigned int dmanr) +static inline void enable_dma(unsigned int dmanr) { volatile unsigned int *dmalp; @@ -328,7 +328,7 @@ static __inline__ void enable_dma(unsigned int dmanr) dmalp[MCFDMA_DMR] |= MCFDMA_DMR_EN; } -static __inline__ void disable_dma(unsigned int dmanr) +static inline void disable_dma(unsigned int dmanr) { volatile unsigned int *dmalp; @@ -353,12 +353,12 @@ static __inline__ void disable_dma(unsigned int dmanr) * * This is a NOP for ColdFire. Provide a stub for compatibility. */ -static __inline__ void clear_dma_ff(unsigned int dmanr) +static inline void clear_dma_ff(unsigned int dmanr) { } /* set mode (above) for a specific DMA channel */ -static __inline__ void set_dma_mode(unsigned int dmanr, char mode) +static inline void set_dma_mode(unsigned int dmanr, char mode) { volatile unsigned int *dmalp; @@ -396,7 +396,7 @@ static __inline__ void set_dma_mode(unsigned int dmanr, char mode) } /* Set transfer address for specific DMA channel */ -static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) +static inline void set_dma_addr(unsigned int dmanr, unsigned int a) { volatile unsigned int *dmalp; @@ -431,7 +431,7 @@ static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) * Specific for Coldfire - sets device address. * Should be called after the mode set call, and before set DMA address. */ -static __inline__ void set_dma_device_addr(unsigned int dmanr, unsigned int a) +static inline void set_dma_device_addr(unsigned int dmanr, unsigned int a) { #ifdef DMA_DEBUG printk("set_dma_device_addr(dmanr=%d,a=%x)\n", dmanr, a); @@ -445,7 +445,7 @@ static __inline__ void set_dma_device_addr(unsigned int dmanr, unsigned int a) * * NOTE 3: While a 32-bit register, "count" is only a maximum 24-bit value. */ -static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) +static inline void set_dma_count(unsigned int dmanr, unsigned int count) { volatile unsigned int *dmalp; @@ -463,7 +463,7 @@ static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) * still in progress will return unpredictable results. * Otherwise, it returns the number of _bytes_ left to transfer. */ -static __inline__ int get_dma_residue(unsigned int dmanr) +static inline int get_dma_residue(unsigned int dmanr) { volatile unsigned int *dmalp; unsigned int count; diff --git a/arch/m68k/include/asm/floppy.h b/arch/m68k/include/asm/floppy.h index c3b9ad6732fc..7a658a5ca746 100644 --- a/arch/m68k/include/asm/floppy.h +++ b/arch/m68k/include/asm/floppy.h @@ -50,20 +50,20 @@ static int doing_pdma=0; extern spinlock_t dma_spin_lock; -static __inline__ unsigned long claim_dma_lock(void) +static inline unsigned long claim_dma_lock(void) { unsigned long flags; spin_lock_irqsave(&dma_spin_lock, flags); return flags; } -static __inline__ void release_dma_lock(unsigned long flags) +static inline void release_dma_lock(unsigned long flags) { spin_unlock_irqrestore(&dma_spin_lock, flags); } -static __inline__ unsigned char fd_inb(int port) +static inline unsigned char fd_inb(int port) { if(MACH_IS_Q40) return inb_p(port); @@ -72,7 +72,7 @@ static __inline__ unsigned char fd_inb(int port) return 0; } -static __inline__ void fd_outb(unsigned char value, int port) +static inline void fd_outb(unsigned char value, int port) { if(MACH_IS_Q40) outb_p(value, port); diff --git a/arch/m68k/include/asm/nettel.h b/arch/m68k/include/asm/nettel.h index 45716ead7b9d..4037377c0048 100644 --- a/arch/m68k/include/asm/nettel.h +++ b/arch/m68k/include/asm/nettel.h @@ -47,14 +47,14 @@ extern volatile unsigned short ppdata; * These functions defined to give quasi generic access to the * PPIO bits used for DTR/DCD. */ -static __inline__ unsigned int mcf_getppdata(void) +static inline unsigned int mcf_getppdata(void) { volatile unsigned short *pp; pp = (volatile unsigned short *) MCFSIM_PADAT; return((unsigned int) *pp); } -static __inline__ void mcf_setppdata(unsigned int mask, unsigned int bits) +static inline void mcf_setppdata(unsigned int mask, unsigned int bits) { volatile unsigned short *pp; pp = (volatile unsigned short *) MCFSIM_PADAT; @@ -86,12 +86,12 @@ static __inline__ void mcf_setppdata(unsigned int mask, unsigned int bits) * These functions defined to give quasi generic access to the * PPIO bits used for DTR/DCD. */ -static __inline__ unsigned int mcf_getppdata(void) +static inline unsigned int mcf_getppdata(void) { return readw(MCFSIM_PBDAT); } -static __inline__ void mcf_setppdata(unsigned int mask, unsigned int bits) +static inline void mcf_setppdata(unsigned int mask, unsigned int bits) { writew((readw(MCFSIM_PBDAT) & ~mask) | bits, MCFSIM_PBDAT); } diff --git a/arch/m68k/mac/iop.c b/arch/m68k/mac/iop.c index 9bfa17015768..288b07530802 100644 --- a/arch/m68k/mac/iop.c +++ b/arch/m68k/mac/iop.c @@ -161,42 +161,42 @@ irqreturn_t iop_ism_irq(int, void *); * Private access functions */ -static __inline__ void iop_loadaddr(volatile struct mac_iop *iop, __u16 addr) +static inline void iop_loadaddr(volatile struct mac_iop *iop, __u16 addr) { iop->ram_addr_lo = addr; iop->ram_addr_hi = addr >> 8; } -static __inline__ __u8 iop_readb(volatile struct mac_iop *iop, __u16 addr) +static inline __u8 iop_readb(volatile struct mac_iop *iop, __u16 addr) { iop->ram_addr_lo = addr; iop->ram_addr_hi = addr >> 8; return iop->ram_data; } -static __inline__ void iop_writeb(volatile struct mac_iop *iop, __u16 addr, __u8 data) +static inline void iop_writeb(volatile struct mac_iop *iop, __u16 addr, __u8 data) { iop->ram_addr_lo = addr; iop->ram_addr_hi = addr >> 8; iop->ram_data = data; } -static __inline__ void iop_stop(volatile struct mac_iop *iop) +static inline void iop_stop(volatile struct mac_iop *iop) { iop->status_ctrl &= ~IOP_RUN; } -static __inline__ void iop_start(volatile struct mac_iop *iop) +static inline void iop_start(volatile struct mac_iop *iop) { iop->status_ctrl = IOP_RUN | IOP_AUTOINC; } -static __inline__ void iop_bypass(volatile struct mac_iop *iop) +static inline void iop_bypass(volatile struct mac_iop *iop) { iop->status_ctrl |= IOP_BYPASS; } -static __inline__ void iop_interrupt(volatile struct mac_iop *iop) +static inline void iop_interrupt(volatile struct mac_iop *iop) { iop->status_ctrl |= IOP_IRQ; } diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h index d4ea7a5b60cf..c179c12cd7c7 100644 --- a/arch/mips/include/asm/atomic.h +++ b/arch/mips/include/asm/atomic.h @@ -53,7 +53,7 @@ #define atomic_set(v, i) WRITE_ONCE((v)->counter, (i)) #define ATOMIC_OP(op, c_op, asm_op) \ -static __inline__ void atomic_##op(int i, atomic_t * v) \ +static inline void atomic_##op(int i, atomic_t * v) \ { \ if (kernel_uses_llsc) { \ int temp; \ @@ -77,7 +77,7 @@ static __inline__ void atomic_##op(int i, atomic_t * v) \ } #define ATOMIC_OP_RETURN(op, c_op, asm_op) \ -static __inline__ int atomic_##op##_return_relaxed(int i, atomic_t * v) \ +static inline int atomic_##op##_return_relaxed(int i, atomic_t * v) \ { \ int result; \ \ @@ -109,7 +109,7 @@ static __inline__ int atomic_##op##_return_relaxed(int i, atomic_t * v) \ } #define ATOMIC_FETCH_OP(op, c_op, asm_op) \ -static __inline__ int atomic_fetch_##op##_relaxed(int i, atomic_t * v) \ +static inline int atomic_fetch_##op##_relaxed(int i, atomic_t * v) \ { \ int result; \ \ @@ -178,7 +178,7 @@ ATOMIC_OPS(xor, ^=, xor) * Atomically test @v and subtract @i if @v is greater or equal than @i. * The function returns the old value of @v minus @i. */ -static __inline__ int atomic_sub_if_positive(int i, atomic_t * v) +static inline int atomic_sub_if_positive(int i, atomic_t * v) { int result; @@ -246,7 +246,7 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v) #define atomic64_set(v, i) WRITE_ONCE((v)->counter, (i)) #define ATOMIC64_OP(op, c_op, asm_op) \ -static __inline__ void atomic64_##op(long i, atomic64_t * v) \ +static inline void atomic64_##op(long i, atomic64_t * v) \ { \ if (kernel_uses_llsc) { \ long temp; \ @@ -270,7 +270,7 @@ static __inline__ void atomic64_##op(long i, atomic64_t * v) \ } #define ATOMIC64_OP_RETURN(op, c_op, asm_op) \ -static __inline__ long atomic64_##op##_return_relaxed(long i, atomic64_t * v) \ +static inline long atomic64_##op##_return_relaxed(long i, atomic64_t * v) \ { \ long result; \ \ @@ -302,7 +302,7 @@ static __inline__ long atomic64_##op##_return_relaxed(long i, atomic64_t * v) \ } #define ATOMIC64_FETCH_OP(op, c_op, asm_op) \ -static __inline__ long atomic64_fetch_##op##_relaxed(long i, atomic64_t * v) \ +static inline long atomic64_fetch_##op##_relaxed(long i, atomic64_t * v) \ { \ long result; \ \ @@ -372,7 +372,7 @@ ATOMIC64_OPS(xor, ^=, xor) * Atomically test @v and subtract @i if @v is greater or equal than @i. * The function returns the old value of @v minus @i. */ -static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v) +static inline long atomic64_sub_if_positive(long i, atomic64_t * v) { long result; diff --git a/arch/mips/include/asm/checksum.h b/arch/mips/include/asm/checksum.h index e8161e4dfde7..93f3fbc6e917 100644 --- a/arch/mips/include/asm/checksum.h +++ b/arch/mips/include/asm/checksum.h @@ -215,7 +215,7 @@ static inline __sum16 ip_compute_csum(const void *buff, int len) } #define _HAVE_ARCH_IPV6_CSUM -static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, +static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, __u8 proto, __wsum sum) diff --git a/arch/mips/include/asm/dma.h b/arch/mips/include/asm/dma.h index be726b943530..85cc6b5df8c9 100644 --- a/arch/mips/include/asm/dma.h +++ b/arch/mips/include/asm/dma.h @@ -157,20 +157,20 @@ extern spinlock_t dma_spin_lock; -static __inline__ unsigned long claim_dma_lock(void) +static inline unsigned long claim_dma_lock(void) { unsigned long flags; spin_lock_irqsave(&dma_spin_lock, flags); return flags; } -static __inline__ void release_dma_lock(unsigned long flags) +static inline void release_dma_lock(unsigned long flags) { spin_unlock_irqrestore(&dma_spin_lock, flags); } /* enable/disable a specific DMA channel */ -static __inline__ void enable_dma(unsigned int dmanr) +static inline void enable_dma(unsigned int dmanr) { if (dmanr<=3) dma_outb(dmanr, DMA1_MASK_REG); @@ -178,7 +178,7 @@ static __inline__ void enable_dma(unsigned int dmanr) dma_outb(dmanr & 3, DMA2_MASK_REG); } -static __inline__ void disable_dma(unsigned int dmanr) +static inline void disable_dma(unsigned int dmanr) { if (dmanr<=3) dma_outb(dmanr | 4, DMA1_MASK_REG); @@ -193,7 +193,7 @@ static __inline__ void disable_dma(unsigned int dmanr) * --- In order to do that, the DMA routines below should --- * --- only be used while holding the DMA lock ! --- */ -static __inline__ void clear_dma_ff(unsigned int dmanr) +static inline void clear_dma_ff(unsigned int dmanr) { if (dmanr<=3) dma_outb(0, DMA1_CLEAR_FF_REG); @@ -202,7 +202,7 @@ static __inline__ void clear_dma_ff(unsigned int dmanr) } /* set mode (above) for a specific DMA channel */ -static __inline__ void set_dma_mode(unsigned int dmanr, char mode) +static inline void set_dma_mode(unsigned int dmanr, char mode) { if (dmanr<=3) dma_outb(mode | dmanr, DMA1_MODE_REG); @@ -215,7 +215,7 @@ static __inline__ void set_dma_mode(unsigned int dmanr, char mode) * the lower 16 bits of the DMA current address register, but a 64k boundary * may have been crossed. */ -static __inline__ void set_dma_page(unsigned int dmanr, char pagenr) +static inline void set_dma_page(unsigned int dmanr, char pagenr) { switch(dmanr) { case 0: @@ -246,7 +246,7 @@ static __inline__ void set_dma_page(unsigned int dmanr, char pagenr) /* Set transfer address & page bits for specific DMA channel. * Assumes dma flipflop is clear. */ -static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) +static inline void set_dma_addr(unsigned int dmanr, unsigned int a) { set_dma_page(dmanr, a>>16); if (dmanr <= 3) { @@ -267,7 +267,7 @@ static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) * Assumes dma flip-flop is clear. * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7. */ -static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) +static inline void set_dma_count(unsigned int dmanr, unsigned int count) { count--; if (dmanr <= 3) { @@ -288,7 +288,7 @@ static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) * * Assumes DMA flip-flop is clear. */ -static __inline__ int get_dma_residue(unsigned int dmanr) +static inline int get_dma_residue(unsigned int dmanr) { unsigned int io_port = (dmanr<=3)? ((dmanr&3)<<1) + 1 + IO_DMA1_BASE : ((dmanr&3)<<2) + 2 + IO_DMA2_BASE; diff --git a/arch/mips/include/asm/jazz.h b/arch/mips/include/asm/jazz.h index a61970d01a81..9401780519eb 100644 --- a/arch/mips/include/asm/jazz.h +++ b/arch/mips/include/asm/jazz.h @@ -72,7 +72,7 @@ #ifndef __ASSEMBLY__ -static __inline__ void pica_set_led(unsigned int bits) +static inline void pica_set_led(unsigned int bits) { volatile unsigned int *led_register = (unsigned int *) PICA_LED; diff --git a/arch/mips/include/asm/local.h b/arch/mips/include/asm/local.h index ac8264eca1e9..056b4a5e00f4 100644 --- a/arch/mips/include/asm/local.h +++ b/arch/mips/include/asm/local.h @@ -27,7 +27,7 @@ typedef struct /* * Same as above, but return the result value */ -static __inline__ long local_add_return(long i, local_t * l) +static inline long local_add_return(long i, local_t * l) { unsigned long result; @@ -72,7 +72,7 @@ static __inline__ long local_add_return(long i, local_t * l) return result; } -static __inline__ long local_sub_return(long i, local_t * l) +static inline long local_sub_return(long i, local_t * l) { unsigned long result; diff --git a/arch/mips/include/asm/string.h b/arch/mips/include/asm/string.h index 29030cb398ee..8764cba30e50 100644 --- a/arch/mips/include/asm/string.h +++ b/arch/mips/include/asm/string.h @@ -20,7 +20,7 @@ #ifndef IN_STRING_C #define __HAVE_ARCH_STRCPY -static __inline__ char *strcpy(char *__dest, __const__ char *__src) +static inline char *strcpy(char *__dest, __const__ char *__src) { char *__xdest = __dest; @@ -42,7 +42,7 @@ static __inline__ char *strcpy(char *__dest, __const__ char *__src) } #define __HAVE_ARCH_STRNCPY -static __inline__ char *strncpy(char *__dest, __const__ char *__src, size_t __n) +static inline char *strncpy(char *__dest, __const__ char *__src, size_t __n) { char *__xdest = __dest; @@ -70,7 +70,7 @@ static __inline__ char *strncpy(char *__dest, __const__ char *__src, size_t __n) } #define __HAVE_ARCH_STRCMP -static __inline__ int strcmp(__const__ char *__cs, __const__ char *__ct) +static inline int strcmp(__const__ char *__cs, __const__ char *__ct) { int __res; @@ -100,7 +100,7 @@ static __inline__ int strcmp(__const__ char *__cs, __const__ char *__ct) #endif /* !defined(IN_STRING_C) */ #define __HAVE_ARCH_STRNCMP -static __inline__ int +static inline int strncmp(__const__ char *__cs, __const__ char *__ct, size_t __count) { int __res; diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c index 7a12763d553a..c84b0d718dd4 100644 --- a/arch/mips/kernel/binfmt_elfn32.c +++ b/arch/mips/kernel/binfmt_elfn32.c @@ -82,7 +82,7 @@ struct elf_prpsinfo32 #define init_elf_binfmt init_elfn32_binfmt #define jiffies_to_timeval jiffies_to_old_timeval32 -static __inline__ void +static inline void jiffies_to_old_timeval32(unsigned long jiffies, struct old_timeval32 *value) { /* diff --git a/arch/nds32/include/asm/swab.h b/arch/nds32/include/asm/swab.h index e01a755a37d2..8e87949e59fd 100644 --- a/arch/nds32/include/asm/swab.h +++ b/arch/nds32/include/asm/swab.h @@ -7,7 +7,7 @@ #include #include -static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x) +static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) { __asm__("wsbh %0, %0\n\t" /* word swap byte within halfword */ "rotri %0, %0, #16\n" @@ -16,7 +16,7 @@ static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x) return x; } -static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 x) +static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) { __asm__("wsbh %0, %0\n" /* word swap byte within halfword */ :"=r"(x) diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h index 118953d41763..60efc1896b5e 100644 --- a/arch/parisc/include/asm/atomic.h +++ b/arch/parisc/include/asm/atomic.h @@ -56,7 +56,7 @@ extern arch_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned; * are atomic, so a reader never sees inconsistent values. */ -static __inline__ void atomic_set(atomic_t *v, int i) +static inline void atomic_set(atomic_t *v, int i) { unsigned long flags; _atomic_spin_lock_irqsave(v, flags); @@ -68,7 +68,7 @@ static __inline__ void atomic_set(atomic_t *v, int i) #define atomic_set_release(v, i) atomic_set((v), (i)) -static __inline__ int atomic_read(const atomic_t *v) +static inline int atomic_read(const atomic_t *v) { return READ_ONCE((v)->counter); } @@ -78,7 +78,7 @@ static __inline__ int atomic_read(const atomic_t *v) #define atomic_xchg(v, new) (xchg(&((v)->counter), new)) #define ATOMIC_OP(op, c_op) \ -static __inline__ void atomic_##op(int i, atomic_t *v) \ +static inline void atomic_##op(int i, atomic_t *v) \ { \ unsigned long flags; \ \ @@ -88,7 +88,7 @@ static __inline__ void atomic_##op(int i, atomic_t *v) \ } \ #define ATOMIC_OP_RETURN(op, c_op) \ -static __inline__ int atomic_##op##_return(int i, atomic_t *v) \ +static inline int atomic_##op##_return(int i, atomic_t *v) \ { \ unsigned long flags; \ int ret; \ @@ -101,7 +101,7 @@ static __inline__ int atomic_##op##_return(int i, atomic_t *v) \ } #define ATOMIC_FETCH_OP(op, c_op) \ -static __inline__ int atomic_fetch_##op(int i, atomic_t *v) \ +static inline int atomic_fetch_##op(int i, atomic_t *v) \ { \ unsigned long flags; \ int ret; \ @@ -143,7 +143,7 @@ ATOMIC_OPS(xor, ^=) #define ATOMIC64_INIT(i) { (i) } #define ATOMIC64_OP(op, c_op) \ -static __inline__ void atomic64_##op(s64 i, atomic64_t *v) \ +static inline void atomic64_##op(s64 i, atomic64_t *v) \ { \ unsigned long flags; \ \ @@ -153,7 +153,7 @@ static __inline__ void atomic64_##op(s64 i, atomic64_t *v) \ } \ #define ATOMIC64_OP_RETURN(op, c_op) \ -static __inline__ s64 atomic64_##op##_return(s64 i, atomic64_t *v) \ +static inline s64 atomic64_##op##_return(s64 i, atomic64_t *v) \ { \ unsigned long flags; \ s64 ret; \ @@ -166,7 +166,7 @@ static __inline__ s64 atomic64_##op##_return(s64 i, atomic64_t *v) \ } #define ATOMIC64_FETCH_OP(op, c_op) \ -static __inline__ s64 atomic64_fetch_##op(s64 i, atomic64_t *v) \ +static inline s64 atomic64_fetch_##op(s64 i, atomic64_t *v) \ { \ unsigned long flags; \ s64 ret; \ @@ -201,7 +201,7 @@ ATOMIC64_OPS(xor, ^=) #undef ATOMIC64_OP_RETURN #undef ATOMIC64_OP -static __inline__ void +static inline void atomic64_set(atomic64_t *v, s64 i) { unsigned long flags; @@ -212,7 +212,7 @@ atomic64_set(atomic64_t *v, s64 i) _atomic_spin_unlock_irqrestore(v, flags); } -static __inline__ s64 +static inline s64 atomic64_read(const atomic64_t *v) { return READ_ONCE((v)->counter); diff --git a/arch/parisc/include/asm/bitops.h b/arch/parisc/include/asm/bitops.h index 53252d4f9a57..58d4dc3c6ddf 100644 --- a/arch/parisc/include/asm/bitops.h +++ b/arch/parisc/include/asm/bitops.h @@ -33,7 +33,7 @@ * __*_bit() are "relaxed" and don't use spinlock or volatile. */ -static __inline__ void set_bit(int nr, volatile unsigned long * addr) +static inline void set_bit(int nr, volatile unsigned long * addr) { unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); unsigned long flags; @@ -44,7 +44,7 @@ static __inline__ void set_bit(int nr, volatile unsigned long * addr) _atomic_spin_unlock_irqrestore(addr, flags); } -static __inline__ void clear_bit(int nr, volatile unsigned long * addr) +static inline void clear_bit(int nr, volatile unsigned long * addr) { unsigned long mask = ~(1UL << CHOP_SHIFTCOUNT(nr)); unsigned long flags; @@ -55,7 +55,7 @@ static __inline__ void clear_bit(int nr, volatile unsigned long * addr) _atomic_spin_unlock_irqrestore(addr, flags); } -static __inline__ void change_bit(int nr, volatile unsigned long * addr) +static inline void change_bit(int nr, volatile unsigned long * addr) { unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); unsigned long flags; @@ -66,7 +66,7 @@ static __inline__ void change_bit(int nr, volatile unsigned long * addr) _atomic_spin_unlock_irqrestore(addr, flags); } -static __inline__ int test_and_set_bit(int nr, volatile unsigned long * addr) +static inline int test_and_set_bit(int nr, volatile unsigned long * addr) { unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); unsigned long old; @@ -84,7 +84,7 @@ static __inline__ int test_and_set_bit(int nr, volatile unsigned long * addr) return set; } -static __inline__ int test_and_clear_bit(int nr, volatile unsigned long * addr) +static inline int test_and_clear_bit(int nr, volatile unsigned long * addr) { unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); unsigned long old; @@ -102,7 +102,7 @@ static __inline__ int test_and_clear_bit(int nr, volatile unsigned long * addr) return set; } -static __inline__ int test_and_change_bit(int nr, volatile unsigned long * addr) +static inline int test_and_change_bit(int nr, volatile unsigned long * addr) { unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); unsigned long oldbit; @@ -140,7 +140,7 @@ static __inline__ int test_and_change_bit(int nr, volatile unsigned long * addr) * cycles for each mispredicted branch. */ -static __inline__ unsigned long __ffs(unsigned long x) +static inline unsigned long __ffs(unsigned long x) { unsigned long ret; @@ -178,7 +178,7 @@ static __inline__ unsigned long __ffs(unsigned long x) * This is defined the same way as the libc and compiler builtin * ffs routines, therefore differs in spirit from the above ffz (man ffs). */ -static __inline__ int ffs(int x) +static inline int ffs(int x) { return x ? (__ffs((unsigned long)x) + 1) : 0; } @@ -188,7 +188,7 @@ static __inline__ int ffs(int x) * fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. */ -static __inline__ int fls(int x) +static inline int fls(int x) { int ret; if (!x) diff --git a/arch/parisc/include/asm/checksum.h b/arch/parisc/include/asm/checksum.h index 3cbf1f1c1188..2e441a55adc9 100644 --- a/arch/parisc/include/asm/checksum.h +++ b/arch/parisc/include/asm/checksum.h @@ -121,7 +121,7 @@ static inline __sum16 ip_compute_csum(const void *buf, int len) #define _HAVE_ARCH_IPV6_CSUM -static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, +static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, __u8 proto, __wsum sum) @@ -189,7 +189,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -static __inline__ __wsum csum_and_copy_to_user(const void *src, +static inline __wsum csum_and_copy_to_user(const void *src, void __user *dst, int len, __wsum sum, int *err_ptr) diff --git a/arch/parisc/include/asm/compat.h b/arch/parisc/include/asm/compat.h index e03e3c849f40..e2269acf3d2b 100644 --- a/arch/parisc/include/asm/compat.h +++ b/arch/parisc/include/asm/compat.h @@ -190,7 +190,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr) return (u32)(unsigned long)uptr; } -static __inline__ void __user *arch_compat_alloc_user_space(long len) +static inline void __user *arch_compat_alloc_user_space(long len) { struct pt_regs *regs = ¤t->thread.regs; return (void __user *)regs->gr[30]; diff --git a/arch/parisc/include/asm/delay.h b/arch/parisc/include/asm/delay.h index 841b506b702a..e8f35d605bb2 100644 --- a/arch/parisc/include/asm/delay.h +++ b/arch/parisc/include/asm/delay.h @@ -2,7 +2,7 @@ #ifndef _ASM_PARISC_DELAY_H #define _ASM_PARISC_DELAY_H -static __inline__ void __delay(unsigned long loops) { +static inline void __delay(unsigned long loops) { asm volatile( " .balignl 64,0x34000034\n" " addib,UV -1,%0,.\n" diff --git a/arch/parisc/include/asm/dma.h b/arch/parisc/include/asm/dma.h index eea80ed34e6d..55170ca19ac9 100644 --- a/arch/parisc/include/asm/dma.h +++ b/arch/parisc/include/asm/dma.h @@ -71,12 +71,12 @@ #define DMA2_MASK_ALL_REG 0xDE /* all-channels mask (w) */ #define DMA2_EXT_MODE_REG (0x400 | DMA2_MODE_REG) -static __inline__ unsigned long claim_dma_lock(void) +static inline unsigned long claim_dma_lock(void) { return 0; } -static __inline__ void release_dma_lock(unsigned long flags) +static inline void release_dma_lock(unsigned long flags) { } @@ -89,7 +89,7 @@ static __inline__ void release_dma_lock(unsigned long flags) * * Assumes DMA flip-flop is clear. */ -static __inline__ int get_dma_residue(unsigned int dmanr) +static inline int get_dma_residue(unsigned int dmanr) { unsigned int io_port = (dmanr<=3)? ((dmanr&3)<<1) + 1 + IO_DMA1_BASE : ((dmanr&3)<<2) + 2 + IO_DMA2_BASE; @@ -104,7 +104,7 @@ static __inline__ int get_dma_residue(unsigned int dmanr) } /* enable/disable a specific DMA channel */ -static __inline__ void enable_dma(unsigned int dmanr) +static inline void enable_dma(unsigned int dmanr) { #ifdef CONFIG_SUPERIO if (dmanr<=3) @@ -114,7 +114,7 @@ static __inline__ void enable_dma(unsigned int dmanr) #endif } -static __inline__ void disable_dma(unsigned int dmanr) +static inline void disable_dma(unsigned int dmanr) { #ifdef CONFIG_SUPERIO if (dmanr<=3) @@ -134,12 +134,12 @@ static __inline__ void disable_dma(unsigned int dmanr) * --- In order to do that, the DMA routines below should --- * --- only be used while holding the DMA lock ! --- */ -static __inline__ void clear_dma_ff(unsigned int dmanr) +static inline void clear_dma_ff(unsigned int dmanr) { } /* set mode (above) for a specific DMA channel */ -static __inline__ void set_dma_mode(unsigned int dmanr, char mode) +static inline void set_dma_mode(unsigned int dmanr, char mode) { } @@ -148,7 +148,7 @@ static __inline__ void set_dma_mode(unsigned int dmanr, char mode) * the lower 16 bits of the DMA current address register, but a 64k boundary * may have been crossed. */ -static __inline__ void set_dma_page(unsigned int dmanr, char pagenr) +static inline void set_dma_page(unsigned int dmanr, char pagenr) { } @@ -156,7 +156,7 @@ static __inline__ void set_dma_page(unsigned int dmanr, char pagenr) /* Set transfer address & page bits for specific DMA channel. * Assumes dma flipflop is clear. */ -static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) +static inline void set_dma_addr(unsigned int dmanr, unsigned int a) { } @@ -169,7 +169,7 @@ static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) * Assumes dma flip-flop is clear. * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7. */ -static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) +static inline void set_dma_count(unsigned int dmanr, unsigned int count) { } diff --git a/arch/parisc/include/asm/ide.h b/arch/parisc/include/asm/ide.h index 34cdac01ed35..edd7fe03b90a 100644 --- a/arch/parisc/include/asm/ide.h +++ b/arch/parisc/include/asm/ide.h @@ -21,7 +21,7 @@ #define __ide_outsw outsw #define __ide_outsl outsl -static __inline__ void __ide_mm_insw(void __iomem *port, void *addr, u32 count) +static inline void __ide_mm_insw(void __iomem *port, void *addr, u32 count) { while (count--) { *(u16 *)addr = __raw_readw(port); @@ -29,7 +29,7 @@ static __inline__ void __ide_mm_insw(void __iomem *port, void *addr, u32 count) } } -static __inline__ void __ide_mm_insl(void __iomem *port, void *addr, u32 count) +static inline void __ide_mm_insl(void __iomem *port, void *addr, u32 count) { while (count--) { *(u32 *)addr = __raw_readl(port); @@ -37,7 +37,7 @@ static __inline__ void __ide_mm_insl(void __iomem *port, void *addr, u32 count) } } -static __inline__ void __ide_mm_outsw(void __iomem *port, void *addr, u32 count) +static inline void __ide_mm_outsw(void __iomem *port, void *addr, u32 count) { while (count--) { __raw_writew(*(u16 *)addr, port); @@ -45,7 +45,7 @@ static __inline__ void __ide_mm_outsw(void __iomem *port, void *addr, u32 count) } } -static __inline__ void __ide_mm_outsl(void __iomem *port, void *addr, u32 count) +static inline void __ide_mm_outsl(void __iomem *port, void *addr, u32 count) { while (count--) { __raw_writel(*(u32 *)addr, port); diff --git a/arch/parisc/include/asm/irq.h b/arch/parisc/include/asm/irq.h index 959e79cd2c14..b1c23a163114 100644 --- a/arch/parisc/include/asm/irq.h +++ b/arch/parisc/include/asm/irq.h @@ -27,7 +27,7 @@ #define NR_IRQS (CPU_IRQ_MAX + 1) -static __inline__ int irq_canonicalize(int irq) +static inline int irq_canonicalize(int irq) { return (irq == 2) ? 9 : irq; } diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h index 8a63515f03bf..0d4620a1f81b 100644 --- a/arch/parisc/include/asm/spinlock.h +++ b/arch/parisc/include/asm/spinlock.h @@ -66,7 +66,7 @@ static inline int arch_spin_trylock(arch_spinlock_t *x) /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to grab the same read lock */ -static __inline__ void arch_read_lock(arch_rwlock_t *rw) +static inline void arch_read_lock(arch_rwlock_t *rw) { unsigned long flags; local_irq_save(flags); @@ -78,7 +78,7 @@ static __inline__ void arch_read_lock(arch_rwlock_t *rw) /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to grab the same read lock */ -static __inline__ void arch_read_unlock(arch_rwlock_t *rw) +static inline void arch_read_unlock(arch_rwlock_t *rw) { unsigned long flags; local_irq_save(flags); @@ -90,7 +90,7 @@ static __inline__ void arch_read_unlock(arch_rwlock_t *rw) /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to grab the same read lock */ -static __inline__ int arch_read_trylock(arch_rwlock_t *rw) +static inline int arch_read_trylock(arch_rwlock_t *rw) { unsigned long flags; retry: @@ -116,7 +116,7 @@ static __inline__ int arch_read_trylock(arch_rwlock_t *rw) /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to read_trylock() this lock */ -static __inline__ void arch_write_lock(arch_rwlock_t *rw) +static inline void arch_write_lock(arch_rwlock_t *rw) { unsigned long flags; retry: @@ -138,7 +138,7 @@ static __inline__ void arch_write_lock(arch_rwlock_t *rw) local_irq_restore(flags); } -static __inline__ void arch_write_unlock(arch_rwlock_t *rw) +static inline void arch_write_unlock(arch_rwlock_t *rw) { rw->counter = 0; arch_spin_unlock(&rw->lock); @@ -146,7 +146,7 @@ static __inline__ void arch_write_unlock(arch_rwlock_t *rw) /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to read_trylock() this lock */ -static __inline__ int arch_write_trylock(arch_rwlock_t *rw) +static inline int arch_write_trylock(arch_rwlock_t *rw) { unsigned long flags; int result = 0; diff --git a/arch/powerpc/include/asm/atomic.h b/arch/powerpc/include/asm/atomic.h index 52eafaf74054..4e33807c75cf 100644 --- a/arch/powerpc/include/asm/atomic.h +++ b/arch/powerpc/include/asm/atomic.h @@ -25,7 +25,7 @@ #define __atomic_release_fence() \ __asm__ __volatile__(PPC_RELEASE_BARRIER "" : : : "memory") -static __inline__ int atomic_read(const atomic_t *v) +static inline int atomic_read(const atomic_t *v) { int t; @@ -34,13 +34,13 @@ static __inline__ int atomic_read(const atomic_t *v) return t; } -static __inline__ void atomic_set(atomic_t *v, int i) +static inline void atomic_set(atomic_t *v, int i) { __asm__ __volatile__("stw%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i)); } #define ATOMIC_OP(op, asm_op) \ -static __inline__ void atomic_##op(int a, atomic_t *v) \ +static inline void atomic_##op(int a, atomic_t *v) \ { \ int t; \ \ @@ -123,7 +123,7 @@ ATOMIC_OPS(xor, xor) #undef ATOMIC_OP_RETURN_RELAXED #undef ATOMIC_OP -static __inline__ void atomic_inc(atomic_t *v) +static inline void atomic_inc(atomic_t *v) { int t; @@ -139,7 +139,7 @@ static __inline__ void atomic_inc(atomic_t *v) } #define atomic_inc atomic_inc -static __inline__ int atomic_inc_return_relaxed(atomic_t *v) +static inline int atomic_inc_return_relaxed(atomic_t *v) { int t; @@ -156,7 +156,7 @@ static __inline__ int atomic_inc_return_relaxed(atomic_t *v) return t; } -static __inline__ void atomic_dec(atomic_t *v) +static inline void atomic_dec(atomic_t *v) { int t; @@ -172,7 +172,7 @@ static __inline__ void atomic_dec(atomic_t *v) } #define atomic_dec atomic_dec -static __inline__ int atomic_dec_return_relaxed(atomic_t *v) +static inline int atomic_dec_return_relaxed(atomic_t *v) { int t; @@ -210,7 +210,7 @@ static __inline__ int atomic_dec_return_relaxed(atomic_t *v) * Atomically adds @a to @v, so long as it was not @u. * Returns the old value of @v. */ -static __inline__ int atomic_fetch_add_unless(atomic_t *v, int a, int u) +static inline int atomic_fetch_add_unless(atomic_t *v, int a, int u) { int t; @@ -241,7 +241,7 @@ static __inline__ int atomic_fetch_add_unless(atomic_t *v, int a, int u) * Atomically increments @v by 1, so long as @v is non-zero. * Returns non-zero if @v was non-zero, and zero otherwise. */ -static __inline__ int atomic_inc_not_zero(atomic_t *v) +static inline int atomic_inc_not_zero(atomic_t *v) { int t1, t2; @@ -270,7 +270,7 @@ static __inline__ int atomic_inc_not_zero(atomic_t *v) * The function returns the old value of *v minus 1, even if * the atomic variable, v, was not decremented. */ -static __inline__ int atomic_dec_if_positive(atomic_t *v) +static inline int atomic_dec_if_positive(atomic_t *v) { int t; @@ -297,7 +297,7 @@ static __inline__ int atomic_dec_if_positive(atomic_t *v) #define ATOMIC64_INIT(i) { (i) } -static __inline__ long atomic64_read(const atomic64_t *v) +static inline long atomic64_read(const atomic64_t *v) { long t; @@ -306,13 +306,13 @@ static __inline__ long atomic64_read(const atomic64_t *v) return t; } -static __inline__ void atomic64_set(atomic64_t *v, long i) +static inline void atomic64_set(atomic64_t *v, long i) { __asm__ __volatile__("std%U0%X0 %1,%0" : "=m"(v->counter) : "r"(i)); } #define ATOMIC64_OP(op, asm_op) \ -static __inline__ void atomic64_##op(long a, atomic64_t *v) \ +static inline void atomic64_##op(long a, atomic64_t *v) \ { \ long t; \ \ @@ -394,7 +394,7 @@ ATOMIC64_OPS(xor, xor) #undef ATOMIC64_OP_RETURN_RELAXED #undef ATOMIC64_OP -static __inline__ void atomic64_inc(atomic64_t *v) +static inline void atomic64_inc(atomic64_t *v) { long t; @@ -409,7 +409,7 @@ static __inline__ void atomic64_inc(atomic64_t *v) } #define atomic64_inc atomic64_inc -static __inline__ long atomic64_inc_return_relaxed(atomic64_t *v) +static inline long atomic64_inc_return_relaxed(atomic64_t *v) { long t; @@ -425,7 +425,7 @@ static __inline__ long atomic64_inc_return_relaxed(atomic64_t *v) return t; } -static __inline__ void atomic64_dec(atomic64_t *v) +static inline void atomic64_dec(atomic64_t *v) { long t; @@ -440,7 +440,7 @@ static __inline__ void atomic64_dec(atomic64_t *v) } #define atomic64_dec atomic64_dec -static __inline__ long atomic64_dec_return_relaxed(atomic64_t *v) +static inline long atomic64_dec_return_relaxed(atomic64_t *v) { long t; @@ -463,7 +463,7 @@ static __inline__ long atomic64_dec_return_relaxed(atomic64_t *v) * Atomically test *v and decrement if it is greater than 0. * The function returns the old value of *v minus 1. */ -static __inline__ long atomic64_dec_if_positive(atomic64_t *v) +static inline long atomic64_dec_if_positive(atomic64_t *v) { long t; @@ -502,7 +502,7 @@ static __inline__ long atomic64_dec_if_positive(atomic64_t *v) * Atomically adds @a to @v, so long as it was not @u. * Returns the old value of @v. */ -static __inline__ long atomic64_fetch_add_unless(atomic64_t *v, long a, long u) +static inline long atomic64_fetch_add_unless(atomic64_t *v, long a, long u) { long t; @@ -532,7 +532,7 @@ static __inline__ long atomic64_fetch_add_unless(atomic64_t *v, long a, long u) * Atomically increments @v by 1, so long as @v is non-zero. * Returns non-zero if @v was non-zero, and zero otherwise. */ -static __inline__ int atomic64_inc_not_zero(atomic64_t *v) +static inline int atomic64_inc_not_zero(atomic64_t *v) { long t1, t2; diff --git a/arch/powerpc/include/asm/bitops.h b/arch/powerpc/include/asm/bitops.h index ff71566dadee..0858c8ddea92 100644 --- a/arch/powerpc/include/asm/bitops.h +++ b/arch/powerpc/include/asm/bitops.h @@ -68,7 +68,7 @@ /* Macro for generating the ***_bits() functions */ #define DEFINE_BITOP(fn, op, prefix) \ -static __inline__ void fn(unsigned long mask, \ +static inline void fn(unsigned long mask, \ volatile unsigned long *_p) \ { \ unsigned long old; \ @@ -90,22 +90,22 @@ DEFINE_BITOP(clear_bits, andc, "") DEFINE_BITOP(clear_bits_unlock, andc, PPC_RELEASE_BARRIER) DEFINE_BITOP(change_bits, xor, "") -static __inline__ void set_bit(int nr, volatile unsigned long *addr) +static inline void set_bit(int nr, volatile unsigned long *addr) { set_bits(BIT_MASK(nr), addr + BIT_WORD(nr)); } -static __inline__ void clear_bit(int nr, volatile unsigned long *addr) +static inline void clear_bit(int nr, volatile unsigned long *addr) { clear_bits(BIT_MASK(nr), addr + BIT_WORD(nr)); } -static __inline__ void clear_bit_unlock(int nr, volatile unsigned long *addr) +static inline void clear_bit_unlock(int nr, volatile unsigned long *addr) { clear_bits_unlock(BIT_MASK(nr), addr + BIT_WORD(nr)); } -static __inline__ void change_bit(int nr, volatile unsigned long *addr) +static inline void change_bit(int nr, volatile unsigned long *addr) { change_bits(BIT_MASK(nr), addr + BIT_WORD(nr)); } @@ -113,7 +113,7 @@ static __inline__ void change_bit(int nr, volatile unsigned long *addr) /* Like DEFINE_BITOP(), with changes to the arguments to 'op' and the output * operands. */ #define DEFINE_TESTOP(fn, op, prefix, postfix, eh) \ -static __inline__ unsigned long fn( \ +static inline unsigned long fn( \ unsigned long mask, \ volatile unsigned long *_p) \ { \ @@ -142,33 +142,33 @@ DEFINE_TESTOP(test_and_clear_bits, andc, PPC_ATOMIC_ENTRY_BARRIER, DEFINE_TESTOP(test_and_change_bits, xor, PPC_ATOMIC_ENTRY_BARRIER, PPC_ATOMIC_EXIT_BARRIER, 0) -static __inline__ int test_and_set_bit(unsigned long nr, +static inline int test_and_set_bit(unsigned long nr, volatile unsigned long *addr) { return test_and_set_bits(BIT_MASK(nr), addr + BIT_WORD(nr)) != 0; } -static __inline__ int test_and_set_bit_lock(unsigned long nr, +static inline int test_and_set_bit_lock(unsigned long nr, volatile unsigned long *addr) { return test_and_set_bits_lock(BIT_MASK(nr), addr + BIT_WORD(nr)) != 0; } -static __inline__ int test_and_clear_bit(unsigned long nr, +static inline int test_and_clear_bit(unsigned long nr, volatile unsigned long *addr) { return test_and_clear_bits(BIT_MASK(nr), addr + BIT_WORD(nr)) != 0; } -static __inline__ int test_and_change_bit(unsigned long nr, +static inline int test_and_change_bit(unsigned long nr, volatile unsigned long *addr) { return test_and_change_bits(BIT_MASK(nr), addr + BIT_WORD(nr)) != 0; } #ifdef CONFIG_PPC64 -static __inline__ unsigned long clear_bit_unlock_return_word(int nr, +static inline unsigned long clear_bit_unlock_return_word(int nr, volatile unsigned long *addr) { unsigned long old, t; @@ -197,7 +197,7 @@ static __inline__ unsigned long clear_bit_unlock_return_word(int nr, #include -static __inline__ void __clear_bit_unlock(int nr, volatile unsigned long *addr) +static inline void __clear_bit_unlock(int nr, volatile unsigned long *addr) { __asm__ __volatile__(PPC_RELEASE_BARRIER "" ::: "memory"); __clear_bit(nr, addr); @@ -219,14 +219,14 @@ static __inline__ void __clear_bit_unlock(int nr, volatile unsigned long *addr) * fls: find last (most-significant) bit set. * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. */ -static __inline__ int fls(unsigned int x) +static inline int fls(unsigned int x) { return 32 - __builtin_clz(x); } #include -static __inline__ int fls64(__u64 x) +static inline int fls64(__u64 x) { return 64 - __builtin_clzll(x); } diff --git a/arch/powerpc/include/asm/dma.h b/arch/powerpc/include/asm/dma.h index 1b4f0254868f..d5be698b831a 100644 --- a/arch/powerpc/include/asm/dma.h +++ b/arch/powerpc/include/asm/dma.h @@ -166,20 +166,20 @@ extern spinlock_t dma_spin_lock; -static __inline__ unsigned long claim_dma_lock(void) +static inline unsigned long claim_dma_lock(void) { unsigned long flags; spin_lock_irqsave(&dma_spin_lock, flags); return flags; } -static __inline__ void release_dma_lock(unsigned long flags) +static inline void release_dma_lock(unsigned long flags) { spin_unlock_irqrestore(&dma_spin_lock, flags); } /* enable/disable a specific DMA channel */ -static __inline__ void enable_dma(unsigned int dmanr) +static inline void enable_dma(unsigned int dmanr) { unsigned char ucDmaCmd = 0x00; @@ -195,7 +195,7 @@ static __inline__ void enable_dma(unsigned int dmanr) } } -static __inline__ void disable_dma(unsigned int dmanr) +static inline void disable_dma(unsigned int dmanr) { if (dmanr <= 3) dma_outb(dmanr | 4, DMA1_MASK_REG); @@ -210,7 +210,7 @@ static __inline__ void disable_dma(unsigned int dmanr) * --- In order to do that, the DMA routines below should --- * --- only be used while interrupts are disabled! --- */ -static __inline__ void clear_dma_ff(unsigned int dmanr) +static inline void clear_dma_ff(unsigned int dmanr) { if (dmanr <= 3) dma_outb(0, DMA1_CLEAR_FF_REG); @@ -219,7 +219,7 @@ static __inline__ void clear_dma_ff(unsigned int dmanr) } /* set mode (above) for a specific DMA channel */ -static __inline__ void set_dma_mode(unsigned int dmanr, char mode) +static inline void set_dma_mode(unsigned int dmanr, char mode) { if (dmanr <= 3) dma_outb(mode | dmanr, DMA1_MODE_REG); @@ -232,7 +232,7 @@ static __inline__ void set_dma_mode(unsigned int dmanr, char mode) * the lower 16 bits of the DMA current address register, but a 64k boundary * may have been crossed. */ -static __inline__ void set_dma_page(unsigned int dmanr, int pagenr) +static inline void set_dma_page(unsigned int dmanr, int pagenr) { switch (dmanr) { case 0: @@ -269,7 +269,7 @@ static __inline__ void set_dma_page(unsigned int dmanr, int pagenr) /* Set transfer address & page bits for specific DMA channel. * Assumes dma flipflop is clear. */ -static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int phys) +static inline void set_dma_addr(unsigned int dmanr, unsigned int phys) { if (dmanr <= 3) { dma_outb(phys & 0xff, @@ -294,7 +294,7 @@ static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int phys) * Assumes dma flip-flop is clear. * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7. */ -static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) +static inline void set_dma_count(unsigned int dmanr, unsigned int count) { count--; if (dmanr <= 3) { @@ -319,7 +319,7 @@ static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) * * Assumes DMA flip-flop is clear. */ -static __inline__ int get_dma_residue(unsigned int dmanr) +static inline int get_dma_residue(unsigned int dmanr) { unsigned int io_port = (dmanr <= 3) ? ((dmanr & 3) << 1) + 1 + IO_DMA1_BASE diff --git a/arch/powerpc/include/asm/edac.h b/arch/powerpc/include/asm/edac.h index 5571e23d253e..f331c7f8525f 100644 --- a/arch/powerpc/include/asm/edac.h +++ b/arch/powerpc/include/asm/edac.h @@ -16,7 +16,7 @@ * ECC scrubbing. It reads memory and then writes back the original * value, allowing the hardware to detect and correct memory errors. */ -static __inline__ void edac_atomic_scrub(void *va, u32 size) +static inline void edac_atomic_scrub(void *va, u32 size) { unsigned int *virt_addr = va; unsigned int temp; diff --git a/arch/powerpc/include/asm/irq.h b/arch/powerpc/include/asm/irq.h index ee39ce56b2a2..676a7e7c66e7 100644 --- a/arch/powerpc/include/asm/irq.h +++ b/arch/powerpc/include/asm/irq.h @@ -31,7 +31,7 @@ extern atomic_t ppc_n_lost_interrupts; extern irq_hw_number_t virq_to_hw(unsigned int virq); -static __inline__ int irq_canonicalize(int irq) +static inline int irq_canonicalize(int irq) { return irq; } diff --git a/arch/powerpc/include/asm/local.h b/arch/powerpc/include/asm/local.h index fdd00939270b..95702e9dc1d0 100644 --- a/arch/powerpc/include/asm/local.h +++ b/arch/powerpc/include/asm/local.h @@ -17,18 +17,18 @@ typedef struct #define LOCAL_INIT(i) { (i) } -static __inline__ long local_read(local_t *l) +static inline long local_read(local_t *l) { return READ_ONCE(l->v); } -static __inline__ void local_set(local_t *l, long i) +static inline void local_set(local_t *l, long i) { WRITE_ONCE(l->v, i); } #define LOCAL_OP(op, c_op) \ -static __inline__ void local_##op(long i, local_t *l) \ +static inline void local_##op(long i, local_t *l) \ { \ unsigned long flags; \ \ @@ -38,7 +38,7 @@ static __inline__ void local_##op(long i, local_t *l) \ } #define LOCAL_OP_RETURN(op, c_op) \ -static __inline__ long local_##op##_return(long a, local_t *l) \ +static inline long local_##op##_return(long a, local_t *l) \ { \ long t; \ unsigned long flags; \ @@ -76,7 +76,7 @@ LOCAL_OPS(sub, -=) #define local_sub_and_test(a, l) (local_sub_return((a), (l)) == 0) #define local_dec_and_test(l) (local_dec_return((l)) == 0) -static __inline__ long local_cmpxchg(local_t *l, long o, long n) +static inline long local_cmpxchg(local_t *l, long o, long n) { long t; unsigned long flags; @@ -90,7 +90,7 @@ static __inline__ long local_cmpxchg(local_t *l, long o, long n) return t; } -static __inline__ long local_xchg(local_t *l, long n) +static inline long local_xchg(local_t *l, long n) { long t; unsigned long flags; @@ -112,7 +112,7 @@ static __inline__ long local_xchg(local_t *l, long n) * Atomically adds @a to @l, so long as it was not @u. * Returns non-zero if @l was not @u, and zero otherwise. */ -static __inline__ int local_add_unless(local_t *l, long a, long u) +static inline int local_add_unless(local_t *l, long a, long u) { unsigned long flags; int ret = 0; diff --git a/arch/sh/include/asm/pgtable_64.h b/arch/sh/include/asm/pgtable_64.h index 07424968df62..12ca0d9bdebb 100644 --- a/arch/sh/include/asm/pgtable_64.h +++ b/arch/sh/include/asm/pgtable_64.h @@ -32,7 +32,7 @@ */ #define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval) -static __inline__ void set_pte(pte_t *pteptr, pte_t pteval) +static inline void set_pte(pte_t *pteptr, pte_t pteval) { unsigned long long x = ((unsigned long long) pteval.pte_low); unsigned long long *xp = (unsigned long long *) pteptr; diff --git a/arch/sh/include/asm/processor_32.h b/arch/sh/include/asm/processor_32.h index 95100d8a0b7b..87aa8cb16b5a 100644 --- a/arch/sh/include/asm/processor_32.h +++ b/arch/sh/include/asm/processor_32.h @@ -141,7 +141,7 @@ extern void release_thread(struct task_struct *); * FPU lazy state save handling. */ -static __inline__ void disable_fpu(void) +static inline void disable_fpu(void) { unsigned long __dummy; @@ -153,7 +153,7 @@ static __inline__ void disable_fpu(void) : "r" (SR_FD)); } -static __inline__ void enable_fpu(void) +static inline void enable_fpu(void) { unsigned long __dummy; diff --git a/arch/sh/include/cpu-sh3/cpu/dac.h b/arch/sh/include/cpu-sh3/cpu/dac.h index fd02331608a8..67ae1ae03c47 100644 --- a/arch/sh/include/cpu-sh3/cpu/dac.h +++ b/arch/sh/include/cpu-sh3/cpu/dac.h @@ -15,7 +15,7 @@ #define DACR_DAE 0x20 -static __inline__ void sh_dac_enable(int channel) +static inline void sh_dac_enable(int channel) { unsigned char v; v = __raw_readb(DACR); @@ -24,7 +24,7 @@ static __inline__ void sh_dac_enable(int channel) __raw_writeb(v,DACR); } -static __inline__ void sh_dac_disable(int channel) +static inline void sh_dac_disable(int channel) { unsigned char v; v = __raw_readb(DACR); @@ -33,7 +33,7 @@ static __inline__ void sh_dac_disable(int channel) __raw_writeb(v,DACR); } -static __inline__ void sh_dac_output(u8 value, int channel) +static inline void sh_dac_output(u8 value, int channel) { if(channel) __raw_writeb(value,DADR1); else __raw_writeb(value,DADR0); diff --git a/arch/x86/include/asm/alternative.h b/arch/x86/include/asm/alternative.h index d7faa16622d8..8eb160bb08eb 100644 --- a/arch/x86/include/asm/alternative.h +++ b/arch/x86/include/asm/alternative.h @@ -159,10 +159,10 @@ static inline int alternatives_text_reserved(void *start, void *end) * without volatile and memory clobber. */ #define alternative(oldinstr, newinstr, feature) \ - asm volatile (ALTERNATIVE(oldinstr, newinstr, feature) : : : "memory") + asm_volatile (ALTERNATIVE(oldinstr, newinstr, feature) : : : "memory") #define alternative_2(oldinstr, newinstr1, feature1, newinstr2, feature2) \ - asm volatile(ALTERNATIVE_2(oldinstr, newinstr1, feature1, newinstr2, feature2) ::: "memory") + asm_volatile(ALTERNATIVE_2(oldinstr, newinstr1, feature1, newinstr2, feature2) ::: "memory") /* * Alternative inline assembly with input. @@ -176,7 +176,7 @@ static inline int alternatives_text_reserved(void *start, void *end) * Leaving an unused argument 0 to keep API compatibility. */ #define alternative_input(oldinstr, newinstr, feature, input...) \ - asm volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ + asm_volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ : : "i" (0), ## input) /* @@ -189,18 +189,18 @@ static inline int alternatives_text_reserved(void *start, void *end) */ #define alternative_input_2(oldinstr, newinstr1, feature1, newinstr2, \ feature2, input...) \ - asm volatile(ALTERNATIVE_2(oldinstr, newinstr1, feature1, \ + asm_volatile(ALTERNATIVE_2(oldinstr, newinstr1, feature1, \ newinstr2, feature2) \ : : "i" (0), ## input) /* Like alternative_input, but with a single output argument */ #define alternative_io(oldinstr, newinstr, feature, output, input...) \ - asm volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ + asm_volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ : output : "i" (0), ## input) /* Like alternative_io, but for replacing a direct call with another one. */ #define alternative_call(oldfunc, newfunc, feature, output, input...) \ - asm volatile (ALTERNATIVE("call %P[old]", "call %P[new]", feature) \ + asm_volatile (ALTERNATIVE("call %P[old]", "call %P[new]", feature) \ : output : [old] "i" (oldfunc), [new] "i" (newfunc), ## input) /* @@ -211,7 +211,7 @@ static inline int alternatives_text_reserved(void *start, void *end) */ #define alternative_call_2(oldfunc, newfunc1, feature1, newfunc2, feature2, \ output, input...) \ - asm volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\ + asm_volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\ "call %P[new2]", feature2) \ : output, ASM_CALL_CONSTRAINT \ : [old] "i" (oldfunc), [new1] "i" (newfunc1), \ diff --git a/arch/x86/um/asm/checksum.h b/arch/x86/um/asm/checksum.h index 2a56cac64687..8f1c7f32d420 100644 --- a/arch/x86/um/asm/checksum.h +++ b/arch/x86/um/asm/checksum.h @@ -28,7 +28,7 @@ extern __wsum csum_partial(const void *buff, int len, __wsum sum); * access_ok(). */ -static __inline__ +static inline __wsum csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum) { @@ -44,7 +44,7 @@ __wsum csum_partial_copy_nocheck(const void *src, void *dst, * better 64-bit) boundary */ -static __inline__ +static inline __wsum csum_partial_copy_from_user(const void __user *src, void *dst, int len, __wsum sum, int *err_ptr) { diff --git a/arch/x86/um/asm/checksum_32.h b/arch/x86/um/asm/checksum_32.h index 83a75f8a1233..8364af309b85 100644 --- a/arch/x86/um/asm/checksum_32.h +++ b/arch/x86/um/asm/checksum_32.h @@ -11,7 +11,7 @@ static inline __sum16 ip_compute_csum(const void *buff, int len) } #define _HAVE_ARCH_IPV6_CSUM -static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, +static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, __u8 proto, __wsum sum) @@ -39,7 +39,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -static __inline__ __wsum csum_and_copy_to_user(const void *src, +static inline __wsum csum_and_copy_to_user(const void *src, void __user *dst, int len, __wsum sum, int *err_ptr) { diff --git a/arch/xtensa/include/asm/checksum.h b/arch/xtensa/include/asm/checksum.h index 3ae74d7e074b..4eeb36d2082c 100644 --- a/arch/xtensa/include/asm/checksum.h +++ b/arch/xtensa/include/asm/checksum.h @@ -66,7 +66,7 @@ __wsum csum_partial_copy_from_user(const void __user *src, void *dst, * Fold a partial checksum */ -static __inline__ __sum16 csum_fold(__wsum sum) +static inline __sum16 csum_fold(__wsum sum) { unsigned int __dummy; __asm__("extui %1, %0, 16, 16\n\t" @@ -87,7 +87,7 @@ static __inline__ __sum16 csum_fold(__wsum sum) * This is a version of ip_compute_csum() optimized for IP headers, * which always checksum on 4 octet boundaries. */ -static __inline__ __sum16 ip_fast_csum(const void *iph, unsigned int ihl) +static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl) { unsigned int sum, tmp, endaddr; @@ -122,7 +122,7 @@ static __inline__ __sum16 ip_fast_csum(const void *iph, unsigned int ihl) return csum_fold(sum); } -static __inline__ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, +static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len, __u8 proto, __wsum sum) { @@ -155,7 +155,7 @@ static __inline__ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, * computes the checksum of the TCP/UDP pseudo-header * returns a 16-bit checksum, already complemented */ -static __inline__ __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, +static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, __u32 len, __u8 proto, __wsum sum) { @@ -167,13 +167,13 @@ static __inline__ __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, * in icmp.c */ -static __inline__ __sum16 ip_compute_csum(const void *buff, int len) +static inline __sum16 ip_compute_csum(const void *buff, int len) { return csum_fold (csum_partial(buff, len, 0)); } #define _HAVE_ARCH_IPV6_CSUM -static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, +static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, __u8 proto, __wsum sum) @@ -239,7 +239,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -static __inline__ __wsum csum_and_copy_to_user(const void *src, +static inline __wsum csum_and_copy_to_user(const void *src, void __user *dst, int len, __wsum sum, int *err_ptr) { diff --git a/arch/xtensa/include/asm/cmpxchg.h b/arch/xtensa/include/asm/cmpxchg.h index 201e9009efd8..15d62c16de7a 100644 --- a/arch/xtensa/include/asm/cmpxchg.h +++ b/arch/xtensa/include/asm/cmpxchg.h @@ -52,7 +52,7 @@ __cmpxchg_u32(volatile int *p, int old, int new) extern void __cmpxchg_called_with_bad_pointer(void); -static __inline__ unsigned long +static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) { switch (size) { @@ -146,7 +146,7 @@ static inline unsigned long xchg_u32(volatile int * m, unsigned long val) extern void __xchg_called_with_bad_pointer(void); -static __inline__ unsigned long +static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) { switch (size) { diff --git a/arch/xtensa/include/asm/irq.h b/arch/xtensa/include/asm/irq.h index 6c6ed23e0c79..ae53e599255f 100644 --- a/arch/xtensa/include/asm/irq.h +++ b/arch/xtensa/include/asm/irq.h @@ -23,7 +23,7 @@ #define NR_IRQS (XTENSA_NR_IRQS + PLATFORM_NR_IRQS + 1) #define XTENSA_PIC_LINUX_IRQ(hwirq) ((hwirq) + 1) -static __inline__ int irq_canonicalize(int irq) +static inline int irq_canonicalize(int irq) { return (irq); } diff --git a/block/partitions/amiga.c b/block/partitions/amiga.c index 560936617d9c..7434b0a0f86c 100644 --- a/block/partitions/amiga.c +++ b/block/partitions/amiga.c @@ -16,7 +16,7 @@ #include "check.h" #include "amiga.h" -static __inline__ u32 +static inline u32 checksum_block(__be32 *m, int size) { u32 sum = 0; diff --git a/drivers/atm/he.c b/drivers/atm/he.c index 29f102dcfec4..abb6415f9565 100644 --- a/drivers/atm/he.c +++ b/drivers/atm/he.c @@ -178,7 +178,7 @@ static const struct atmdev_ops he_ops = /* section 2.12 connection memory access */ -static __inline__ void +static inline void he_writel_internal(struct he_dev *he_dev, unsigned val, unsigned addr, unsigned flags) { @@ -324,7 +324,7 @@ he_readl_internal(struct he_dev *he_dev, unsigned addr, unsigned flags) #define he_writel_rsr7(dev, val, cid) \ he_writel_rcm(dev, val, 0x00000 | (cid << 3) | 7) -static __inline__ struct atm_vcc* +static inline struct atm_vcc* __find_vcc(struct he_dev *he_dev, unsigned cid) { struct hlist_head *head; @@ -2050,7 +2050,7 @@ he_irq_handler(int irq, void *dev_id) } -static __inline__ void +static inline void __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid) { struct he_tpdrq *new_tail; diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c index 6e737142ceaa..226a65a03b70 100644 --- a/drivers/atm/idt77252.c +++ b/drivers/atm/idt77252.c @@ -1783,13 +1783,13 @@ set_tct(struct idt77252_dev *card, struct vc_map *vc) /* */ /*****************************************************************************/ -static __inline__ int +static inline int idt77252_fbq_level(struct idt77252_dev *card, int queue) { return (readl(SAR_REG_STAT) >> (16 + (queue << 2))) & 0x0f; } -static __inline__ int +static inline int idt77252_fbq_full(struct idt77252_dev *card, int queue) { return (readl(SAR_REG_STAT) >> (16 + (queue << 2))) == 0x0f; @@ -2016,7 +2016,7 @@ idt77252_send_oam(struct atm_vcc *vcc, void *cell, int flags) return idt77252_send_skb(vcc, skb, 1); } -static __inline__ unsigned int +static inline unsigned int idt77252_fls(unsigned int x) { int r = 1; diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h index a45bb22275a7..a4bb4ead677f 100644 --- a/drivers/gpu/drm/mga/mga_drv.h +++ b/drivers/gpu/drm/mga/mga_drv.h @@ -661,7 +661,7 @@ do { \ /* Simple idle test. */ -static __inline__ int mga_is_idle(drm_mga_private_t *dev_priv) +static inline int mga_is_idle(drm_mga_private_t *dev_priv) { u32 status = MGA_READ(MGA_STATUS) & MGA_ENGINE_IDLE_MASK; return (status == MGA_ENDPRDMASTS); diff --git a/drivers/gpu/drm/mga/mga_state.c b/drivers/gpu/drm/mga/mga_state.c index e5f6b735f575..67f261c59111 100644 --- a/drivers/gpu/drm/mga/mga_state.c +++ b/drivers/gpu/drm/mga/mga_state.c @@ -65,7 +65,7 @@ static void mga_emit_clip_rect(drm_mga_private_t *dev_priv, ADVANCE_DMA(); } -static __inline__ void mga_g200_emit_context(drm_mga_private_t *dev_priv) +static inline void mga_g200_emit_context(drm_mga_private_t *dev_priv) { drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_mga_context_regs_t *ctx = &sarea_priv->context_state; @@ -88,7 +88,7 @@ static __inline__ void mga_g200_emit_context(drm_mga_private_t *dev_priv) ADVANCE_DMA(); } -static __inline__ void mga_g400_emit_context(drm_mga_private_t *dev_priv) +static inline void mga_g400_emit_context(drm_mga_private_t *dev_priv) { drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_mga_context_regs_t *ctx = &sarea_priv->context_state; @@ -115,7 +115,7 @@ static __inline__ void mga_g400_emit_context(drm_mga_private_t *dev_priv) ADVANCE_DMA(); } -static __inline__ void mga_g200_emit_tex0(drm_mga_private_t *dev_priv) +static inline void mga_g200_emit_tex0(drm_mga_private_t *dev_priv) { drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_mga_texture_regs_t *tex = &sarea_priv->tex_state[0]; @@ -143,7 +143,7 @@ static __inline__ void mga_g200_emit_tex0(drm_mga_private_t *dev_priv) ADVANCE_DMA(); } -static __inline__ void mga_g400_emit_tex0(drm_mga_private_t *dev_priv) +static inline void mga_g400_emit_tex0(drm_mga_private_t *dev_priv) { drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_mga_texture_regs_t *tex = &sarea_priv->tex_state[0]; @@ -183,7 +183,7 @@ static __inline__ void mga_g400_emit_tex0(drm_mga_private_t *dev_priv) ADVANCE_DMA(); } -static __inline__ void mga_g400_emit_tex1(drm_mga_private_t *dev_priv) +static inline void mga_g400_emit_tex1(drm_mga_private_t *dev_priv) { drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_mga_texture_regs_t *tex = &sarea_priv->tex_state[1]; @@ -222,7 +222,7 @@ static __inline__ void mga_g400_emit_tex1(drm_mga_private_t *dev_priv) ADVANCE_DMA(); } -static __inline__ void mga_g200_emit_pipe(drm_mga_private_t *dev_priv) +static inline void mga_g200_emit_pipe(drm_mga_private_t *dev_priv) { drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; unsigned int pipe = sarea_priv->warp_pipe; @@ -249,7 +249,7 @@ static __inline__ void mga_g200_emit_pipe(drm_mga_private_t *dev_priv) ADVANCE_DMA(); } -static __inline__ void mga_g400_emit_pipe(drm_mga_private_t *dev_priv) +static inline void mga_g400_emit_pipe(drm_mga_private_t *dev_priv) { drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; unsigned int pipe = sarea_priv->warp_pipe; diff --git a/drivers/gpu/drm/r128/r128_drv.h b/drivers/gpu/drm/r128/r128_drv.h index 2de40d276116..ae32a67dec16 100644 --- a/drivers/gpu/drm/r128/r128_drv.h +++ b/drivers/gpu/drm/r128/r128_drv.h @@ -417,7 +417,7 @@ do { \ #define CCE_PACKET3(pkt, n) (R128_CCE_PACKET3 | \ (pkt) | ((n) << 16)) -static __inline__ void r128_update_ring_snapshot(drm_r128_private_t *dev_priv) +static inline void r128_update_ring_snapshot(drm_r128_private_t *dev_priv) { drm_r128_ring_buffer_t *ring = &dev_priv->ring; ring->space = (GET_RING_HEAD(dev_priv) - ring->tail) * sizeof(u32); diff --git a/drivers/gpu/drm/r128/r128_state.c b/drivers/gpu/drm/r128/r128_state.c index b9bfa806d346..36a6642f485d 100644 --- a/drivers/gpu/drm/r128/r128_state.c +++ b/drivers/gpu/drm/r128/r128_state.c @@ -79,7 +79,7 @@ static void r128_emit_clip_rects(drm_r128_private_t *dev_priv, ADVANCE_RING(); } -static __inline__ void r128_emit_core(drm_r128_private_t *dev_priv) +static inline void r128_emit_core(drm_r128_private_t *dev_priv) { drm_r128_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_r128_context_regs_t *ctx = &sarea_priv->context_state; @@ -94,7 +94,7 @@ static __inline__ void r128_emit_core(drm_r128_private_t *dev_priv) ADVANCE_RING(); } -static __inline__ void r128_emit_context(drm_r128_private_t *dev_priv) +static inline void r128_emit_context(drm_r128_private_t *dev_priv) { drm_r128_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_r128_context_regs_t *ctx = &sarea_priv->context_state; @@ -120,7 +120,7 @@ static __inline__ void r128_emit_context(drm_r128_private_t *dev_priv) ADVANCE_RING(); } -static __inline__ void r128_emit_setup(drm_r128_private_t *dev_priv) +static inline void r128_emit_setup(drm_r128_private_t *dev_priv) { drm_r128_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_r128_context_regs_t *ctx = &sarea_priv->context_state; @@ -136,7 +136,7 @@ static __inline__ void r128_emit_setup(drm_r128_private_t *dev_priv) ADVANCE_RING(); } -static __inline__ void r128_emit_masks(drm_r128_private_t *dev_priv) +static inline void r128_emit_masks(drm_r128_private_t *dev_priv) { drm_r128_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_r128_context_regs_t *ctx = &sarea_priv->context_state; @@ -155,7 +155,7 @@ static __inline__ void r128_emit_masks(drm_r128_private_t *dev_priv) ADVANCE_RING(); } -static __inline__ void r128_emit_window(drm_r128_private_t *dev_priv) +static inline void r128_emit_window(drm_r128_private_t *dev_priv) { drm_r128_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_r128_context_regs_t *ctx = &sarea_priv->context_state; @@ -170,7 +170,7 @@ static __inline__ void r128_emit_window(drm_r128_private_t *dev_priv) ADVANCE_RING(); } -static __inline__ void r128_emit_tex0(drm_r128_private_t *dev_priv) +static inline void r128_emit_tex0(drm_r128_private_t *dev_priv) { drm_r128_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_r128_context_regs_t *ctx = &sarea_priv->context_state; @@ -196,7 +196,7 @@ static __inline__ void r128_emit_tex0(drm_r128_private_t *dev_priv) ADVANCE_RING(); } -static __inline__ void r128_emit_tex1(drm_r128_private_t *dev_priv) +static inline void r128_emit_tex1(drm_r128_private_t *dev_priv) { drm_r128_sarea_t *sarea_priv = dev_priv->sarea_priv; drm_r128_texture_regs_t *tex = &sarea_priv->tex_state[1]; diff --git a/drivers/gpu/drm/via/via_irq.c b/drivers/gpu/drm/via/via_irq.c index c96830ccc0ec..02f2a309ea8d 100644 --- a/drivers/gpu/drm/via/via_irq.c +++ b/drivers/gpu/drm/via/via_irq.c @@ -152,7 +152,7 @@ irqreturn_t via_driver_irq_handler(int irq, void *arg) return IRQ_NONE; } -static __inline__ void viadrv_acknowledge_irqs(drm_via_private_t *dev_priv) +static inline void viadrv_acknowledge_irqs(drm_via_private_t *dev_priv) { u32 status; diff --git a/drivers/gpu/drm/via/via_verifier.c b/drivers/gpu/drm/via/via_verifier.c index fb2609434df7..400fe11b128d 100644 --- a/drivers/gpu/drm/via/via_verifier.c +++ b/drivers/gpu/drm/via/via_verifier.c @@ -235,7 +235,7 @@ static hazard_t table1[256]; static hazard_t table2[256]; static hazard_t table3[256]; -static __inline__ int +static inline int eat_words(const uint32_t **buf, const uint32_t *buf_end, unsigned num_words) { if ((buf_end - *buf) >= num_words) { @@ -250,7 +250,7 @@ eat_words(const uint32_t **buf, const uint32_t *buf_end, unsigned num_words) * Partially stolen from drm_memory.h */ -static __inline__ drm_local_map_t *via_drm_lookup_agp_map(drm_via_state_t *seq, +static inline drm_local_map_t *via_drm_lookup_agp_map(drm_via_state_t *seq, unsigned long offset, unsigned long size, struct drm_device *dev) @@ -287,7 +287,7 @@ static __inline__ drm_local_map_t *via_drm_lookup_agp_map(drm_via_state_t *seq, * very little CPU time. */ -static __inline__ int finish_current_sequence(drm_via_state_t * cur_seq) +static inline int finish_current_sequence(drm_via_state_t * cur_seq) { switch (cur_seq->unfinished) { case z_address: @@ -344,7 +344,7 @@ static __inline__ int finish_current_sequence(drm_via_state_t * cur_seq) return 0; } -static __inline__ int +static inline int investigate_hazard(uint32_t cmd, hazard_t hz, drm_via_state_t *cur_seq) { register uint32_t tmp, *tmp_addr; @@ -517,7 +517,7 @@ investigate_hazard(uint32_t cmd, hazard_t hz, drm_via_state_t *cur_seq) return 2; } -static __inline__ int +static inline int via_check_prim_list(uint32_t const **buffer, const uint32_t * buf_end, drm_via_state_t *cur_seq) { @@ -621,7 +621,7 @@ via_check_prim_list(uint32_t const **buffer, const uint32_t * buf_end, return ret; } -static __inline__ verifier_state_t +static inline verifier_state_t via_check_header2(uint32_t const **buffer, const uint32_t *buf_end, drm_via_state_t *hc_state) { @@ -713,7 +713,7 @@ via_check_header2(uint32_t const **buffer, const uint32_t *buf_end, return state_command; } -static __inline__ verifier_state_t +static inline verifier_state_t via_parse_header2(drm_via_private_t *dev_priv, uint32_t const **buffer, const uint32_t *buf_end, int *fire_count) { @@ -762,7 +762,7 @@ via_parse_header2(drm_via_private_t *dev_priv, uint32_t const **buffer, return state_command; } -static __inline__ int verify_mmio_address(uint32_t address) +static inline int verify_mmio_address(uint32_t address) { if ((address > 0x3FF) && (address < 0xC00)) { DRM_ERROR("Invalid VIDEO DMA command. " @@ -780,7 +780,7 @@ static __inline__ int verify_mmio_address(uint32_t address) return 0; } -static __inline__ int +static inline int verify_video_tail(uint32_t const **buffer, const uint32_t * buf_end, uint32_t dwords) { @@ -800,7 +800,7 @@ verify_video_tail(uint32_t const **buffer, const uint32_t * buf_end, return 0; } -static __inline__ verifier_state_t +static inline verifier_state_t via_check_header1(uint32_t const **buffer, const uint32_t * buf_end) { uint32_t cmd; @@ -832,7 +832,7 @@ via_check_header1(uint32_t const **buffer, const uint32_t * buf_end) return ret; } -static __inline__ verifier_state_t +static inline verifier_state_t via_parse_header1(drm_via_private_t *dev_priv, uint32_t const **buffer, const uint32_t *buf_end) { @@ -850,7 +850,7 @@ via_parse_header1(drm_via_private_t *dev_priv, uint32_t const **buffer, return state_command; } -static __inline__ verifier_state_t +static inline verifier_state_t via_check_vheader5(uint32_t const **buffer, const uint32_t *buf_end) { uint32_t data; @@ -883,7 +883,7 @@ via_check_vheader5(uint32_t const **buffer, const uint32_t *buf_end) } -static __inline__ verifier_state_t +static inline verifier_state_t via_parse_vheader5(drm_via_private_t *dev_priv, uint32_t const **buffer, const uint32_t *buf_end) { @@ -901,7 +901,7 @@ via_parse_vheader5(drm_via_private_t *dev_priv, uint32_t const **buffer, return state_command; } -static __inline__ verifier_state_t +static inline verifier_state_t via_check_vheader6(uint32_t const **buffer, const uint32_t * buf_end) { uint32_t data; @@ -938,7 +938,7 @@ via_check_vheader6(uint32_t const **buffer, const uint32_t * buf_end) return state_command; } -static __inline__ verifier_state_t +static inline verifier_state_t via_parse_vheader6(drm_via_private_t *dev_priv, uint32_t const **buffer, const uint32_t *buf_end) { diff --git a/drivers/isdn/hardware/eicon/platform.h b/drivers/isdn/hardware/eicon/platform.h index 62e2073c3690..ea861c904cd2 100644 --- a/drivers/isdn/hardware/eicon/platform.h +++ b/drivers/isdn/hardware/eicon/platform.h @@ -159,7 +159,7 @@ void diva_xdi_didd_remove_adapter(int card); /* ** memory allocation */ -static __inline__ void *diva_os_malloc(unsigned long flags, unsigned long size) +static inline void *diva_os_malloc(unsigned long flags, unsigned long size) { void *ret = NULL; @@ -168,7 +168,7 @@ static __inline__ void *diva_os_malloc(unsigned long flags, unsigned long size) } return (ret); } -static __inline__ void diva_os_free(unsigned long flags, void *ptr) +static inline void diva_os_free(unsigned long flags, void *ptr) { vfree(ptr); } @@ -185,11 +185,11 @@ void diva_os_free_message_buffer(diva_os_message_buffer_s *dmb); /* ** mSeconds waiting */ -static __inline__ void diva_os_sleep(dword mSec) +static inline void diva_os_sleep(dword mSec) { msleep(mSec); } -static __inline__ void diva_os_wait(dword mSec) +static inline void diva_os_wait(dword mSec) { mdelay(mSec); } @@ -233,12 +233,12 @@ void diva_os_remove_irq(void *context, byte irq); */ typedef long diva_os_spin_lock_magic_t; typedef spinlock_t diva_os_spin_lock_t; -static __inline__ int diva_os_initialize_spin_lock(spinlock_t *lock, void *unused) { \ +static inline int diva_os_initialize_spin_lock(spinlock_t *lock, void *unused) { \ spin_lock_init(lock); return (0); } -static __inline__ void diva_os_enter_spin_lock(diva_os_spin_lock_t *a, \ +static inline void diva_os_enter_spin_lock(diva_os_spin_lock_t *a, \ diva_os_spin_lock_magic_t *old_irql, \ void *dbg) { spin_lock_bh(a); } -static __inline__ void diva_os_leave_spin_lock(diva_os_spin_lock_t *a, \ +static inline void diva_os_leave_spin_lock(diva_os_spin_lock_t *a, \ diva_os_spin_lock_magic_t *old_irql, \ void *dbg) { spin_unlock_bh(a); } diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c index c138f66f2659..09d4cb136382 100644 --- a/drivers/isdn/i4l/isdn_net.c +++ b/drivers/isdn/i4l/isdn_net.c @@ -70,7 +70,7 @@ * Find out if the netdevice has been ifup-ed yet. * For slaves, look at the corresponding master. */ -static __inline__ int isdn_net_device_started(isdn_net_dev *n) +static inline int isdn_net_device_started(isdn_net_dev *n) { isdn_net_local *lp = n->local; struct net_device *dev; @@ -86,7 +86,7 @@ static __inline__ int isdn_net_device_started(isdn_net_dev *n) * wake up the network -> net_device queue. * For slaves, wake the corresponding master interface. */ -static __inline__ void isdn_net_device_wake_queue(isdn_net_local *lp) +static inline void isdn_net_device_wake_queue(isdn_net_local *lp) { if (lp->master) netif_wake_queue(lp->master); @@ -98,7 +98,7 @@ static __inline__ void isdn_net_device_wake_queue(isdn_net_local *lp) * stop the network -> net_device queue. * For slaves, stop the corresponding master interface. */ -static __inline__ void isdn_net_device_stop_queue(isdn_net_local *lp) +static inline void isdn_net_device_stop_queue(isdn_net_local *lp) { if (lp->master) netif_stop_queue(lp->master); @@ -111,7 +111,7 @@ static __inline__ void isdn_net_device_stop_queue(isdn_net_local *lp) * master or slave) is busy. It's busy iff all (master and slave) * queues are busy */ -static __inline__ int isdn_net_device_busy(isdn_net_local *lp) +static inline int isdn_net_device_busy(isdn_net_local *lp) { isdn_net_local *nlp; isdn_net_dev *nd; @@ -138,14 +138,14 @@ static __inline__ int isdn_net_device_busy(isdn_net_local *lp) return 1; } -static __inline__ void isdn_net_inc_frame_cnt(isdn_net_local *lp) +static inline void isdn_net_inc_frame_cnt(isdn_net_local *lp) { atomic_inc(&lp->frame_cnt); if (isdn_net_device_busy(lp)) isdn_net_device_stop_queue(lp); } -static __inline__ void isdn_net_dec_frame_cnt(isdn_net_local *lp) +static inline void isdn_net_dec_frame_cnt(isdn_net_local *lp) { atomic_dec(&lp->frame_cnt); @@ -158,7 +158,7 @@ static __inline__ void isdn_net_dec_frame_cnt(isdn_net_local *lp) } } -static __inline__ void isdn_net_zero_frame_cnt(isdn_net_local *lp) +static inline void isdn_net_zero_frame_cnt(isdn_net_local *lp) { atomic_set(&lp->frame_cnt, 0); } diff --git a/drivers/isdn/i4l/isdn_net.h b/drivers/isdn/i4l/isdn_net.h index cca6d68da171..5fdff8a0ac8d 100644 --- a/drivers/isdn/i4l/isdn_net.h +++ b/drivers/isdn/i4l/isdn_net.h @@ -64,7 +64,7 @@ extern void isdn_net_write_super(isdn_net_local *lp, struct sk_buff *skb); /* * is this particular channel busy? */ -static __inline__ int isdn_net_lp_busy(isdn_net_local *lp) +static inline int isdn_net_lp_busy(isdn_net_local *lp) { if (atomic_read(&lp->frame_cnt) < ISDN_NET_MAX_QUEUE_LENGTH) return 0; @@ -76,7 +76,7 @@ static __inline__ int isdn_net_lp_busy(isdn_net_local *lp) * For the given net device, this will get a non-busy channel out of the * corresponding bundle. The returned channel is locked. */ -static __inline__ isdn_net_local *isdn_net_get_locked_lp(isdn_net_dev *nd) +static inline isdn_net_local *isdn_net_get_locked_lp(isdn_net_dev *nd) { unsigned long flags; isdn_net_local *lp; @@ -104,7 +104,7 @@ static __inline__ isdn_net_local *isdn_net_get_locked_lp(isdn_net_dev *nd) /* * add a channel to a bundle */ -static __inline__ void isdn_net_add_to_bundle(isdn_net_dev *nd, isdn_net_local *nlp) +static inline void isdn_net_add_to_bundle(isdn_net_dev *nd, isdn_net_local *nlp) { isdn_net_local *lp; unsigned long flags; @@ -125,7 +125,7 @@ static __inline__ void isdn_net_add_to_bundle(isdn_net_dev *nd, isdn_net_local * /* * remove a channel from the bundle it belongs to */ -static __inline__ void isdn_net_rm_from_bundle(isdn_net_local *lp) +static inline void isdn_net_rm_from_bundle(isdn_net_local *lp) { isdn_net_local *master_lp = lp; unsigned long flags; diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c b/drivers/media/pci/ivtv/ivtv-ioctl.c index 4cdc6d2be85d..e4e8b38387ec 100644 --- a/drivers/media/pci/ivtv/ivtv-ioctl.c +++ b/drivers/media/pci/ivtv/ivtv-ioctl.c @@ -1622,7 +1622,7 @@ static int ivtv_try_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder } #ifdef CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS -static __inline__ void warn_deprecated_ioctl(const char *name) +static inline void warn_deprecated_ioctl(const char *name) { pr_warn_once("warning: the %s ioctl is deprecated. Don't use it, as it will be removed soon\n", name); diff --git a/drivers/net/ethernet/sun/sungem.c b/drivers/net/ethernet/sun/sungem.c index b9221fc1674d..4da7a3ac3c87 100644 --- a/drivers/net/ethernet/sun/sungem.c +++ b/drivers/net/ethernet/sun/sungem.c @@ -640,7 +640,7 @@ static int gem_abnormal_irq(struct net_device *dev, struct gem *gp, u32 gem_stat return 0; } -static __inline__ void gem_tx(struct net_device *dev, struct gem *gp, u32 gem_status) +static inline void gem_tx(struct net_device *dev, struct gem *gp, u32 gem_status) { int entry, limit; @@ -710,7 +710,7 @@ static __inline__ void gem_tx(struct net_device *dev, struct gem *gp, u32 gem_st } } -static __inline__ void gem_post_rxds(struct gem *gp, int limit) +static inline void gem_post_rxds(struct gem *gp, int limit) { int cluster_start, curr, count, kick; @@ -742,7 +742,7 @@ static __inline__ void gem_post_rxds(struct gem *gp, int limit) #define ALIGNED_RX_SKB_ADDR(addr) \ ((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr)) -static __inline__ struct sk_buff *gem_alloc_skb(struct net_device *dev, int size, +static inline struct sk_buff *gem_alloc_skb(struct net_device *dev, int size, gfp_t gfp_flags) { struct sk_buff *skb = alloc_skb(size + 64, gfp_flags); @@ -988,7 +988,7 @@ static void gem_tx_timeout(struct net_device *dev) gem_schedule_reset(gp); } -static __inline__ int gem_intme(int entry) +static inline int gem_intme(int entry) { /* Algorithm: IRQ every 1/2 of descriptors. */ if (!(entry & ((TX_RING_SIZE>>1)-1))) diff --git a/drivers/net/ethernet/sun/sunhme.c b/drivers/net/ethernet/sun/sunhme.c index 06da2f59fcbf..1b7c95d17e46 100644 --- a/drivers/net/ethernet/sun/sunhme.c +++ b/drivers/net/ethernet/sun/sunhme.c @@ -108,7 +108,7 @@ struct hme_tx_logent { #define TX_LOG_LEN 128 static struct hme_tx_logent tx_log[TX_LOG_LEN]; static int txlog_cur_entry; -static __inline__ void tx_add_log(struct happy_meal *hp, unsigned int a, unsigned int s) +static inline void tx_add_log(struct happy_meal *hp, unsigned int a, unsigned int s) { struct hme_tx_logent *tlp; unsigned long flags; @@ -123,7 +123,7 @@ static __inline__ void tx_add_log(struct happy_meal *hp, unsigned int a, unsigne txlog_cur_entry = (txlog_cur_entry + 1) & (TX_LOG_LEN - 1); local_irq_restore(flags); } -static __inline__ void tx_dump_log(void) +static inline void tx_dump_log(void) { int i, this; @@ -136,7 +136,7 @@ static __inline__ void tx_dump_log(void) this = (this + 1) & (TX_LOG_LEN - 1); } } -static __inline__ void tx_dump_ring(struct happy_meal *hp) +static inline void tx_dump_ring(struct happy_meal *hp) { struct hmeal_init_block *hb = hp->happy_block; struct happy_meal_txd *tp = &hb->happy_meal_txd[0]; diff --git a/drivers/net/hamradio/baycom_ser_fdx.c b/drivers/net/hamradio/baycom_ser_fdx.c index 190f66c88479..bd91fb571927 100644 --- a/drivers/net/hamradio/baycom_ser_fdx.c +++ b/drivers/net/hamradio/baycom_ser_fdx.c @@ -229,7 +229,7 @@ static inline unsigned int hweight8(unsigned int w) /* --------------------------------------------------------------------- */ -static __inline__ void ser12_rx(struct net_device *dev, struct baycom_state *bc, struct timespec64 *ts, unsigned char curs) +static inline void ser12_rx(struct net_device *dev, struct baycom_state *bc, struct timespec64 *ts, unsigned char curs) { int timediff; int bdus8 = bc->baud_us >> 3; diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c index 0e3f8ed84660..84145ec82a36 100644 --- a/drivers/net/wan/lapbether.c +++ b/drivers/net/wan/lapbether.c @@ -76,7 +76,7 @@ static struct lapbethdev *lapbeth_get_x25_dev(struct net_device *dev) return NULL; } -static __inline__ int dev_is_ethdev(struct net_device *dev) +static inline int dev_is_ethdev(struct net_device *dev) { return dev->type == ARPHRD_ETHER && strncmp(dev->name, "dummy", 5); } diff --git a/drivers/net/wan/n2.c b/drivers/net/wan/n2.c index c8f4517db3a0..45ea8da79fa5 100644 --- a/drivers/net/wan/n2.c +++ b/drivers/net/wan/n2.c @@ -148,13 +148,13 @@ static card_t **new_card = &first_card; &(card)->ports[port] : NULL) -static __inline__ u8 sca_get_page(card_t *card) +static inline u8 sca_get_page(card_t *card) { return inb(card->io + N2_PSR) & PSR_PAGEBITS; } -static __inline__ void openwin(card_t *card, u8 page) +static inline void openwin(card_t *card, u8 page) { u8 psr = inb(card->io + N2_PSR); outb((psr & ~PSR_PAGEBITS) | page, card->io + N2_PSR); diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index 0c6e8b44b4ed..65baa86dbae7 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c @@ -349,7 +349,7 @@ static void led_LCD_driver(unsigned char leds) ** (analog to dev_get_info() from net/core/dev.c) ** */ -static __inline__ int led_get_net_activity(void) +static inline int led_get_net_activity(void) { #ifndef CONFIG_NET return 0; @@ -401,7 +401,7 @@ static __inline__ int led_get_net_activity(void) ** calculate if there was disk-io in the system ** */ -static __inline__ int led_get_diskio_activity(void) +static inline int led_get_diskio_activity(void) { static unsigned long last_pgpgin, last_pgpgout; unsigned long events[NR_VM_EVENT_ITEMS]; diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c index 11de0eccf968..a7a79aebae17 100644 --- a/drivers/parisc/sba_iommu.c +++ b/drivers/parisc/sba_iommu.c @@ -89,7 +89,7 @@ #define DBG_RES(x...) #endif -#define SBA_INLINE __inline__ +#define SBA_INLINE inline #define DEFAULT_DMA_HINT_REG 0 diff --git a/drivers/parport/parport_gsc.c b/drivers/parport/parport_gsc.c index 190c0a7a1c52..20dab463e40d 100644 --- a/drivers/parport/parport_gsc.c +++ b/drivers/parport/parport_gsc.c @@ -76,7 +76,7 @@ static int clear_epp_timeout(struct parport *pb) * Access functions. * * Most of these aren't static because they may be used by the - * parport_xxx_yyy macros. extern __inline__ versions of several + * parport_xxx_yyy macros. extern inline versions of several * of these are in parport_gsc.h. */ diff --git a/drivers/parport/parport_gsc.h b/drivers/parport/parport_gsc.h index 812214768d27..21a3f96806f9 100644 --- a/drivers/parport/parport_gsc.h +++ b/drivers/parport/parport_gsc.h @@ -41,13 +41,13 @@ #define parport_readb gsc_readb #define parport_writeb gsc_writeb #else -static __inline__ unsigned char parport_readb( unsigned long port ) +static inline unsigned char parport_readb( unsigned long port ) { udelay(DELAY_TIME); return gsc_readb(port); } -static __inline__ void parport_writeb( unsigned char value, unsigned long port ) +static inline void parport_writeb( unsigned char value, unsigned long port ) { gsc_writeb(value,port); udelay(DELAY_TIME); diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c index 380916bff9e0..c5d3a1053dff 100644 --- a/drivers/parport/parport_pc.c +++ b/drivers/parport/parport_pc.c @@ -225,7 +225,7 @@ static int clear_epp_timeout(struct parport *pb) * Access functions. * * Most of these aren't static because they may be used by the - * parport_xxx_yyy macros. extern __inline__ versions of several + * parport_xxx_yyy macros. extern inline versions of several * of these are in parport_pc.h. */ diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index 5c7858e735c9..c278783ad59b 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c @@ -4481,7 +4481,7 @@ lpfc_info(struct Scsi_Host *host) * This routine modifies fcp_poll_timer field of @phba by cfg_poll_tmo. * The default value of cfg_poll_tmo is 10 milliseconds. **/ -static __inline__ void lpfc_poll_rearm_timer(struct lpfc_hba * phba) +static inline void lpfc_poll_rearm_timer(struct lpfc_hba * phba) { unsigned long poll_tmo_expires = (jiffies + msecs_to_jiffies(phba->cfg_poll_tmo)); diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c index 20011c8afbb5..299963f8d0ac 100644 --- a/drivers/scsi/pcmcia/sym53c500_cs.c +++ b/drivers/scsi/pcmcia/sym53c500_cs.c @@ -241,7 +241,7 @@ SYM53C500_int_host_reset(int io_port) chip_init(io_port); } -static __inline__ int +static inline int SYM53C500_pio_read(int fast_pio, int base, unsigned char *request, unsigned int reqlen) { int i; @@ -296,7 +296,7 @@ SYM53C500_pio_read(int fast_pio, int base, unsigned char *request, unsigned int return 0; } -static __inline__ int +static inline int SYM53C500_pio_write(int fast_pio, int base, unsigned char *request, unsigned int reqlen) { int i = 0; diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h index 4351736b2426..d6db2ad8bf57 100644 --- a/drivers/scsi/qla2xxx/qla_inline.h +++ b/drivers/scsi/qla2xxx/qla_inline.h @@ -39,7 +39,7 @@ qla24xx_calc_iocbs(scsi_qla_host_t *vha, uint16_t dsds) * Returns: * register value. */ -static __inline__ uint16_t +static inline uint16_t qla2x00_debounce_register(volatile uint16_t __iomem *addr) { volatile uint16_t first; diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 42b8f0d3e580..f48f0b8d0b69 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -344,7 +344,7 @@ struct scsi_transport_template *qla2xxx_transport_vport_template = NULL; * Timer routines */ -__inline__ void +inline void qla2x00_start_timer(scsi_qla_host_t *vha, unsigned long interval) { timer_setup(&vha->timer, qla2x00_timer, 0); @@ -366,7 +366,7 @@ qla2x00_restart_timer(scsi_qla_host_t *vha, unsigned long interval) mod_timer(&vha->timer, jiffies + interval * HZ); } -static __inline__ void +static inline void qla2x00_stop_timer(scsi_qla_host_t *vha) { del_timer_sync(&vha->timer); diff --git a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c index 110bbe340b78..969b93adc214 100644 --- a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c +++ b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c @@ -831,12 +831,12 @@ static void pwr_rpwm_timeout_handler(struct timer_list *t) _set_workitem(&pwrpriv->rpwmtimeoutwi); } -static __inline void register_task_alive(struct pwrctrl_priv *pwrctrl, u32 tag) +static inline void register_task_alive(struct pwrctrl_priv *pwrctrl, u32 tag) { pwrctrl->alives |= tag; } -static __inline void unregister_task_alive(struct pwrctrl_priv *pwrctrl, u32 tag) +static inline void unregister_task_alive(struct pwrctrl_priv *pwrctrl, u32 tag) { pwrctrl->alives &= ~tag; } diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c index 2c65af319a60..de0476f1f23b 100644 --- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c +++ b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c @@ -456,7 +456,7 @@ void set_channel_bwmode(struct adapter *padapter, unsigned char channel, unsigne mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex)); } -__inline u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork) +inline u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork) { return pnetwork->MacAddress; } diff --git a/drivers/staging/rtl8723bs/include/drv_types.h b/drivers/staging/rtl8723bs/include/drv_types.h index c57f290f605a..9a56fc6c2d1e 100644 --- a/drivers/staging/rtl8723bs/include/drv_types.h +++ b/drivers/staging/rtl8723bs/include/drv_types.h @@ -485,7 +485,7 @@ struct dvobj_priv #define dvobj_to_pwrctl(dvobj) (&(dvobj->pwrctl_priv)) #define pwrctl_to_dvobj(pwrctl) container_of(pwrctl, struct dvobj_priv, pwrctl_priv) -__inline static struct device *dvobj_to_dev(struct dvobj_priv *dvobj) +inline static struct device *dvobj_to_dev(struct dvobj_priv *dvobj) { /* todo: get interface type from dvobj and the return the dev accordingly */ #ifdef RTW_DVOBJ_CHIP_HW_TYPE @@ -643,14 +643,14 @@ struct adapter { /* define RTW_DISABLE_FUNC(padapter, func) (atomic_add(&adapter_to_dvobj(padapter)->disable_func, (func))) */ /* define RTW_ENABLE_FUNC(padapter, func) (atomic_sub(&adapter_to_dvobj(padapter)->disable_func, (func))) */ -__inline static void RTW_DISABLE_FUNC(struct adapter *padapter, int func_bit) +inline static void RTW_DISABLE_FUNC(struct adapter *padapter, int func_bit) { int df = atomic_read(&adapter_to_dvobj(padapter)->disable_func); df |= func_bit; atomic_set(&adapter_to_dvobj(padapter)->disable_func, df); } -__inline static void RTW_ENABLE_FUNC(struct adapter *padapter, int func_bit) +inline static void RTW_ENABLE_FUNC(struct adapter *padapter, int func_bit) { int df = atomic_read(&adapter_to_dvobj(padapter)->disable_func); df &= ~(func_bit); diff --git a/drivers/staging/rtl8723bs/include/ieee80211.h b/drivers/staging/rtl8723bs/include/ieee80211.h index bcc8dfa8e672..b95ba81036f4 100644 --- a/drivers/staging/rtl8723bs/include/ieee80211.h +++ b/drivers/staging/rtl8723bs/include/ieee80211.h @@ -850,18 +850,18 @@ enum ieee80211_state { #define IP_FMT "%pI4" #define IP_ARG(x) (x) -extern __inline int is_multicast_mac_addr(const u8 *addr) +extern inline int is_multicast_mac_addr(const u8 *addr) { return ((addr[0] != 0xff) && (0x01 & addr[0])); } -extern __inline int is_broadcast_mac_addr(const u8 *addr) +extern inline int is_broadcast_mac_addr(const u8 *addr) { return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); } -extern __inline int is_zero_mac_addr(const u8 *addr) +extern inline int is_zero_mac_addr(const u8 *addr) { return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); diff --git a/drivers/staging/rtl8723bs/include/osdep_service.h b/drivers/staging/rtl8723bs/include/osdep_service.h index 76d619585046..3a2eb3cbc0e4 100644 --- a/drivers/staging/rtl8723bs/include/osdep_service.h +++ b/drivers/staging/rtl8723bs/include/osdep_service.h @@ -110,12 +110,12 @@ int _rtw_netif_rx(_nic_hdl ndev, struct sk_buff *skb); extern void _rtw_init_queue(struct __queue *pqueue); -static __inline void thread_enter(char *name) +static inline void thread_enter(char *name) { allow_signal(SIGTERM); } -__inline static void flush_signals_thread(void) +inline static void flush_signals_thread(void) { if (signal_pending (current)) { @@ -125,7 +125,7 @@ __inline static void flush_signals_thread(void) #define rtw_warn_on(condition) WARN_ON(condition) -__inline static int rtw_bug_check(void *parg1, void *parg2, void *parg3, void *parg4) +inline static int rtw_bug_check(void *parg1, void *parg2, void *parg3, void *parg4) { int ret = true; @@ -136,7 +136,7 @@ __inline static int rtw_bug_check(void *parg1, void *parg2, void *parg3, void *p #define _RND(sz, r) ((((sz)+((r)-1))/(r))*(r)) #define RND4(x) (((x >> 2) + (((x & 3) == 0) ? 0: 1)) << 2) -__inline static u32 _RND4(u32 sz) +inline static u32 _RND4(u32 sz) { u32 val; @@ -147,7 +147,7 @@ __inline static u32 _RND4(u32 sz) } -__inline static u32 _RND8(u32 sz) +inline static u32 _RND8(u32 sz) { u32 val; diff --git a/drivers/staging/rtl8723bs/include/osdep_service_linux.h b/drivers/staging/rtl8723bs/include/osdep_service_linux.h index 58d1e1019241..d5ca84b326ec 100644 --- a/drivers/staging/rtl8723bs/include/osdep_service_linux.h +++ b/drivers/staging/rtl8723bs/include/osdep_service_linux.h @@ -66,12 +66,12 @@ typedef struct work_struct _workitem; -__inline static struct list_head *get_next(struct list_head *list) +inline static struct list_head *get_next(struct list_head *list) { return list->next; } -__inline static struct list_head *get_list_head(struct __queue *queue) +inline static struct list_head *get_list_head(struct __queue *queue) { return (&(queue->queue)); } @@ -80,28 +80,28 @@ __inline static struct list_head *get_list_head(struct __queue *queue) #define LIST_CONTAINOR(ptr, type, member) \ container_of(ptr, type, member) -__inline static void _set_timer(_timer *ptimer, u32 delay_time) +inline static void _set_timer(_timer *ptimer, u32 delay_time) { mod_timer(ptimer , (jiffies+(delay_time*HZ/1000))); } -__inline static void _cancel_timer(_timer *ptimer, u8 *bcancelled) +inline static void _cancel_timer(_timer *ptimer, u8 *bcancelled) { del_timer_sync(ptimer); *bcancelled = true;/* true == 1; false == 0 */ } -__inline static void _init_workitem(_workitem *pwork, void *pfunc, void *cntx) +inline static void _init_workitem(_workitem *pwork, void *pfunc, void *cntx) { INIT_WORK(pwork, pfunc); } -__inline static void _set_workitem(_workitem *pwork) +inline static void _set_workitem(_workitem *pwork) { schedule_work(pwork); } -__inline static void _cancel_workitem_sync(_workitem *pwork) +inline static void _cancel_workitem_sync(_workitem *pwork) { cancel_work_sync(pwork); } diff --git a/drivers/staging/rtl8723bs/include/rtw_mlme.h b/drivers/staging/rtl8723bs/include/rtw_mlme.h index 1ea9ea0e8d2e..80882a05b6fb 100644 --- a/drivers/staging/rtl8723bs/include/rtw_mlme.h +++ b/drivers/staging/rtl8723bs/include/rtw_mlme.h @@ -525,13 +525,13 @@ extern sint rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv); extern sint rtw_set_key(struct adapter *adapter, struct security_priv *psecuritypriv, sint keyid, u8 set_tx, bool enqueue); extern sint rtw_set_auth(struct adapter *adapter, struct security_priv *psecuritypriv); -__inline static u8 *get_bssid(struct mlme_priv *pmlmepriv) +inline static u8 *get_bssid(struct mlme_priv *pmlmepriv) { /* if sta_mode:pmlmepriv->cur_network.network.MacAddress => bssid */ /* if adhoc_mode:pmlmepriv->cur_network.network.MacAddress => ibss mac address */ return pmlmepriv->cur_network.network.MacAddress; } -__inline static sint check_fwstate(struct mlme_priv *pmlmepriv, sint state) +inline static sint check_fwstate(struct mlme_priv *pmlmepriv, sint state) { if (pmlmepriv->fw_state & state) return true; @@ -539,7 +539,7 @@ __inline static sint check_fwstate(struct mlme_priv *pmlmepriv, sint state) return false; } -__inline static sint get_fwstate(struct mlme_priv *pmlmepriv) +inline static sint get_fwstate(struct mlme_priv *pmlmepriv) { return pmlmepriv->fw_state; } @@ -551,7 +551,7 @@ __inline static sint get_fwstate(struct mlme_priv *pmlmepriv) * ### NOTE:#### (!!!!) * MUST TAKE CARE THAT BEFORE CALLING THIS FUNC, YOU SHOULD HAVE LOCKED pmlmepriv->lock */ -__inline static void set_fwstate(struct mlme_priv *pmlmepriv, sint state) +inline static void set_fwstate(struct mlme_priv *pmlmepriv, sint state) { pmlmepriv->fw_state |= state; /* FOR HW integration */ @@ -560,7 +560,7 @@ __inline static void set_fwstate(struct mlme_priv *pmlmepriv, sint state) } } -__inline static void _clr_fwstate_(struct mlme_priv *pmlmepriv, sint state) +inline static void _clr_fwstate_(struct mlme_priv *pmlmepriv, sint state) { pmlmepriv->fw_state &= ~state; /* FOR HW integration */ @@ -573,7 +573,7 @@ __inline static void _clr_fwstate_(struct mlme_priv *pmlmepriv, sint state) * No Limit on the calling context, * therefore set it to be the critical section... */ -__inline static void clr_fwstate(struct mlme_priv *pmlmepriv, sint state) +inline static void clr_fwstate(struct mlme_priv *pmlmepriv, sint state) { spin_lock_bh(&pmlmepriv->lock); if (check_fwstate(pmlmepriv, state) == true) @@ -581,7 +581,7 @@ __inline static void clr_fwstate(struct mlme_priv *pmlmepriv, sint state) spin_unlock_bh(&pmlmepriv->lock); } -__inline static void set_scanned_network_val(struct mlme_priv *pmlmepriv, sint val) +inline static void set_scanned_network_val(struct mlme_priv *pmlmepriv, sint val) { spin_lock_bh(&pmlmepriv->lock); pmlmepriv->num_of_scanned = val; diff --git a/drivers/staging/rtl8723bs/include/rtw_recv.h b/drivers/staging/rtl8723bs/include/rtw_recv.h index 1f53c1c7b0da..ca14532df09f 100644 --- a/drivers/staging/rtl8723bs/include/rtw_recv.h +++ b/drivers/staging/rtl8723bs/include/rtw_recv.h @@ -405,7 +405,7 @@ struct recv_buf *rtw_dequeue_recvbuf (struct __queue *queue); void rtw_reordering_ctrl_timeout_handler(struct timer_list *t); -__inline static u8 *get_rxmem(union recv_frame *precvframe) +inline static u8 *get_rxmem(union recv_frame *precvframe) { /* always return rx_head... */ if (precvframe == NULL) @@ -414,7 +414,7 @@ __inline static u8 *get_rxmem(union recv_frame *precvframe) return precvframe->u.hdr.rx_head; } -__inline static u8 *get_recvframe_data(union recv_frame *precvframe) +inline static u8 *get_recvframe_data(union recv_frame *precvframe) { /* alwasy return rx_data */ @@ -425,7 +425,7 @@ __inline static u8 *get_recvframe_data(union recv_frame *precvframe) } -__inline static u8 *recvframe_pull(union recv_frame *precvframe, sint sz) +inline static u8 *recvframe_pull(union recv_frame *precvframe, sint sz) { /* rx_data += sz; move rx_data sz bytes hereafter */ @@ -450,7 +450,7 @@ __inline static u8 *recvframe_pull(union recv_frame *precvframe, sint sz) } -__inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz) +inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz) { /* rx_tai += sz; move rx_tail sz bytes hereafter */ @@ -479,7 +479,7 @@ __inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz) -__inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) +inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) { /* rmv data from rx_tail (by yitsen) */ @@ -503,7 +503,7 @@ __inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) } -__inline static union recv_frame *rxmem_to_recvframe(u8 *rxmem) +inline static union recv_frame *rxmem_to_recvframe(u8 *rxmem) { /* due to the design of 2048 bytes alignment of recv_frame, we can reference the union recv_frame */ /* from any given member of recv_frame. */ @@ -513,13 +513,13 @@ __inline static union recv_frame *rxmem_to_recvframe(u8 *rxmem) } -__inline static sint get_recvframe_len(union recv_frame *precvframe) +inline static sint get_recvframe_len(union recv_frame *precvframe) { return precvframe->u.hdr.len; } -__inline static s32 translate_percentage_to_dbm(u32 SignalStrengthIndex) +inline static s32 translate_percentage_to_dbm(u32 SignalStrengthIndex) { s32 SignalPower; /* in dBm. */ diff --git a/drivers/staging/rtl8723bs/include/sta_info.h b/drivers/staging/rtl8723bs/include/sta_info.h index b9df42d0677e..a4817ea9e4a1 100644 --- a/drivers/staging/rtl8723bs/include/sta_info.h +++ b/drivers/staging/rtl8723bs/include/sta_info.h @@ -348,7 +348,7 @@ struct sta_priv { }; -__inline static u32 wifi_mac_hash(u8 *mac) +inline static u32 wifi_mac_hash(u8 *mac) { u32 x; diff --git a/drivers/staging/rtl8723bs/include/wifi.h b/drivers/staging/rtl8723bs/include/wifi.h index 559bf2606fb7..74d5cf442354 100644 --- a/drivers/staging/rtl8723bs/include/wifi.h +++ b/drivers/staging/rtl8723bs/include/wifi.h @@ -347,7 +347,7 @@ enum WIFI_REG_DOMAIN { (addr[4] == 0xff) && (addr[5] == 0xff)) ? true : false \ ) -__inline static int IS_MCAST(unsigned char *da) +inline static int IS_MCAST(unsigned char *da) { if ((*da) & 0x01) return true; @@ -355,20 +355,20 @@ __inline static int IS_MCAST(unsigned char *da) return false; } -__inline static unsigned char * get_ra(unsigned char *pframe) +inline static unsigned char * get_ra(unsigned char *pframe) { unsigned char *ra; ra = GetAddr1Ptr(pframe); return ra; } -__inline static unsigned char * get_ta(unsigned char *pframe) +inline static unsigned char * get_ta(unsigned char *pframe) { unsigned char *ta; ta = GetAddr2Ptr(pframe); return ta; } -__inline static unsigned char * get_da(unsigned char *pframe) +inline static unsigned char * get_da(unsigned char *pframe) { unsigned char *da; unsigned int to_fr_ds = (GetToDs(pframe) << 1) | GetFrDs(pframe); @@ -392,7 +392,7 @@ __inline static unsigned char * get_da(unsigned char *pframe) } -__inline static unsigned char * get_sa(unsigned char *pframe) +inline static unsigned char * get_sa(unsigned char *pframe) { unsigned char *sa; unsigned int to_fr_ds = (GetToDs(pframe) << 1) | GetFrDs(pframe); @@ -415,7 +415,7 @@ __inline static unsigned char * get_sa(unsigned char *pframe) return sa; } -__inline static unsigned char * get_hdr_bssid(unsigned char *pframe) +inline static unsigned char * get_hdr_bssid(unsigned char *pframe) { unsigned char *sa = NULL; unsigned int to_fr_ds = (GetToDs(pframe) << 1) | GetFrDs(pframe); @@ -439,7 +439,7 @@ __inline static unsigned char * get_hdr_bssid(unsigned char *pframe) } -__inline static int IsFrameTypeCtrl(unsigned char *pframe) +inline static int IsFrameTypeCtrl(unsigned char *pframe) { if (WIFI_CTRL_TYPE == GetFrameType(pframe)) return true; diff --git a/drivers/staging/rtl8723bs/include/wlan_bssdef.h b/drivers/staging/rtl8723bs/include/wlan_bssdef.h index bdb14a84e5a5..94cb3248bc71 100644 --- a/drivers/staging/rtl8723bs/include/wlan_bssdef.h +++ b/drivers/staging/rtl8723bs/include/wlan_bssdef.h @@ -223,7 +223,7 @@ struct wlan_bssid_ex { u8 IEs[MAX_IE_SZ]; /* timestamp, beacon interval, and capability information) */ } __packed; -__inline static uint get_wlan_bssid_ex_sz(struct wlan_bssid_ex *bss) +inline static uint get_wlan_bssid_ex_sz(struct wlan_bssid_ex *bss) { return (sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + bss->IELength); } diff --git a/drivers/tty/amiserial.c b/drivers/tty/amiserial.c index 34dead614149..c1bd9b74f4d5 100644 --- a/drivers/tty/amiserial.c +++ b/drivers/tty/amiserial.c @@ -171,7 +171,7 @@ static inline int serial_paranoia_check(struct serial_state *info, #define SER_CTS (1<<4) #define SER_DSR (1<<3) -static __inline__ void rtsdtr_ctrl(int bits) +static inline void rtsdtr_ctrl(int bits) { ciab.pra = ((bits & (SER_RTS | SER_DTR)) ^ (SER_RTS | SER_DTR)) | (ciab.pra & ~(SER_RTS | SER_DTR)); } diff --git a/drivers/tty/serial/ip22zilog.c b/drivers/tty/serial/ip22zilog.c index 8c810733df3d..8ccf8b7ee8bb 100644 --- a/drivers/tty/serial/ip22zilog.c +++ b/drivers/tty/serial/ip22zilog.c @@ -490,7 +490,7 @@ static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id) /* A convenient way to quickly get R0 status. The caller must _not_ hold the * port lock, it is acquired here. */ -static __inline__ unsigned char ip22zilog_read_channel_status(struct uart_port *port) +static inline unsigned char ip22zilog_read_channel_status(struct uart_port *port) { struct zilog_channel *channel; unsigned char status; diff --git a/drivers/tty/serial/sunsab.c b/drivers/tty/serial/sunsab.c index 72131b5e132e..ec62843a39f4 100644 --- a/drivers/tty/serial/sunsab.c +++ b/drivers/tty/serial/sunsab.c @@ -92,7 +92,7 @@ static char *sab82532_version[16] = { #define SAB82532_RECV_FIFO_SIZE 32 /* Standard async fifo sizes */ #define SAB82532_XMIT_FIFO_SIZE 32 -static __inline__ void sunsab_tec_wait(struct uart_sunsab_port *up) +static inline void sunsab_tec_wait(struct uart_sunsab_port *up) { int timeout = up->tec_timeout; @@ -100,7 +100,7 @@ static __inline__ void sunsab_tec_wait(struct uart_sunsab_port *up) udelay(1); } -static __inline__ void sunsab_cec_wait(struct uart_sunsab_port *up) +static inline void sunsab_cec_wait(struct uart_sunsab_port *up) { int timeout = up->cec_timeout; diff --git a/drivers/tty/serial/sunzilog.c b/drivers/tty/serial/sunzilog.c index bc7af8b08a72..5c7f1648f54d 100644 --- a/drivers/tty/serial/sunzilog.c +++ b/drivers/tty/serial/sunzilog.c @@ -590,7 +590,7 @@ static irqreturn_t sunzilog_interrupt(int irq, void *dev_id) /* A convenient way to quickly get R0 status. The caller must _not_ hold the * port lock, it is acquired here. */ -static __inline__ unsigned char sunzilog_read_channel_status(struct uart_port *port) +static inline unsigned char sunzilog_read_channel_status(struct uart_port *port) { struct zilog_channel __iomem *channel; unsigned char status; diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index 75ebbbf0a1fb..57f74bf7731f 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -181,10 +181,10 @@ static void fbcon_set_palette(struct vc_data *vc, const unsigned char *table); /* * Internal routines */ -static __inline__ void ywrap_up(struct vc_data *vc, int count); -static __inline__ void ywrap_down(struct vc_data *vc, int count); -static __inline__ void ypan_up(struct vc_data *vc, int count); -static __inline__ void ypan_down(struct vc_data *vc, int count); +static inline void ywrap_up(struct vc_data *vc, int count); +static inline void ywrap_down(struct vc_data *vc, int count); +static inline void ypan_up(struct vc_data *vc, int count); +static inline void ypan_down(struct vc_data *vc, int count); static void fbcon_bmove_rec(struct vc_data *vc, struct display *p, int sy, int sx, int dy, int dx, int height, int width, u_int y_break); static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var, @@ -1442,7 +1442,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var, } } -static __inline__ void ywrap_up(struct vc_data *vc, int count) +static inline void ywrap_up(struct vc_data *vc, int count) { struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct fbcon_ops *ops = info->fbcon_par; @@ -1461,7 +1461,7 @@ static __inline__ void ywrap_up(struct vc_data *vc, int count) scrollback_current = 0; } -static __inline__ void ywrap_down(struct vc_data *vc, int count) +static inline void ywrap_down(struct vc_data *vc, int count) { struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct fbcon_ops *ops = info->fbcon_par; @@ -1480,7 +1480,7 @@ static __inline__ void ywrap_down(struct vc_data *vc, int count) scrollback_current = 0; } -static __inline__ void ypan_up(struct vc_data *vc, int count) +static inline void ypan_up(struct vc_data *vc, int count) { struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct display *p = &fb_display[vc->vc_num]; @@ -1504,7 +1504,7 @@ static __inline__ void ypan_up(struct vc_data *vc, int count) scrollback_current = 0; } -static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count) +static inline void ypan_up_redraw(struct vc_data *vc, int t, int count) { struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct fbcon_ops *ops = info->fbcon_par; @@ -1528,7 +1528,7 @@ static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count) scrollback_current = 0; } -static __inline__ void ypan_down(struct vc_data *vc, int count) +static inline void ypan_down(struct vc_data *vc, int count) { struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct display *p = &fb_display[vc->vc_num]; @@ -1552,7 +1552,7 @@ static __inline__ void ypan_down(struct vc_data *vc, int count) scrollback_current = 0; } -static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count) +static inline void ypan_down_redraw(struct vc_data *vc, int t, int count) { struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct fbcon_ops *ops = info->fbcon_par; diff --git a/drivers/video/fbdev/ffb.c b/drivers/video/fbdev/ffb.c index 6b1915872af1..d86911707e54 100644 --- a/drivers/video/fbdev/ffb.c +++ b/drivers/video/fbdev/ffb.c @@ -411,7 +411,7 @@ static int ffb_sync(struct fb_info *p) return 0; } -static __inline__ void ffb_rop(struct ffb_par *par, u32 rop) +static inline void ffb_rop(struct ffb_par *par, u32 rop) { if (par->rop_cache != rop) { FFBFifo(par, 1); diff --git a/drivers/video/fbdev/intelfb/intelfbdrv.c b/drivers/video/fbdev/intelfb/intelfbdrv.c index d7463a2a5d83..de1ee0f5406a 100644 --- a/drivers/video/fbdev/intelfb/intelfbdrv.c +++ b/drivers/video/fbdev/intelfb/intelfbdrv.c @@ -270,7 +270,7 @@ MODULE_PARM_DESC(mode, #define OPT_INTVAL(opt, name) simple_strtoul(opt + strlen(name) + 1, NULL, 0) #define OPT_STRVAL(opt, name) (opt + strlen(name)) -static __inline__ char * get_opt_string(const char *this_opt, const char *name) +static inline char * get_opt_string(const char *this_opt, const char *name) { const char *p; int i; @@ -288,7 +288,7 @@ static __inline__ char * get_opt_string(const char *this_opt, const char *name) return ret; } -static __inline__ int get_opt_int(const char *this_opt, const char *name, +static inline int get_opt_int(const char *this_opt, const char *name, int *ret) { if (!ret) @@ -301,7 +301,7 @@ static __inline__ int get_opt_int(const char *this_opt, const char *name, return 1; } -static __inline__ int get_opt_bool(const char *this_opt, const char *name, +static inline int get_opt_bool(const char *this_opt, const char *name, bool *ret) { if (!ret) @@ -907,7 +907,7 @@ static void intelfb_pci_unregister(struct pci_dev *pdev) * helper functions * ***************************************************************/ -__inline__ int intelfb_var_to_depth(const struct fb_var_screeninfo *var) +inline int intelfb_var_to_depth(const struct fb_var_screeninfo *var) { DBG_MSG("intelfb_var_to_depth: bpp: %d, green.length is %d\n", var->bits_per_pixel, var->green.length); @@ -923,7 +923,7 @@ __inline__ int intelfb_var_to_depth(const struct fb_var_screeninfo *var) } -static __inline__ int var_to_refresh(const struct fb_var_screeninfo *var) +static inline int var_to_refresh(const struct fb_var_screeninfo *var) { int xtot = var->xres + var->left_margin + var->right_margin + var->hsync_len; diff --git a/drivers/video/fbdev/intelfb/intelfbhw.c b/drivers/video/fbdev/intelfb/intelfbhw.c index 57aff7450bce..bbd258330f21 100644 --- a/drivers/video/fbdev/intelfb/intelfbhw.c +++ b/drivers/video/fbdev/intelfb/intelfbhw.c @@ -1025,7 +1025,7 @@ static int calc_pll_params(int index, int clock, u32 *retm1, u32 *retm2, return 0; } -static __inline__ int check_overflow(u32 value, u32 limit, +static inline int check_overflow(u32 value, u32 limit, const char *description) { if (value > limit) { diff --git a/drivers/w1/masters/matrox_w1.c b/drivers/w1/masters/matrox_w1.c index d83d7c99d81d..8bdee261770f 100644 --- a/drivers/w1/masters/matrox_w1.c +++ b/drivers/w1/masters/matrox_w1.c @@ -78,7 +78,7 @@ struct matrox_device * * Port mapping. */ -static __inline__ u8 matrox_w1_read_reg(struct matrox_device *dev, u8 reg) +static inline u8 matrox_w1_read_reg(struct matrox_device *dev, u8 reg) { u8 ret; @@ -89,7 +89,7 @@ static __inline__ u8 matrox_w1_read_reg(struct matrox_device *dev, u8 reg) return ret; } -static __inline__ void matrox_w1_write_reg(struct matrox_device *dev, u8 reg, u8 val) +static inline void matrox_w1_write_reg(struct matrox_device *dev, u8 reg, u8 val) { writeb(reg, dev->port_index); writeb(val, dev->port_data); diff --git a/fs/coda/coda_linux.h b/fs/coda/coda_linux.h index 126155cadfa9..5f324bb0bd13 100644 --- a/fs/coda/coda_linux.h +++ b/fs/coda/coda_linux.h @@ -82,18 +82,18 @@ static inline struct coda_inode_info *ITOC(struct inode *inode) return container_of(inode, struct coda_inode_info, vfs_inode); } -static __inline__ struct CodaFid *coda_i2f(struct inode *inode) +static inline struct CodaFid *coda_i2f(struct inode *inode) { return &(ITOC(inode)->c_fid); } -static __inline__ char *coda_i2s(struct inode *inode) +static inline char *coda_i2s(struct inode *inode) { return coda_f2s(&(ITOC(inode)->c_fid)); } /* this will not zap the inode away */ -static __inline__ void coda_flag_inode(struct inode *inode, int flag) +static inline void coda_flag_inode(struct inode *inode, int flag) { struct coda_inode_info *cii = ITOC(inode); diff --git a/fs/freevxfs/vxfs_inode.c b/fs/freevxfs/vxfs_inode.c index 1f41b25ef38b..a0b32934b1e4 100644 --- a/fs/freevxfs/vxfs_inode.c +++ b/fs/freevxfs/vxfs_inode.c @@ -74,7 +74,7 @@ vxfs_dumpi(struct vxfs_inode_info *vip, ino_t ino) * vxfs_transmod returns a Linux mode_t for a given * VxFS inode structure. */ -static __inline__ umode_t +static inline umode_t vxfs_transmod(struct vxfs_inode_info *vip) { umode_t ret = vip->vii_mode & ~VXFS_TYPE_MASK; diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h index 755e256a9103..f399f4a16fc9 100644 --- a/fs/nfsd/nfsfh.h +++ b/fs/nfsd/nfsfh.h @@ -166,7 +166,7 @@ __be32 fh_compose(struct svc_fh *, struct svc_export *, struct dentry *, struct __be32 fh_update(struct svc_fh *); void fh_put(struct svc_fh *); -static __inline__ struct svc_fh * +static inline struct svc_fh * fh_copy(struct svc_fh *dst, struct svc_fh *src) { WARN_ON(src->fh_dentry || src->fh_locked); @@ -182,7 +182,7 @@ fh_copy_shallow(struct knfsd_fh *dst, struct knfsd_fh *src) memcpy(&dst->fh_base, &src->fh_base, src->fh_size); } -static __inline__ struct svc_fh * +static inline struct svc_fh * fh_init(struct svc_fh *fhp, int maxsize) { memset(fhp, 0, sizeof(*fhp)); diff --git a/include/acpi/platform/acgcc.h b/include/acpi/platform/acgcc.h index 085db95a3dae..32abaa61ef96 100644 --- a/include/acpi/platform/acgcc.h +++ b/include/acpi/platform/acgcc.h @@ -26,7 +26,7 @@ typedef __builtin_va_list va_list; #endif #endif -#define ACPI_INLINE __inline__ +#define ACPI_INLINE inline /* Function name is used for debug output. Non-ANSI, compiler-dependent */ diff --git a/include/acpi/platform/acintel.h b/include/acpi/platform/acintel.h index 626265833a54..fc013efe606d 100644 --- a/include/acpi/platform/acintel.h +++ b/include/acpi/platform/acintel.h @@ -22,7 +22,7 @@ #define COMPILER_DEPENDENT_INT64 __int64 #define COMPILER_DEPENDENT_UINT64 unsigned __int64 -#define ACPI_INLINE __inline +#define ACPI_INLINE inline /* * Calling conventions: diff --git a/include/asm-generic/ide_iops.h b/include/asm-generic/ide_iops.h index 81dfa3ee5e06..c7028674a03d 100644 --- a/include/asm-generic/ide_iops.h +++ b/include/asm-generic/ide_iops.h @@ -6,7 +6,7 @@ #define __ide_outsw outsw #define __ide_outsl outsl -static __inline__ void __ide_mm_insw(void __iomem *port, void *addr, u32 count) +static inline void __ide_mm_insw(void __iomem *port, void *addr, u32 count) { while (count--) { *(u16 *)addr = readw(port); @@ -14,7 +14,7 @@ static __inline__ void __ide_mm_insw(void __iomem *port, void *addr, u32 count) } } -static __inline__ void __ide_mm_insl(void __iomem *port, void *addr, u32 count) +static inline void __ide_mm_insl(void __iomem *port, void *addr, u32 count) { while (count--) { *(u32 *)addr = readl(port); @@ -22,7 +22,7 @@ static __inline__ void __ide_mm_insl(void __iomem *port, void *addr, u32 count) } } -static __inline__ void __ide_mm_outsw(void __iomem *port, void *addr, u32 count) +static inline void __ide_mm_outsw(void __iomem *port, void *addr, u32 count) { while (count--) { writew(*(u16 *)addr, port); @@ -30,7 +30,7 @@ static __inline__ void __ide_mm_outsw(void __iomem *port, void *addr, u32 count) } } -static __inline__ void __ide_mm_outsl(void __iomem * port, void *addr, u32 count) +static inline void __ide_mm_outsl(void __iomem * port, void *addr, u32 count) { while (count--) { writel(*(u32 *)addr, port); diff --git a/include/linux/atalk.h b/include/linux/atalk.h index 23f805562f4e..257c986f7f40 100644 --- a/include/linux/atalk.h +++ b/include/linux/atalk.h @@ -60,7 +60,7 @@ struct ddpehdr { /* And netatalk apps expect to stick the type in themselves */ }; -static __inline__ struct ddpehdr *ddp_hdr(struct sk_buff *skb) +static inline struct ddpehdr *ddp_hdr(struct sk_buff *skb) { return (struct ddpehdr *)skb_transport_header(skb); } @@ -88,7 +88,7 @@ struct elapaarp { __u8 pa_dst_node; } __attribute__ ((packed)); -static __inline__ struct elapaarp *aarp_hdr(struct sk_buff *skb) +static inline struct elapaarp *aarp_hdr(struct sk_buff *skb) { return (struct elapaarp *)skb_transport_header(skb); } diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h index fc2b4491ee0a..63583db288e5 100644 --- a/include/linux/ceph/messenger.h +++ b/include/linux/ceph/messenger.h @@ -82,7 +82,7 @@ enum ceph_msg_data_type { CEPH_MSG_DATA_BVECS, /* data source/destination is a bio_vec array */ }; -static __inline__ bool ceph_msg_data_type_valid(enum ceph_msg_data_type type) +static inline bool ceph_msg_data_type_valid(enum ceph_msg_data_type type) { switch (type) { case CEPH_MSG_DATA_NONE: diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h index db192becfec4..8cc282b7386b 100644 --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h @@ -248,6 +248,8 @@ struct ftrace_likely_data { # define __gnu_inline #endif +#define asm_volatile(stmt...) asm volatile __inline__(stmt) + /* * Force always-inline if the user requests it so via the .config. * GCC does not warn about unused static inline functions for @@ -268,8 +270,6 @@ struct ftrace_likely_data { #define inline inline __attribute__((unused)) notrace __gnu_inline #endif -#define __inline__ inline -#define __inline inline #define noinline __attribute__((noinline)) #ifndef __always_inline diff --git a/include/linux/hdlc.h b/include/linux/hdlc.h index 97585d9679f3..c9e58c889548 100644 --- a/include/linux/hdlc.h +++ b/include/linux/hdlc.h @@ -74,7 +74,7 @@ static inline struct hdlc_device* dev_to_hdlc(struct net_device *dev) return netdev_priv(dev); } -static __inline__ void debug_frame(const struct sk_buff *skb) +static inline void debug_frame(const struct sk_buff *skb) { int i; @@ -101,7 +101,7 @@ int attach_hdlc_protocol(struct net_device *dev, struct hdlc_proto *proto, /* May be used by hardware driver to gain control over HDLC device */ int detach_hdlc_protocol(struct net_device *dev); -static __inline__ __be16 hdlc_type_trans(struct sk_buff *skb, +static inline __be16 hdlc_type_trans(struct sk_buff *skb, struct net_device *dev) { hdlc_device *hdlc = dev_to_hdlc(dev); diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index c759d1cbcedd..76c97154dc81 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h @@ -184,7 +184,7 @@ __be32 inet_confirm_addr(struct net *net, struct in_device *in_dev, __be32 dst, struct in_ifaddr *inet_ifa_byprefix(struct in_device *in_dev, __be32 prefix, __be32 mask); struct in_ifaddr *inet_lookup_ifaddr_rcu(struct net *net, __be32 addr); -static __inline__ bool inet_ifa_match(__be32 addr, struct in_ifaddr *ifa) +static inline bool inet_ifa_match(__be32 addr, struct in_ifaddr *ifa) { return !((addr^ifa->ifa_address)&ifa->ifa_mask); } @@ -193,7 +193,7 @@ static __inline__ bool inet_ifa_match(__be32 addr, struct in_ifaddr *ifa) * Check if a mask is acceptable. */ -static __inline__ bool bad_mask(__be32 mask, __be32 addr) +static inline bool bad_mask(__be32 mask, __be32 addr) { __u32 hmask; if (addr & (mask = ~mask)) @@ -255,14 +255,14 @@ static inline void in_dev_put(struct in_device *idev) #endif /* __KERNEL__ */ -static __inline__ __be32 inet_make_mask(int logmask) +static inline __be32 inet_make_mask(int logmask) { if (logmask) return htonl(~((1U<<(32-logmask))-1)); return 0; } -static __inline__ int inet_mask_len(__be32 mask) +static inline int inet_mask_len(__be32 mask) { __u32 hmask = ntohl(mask); if (!hmask) diff --git a/include/linux/parport.h b/include/linux/parport.h index 397607a0c0eb..a28dc3e22074 100644 --- a/include/linux/parport.h +++ b/include/linux/parport.h @@ -385,7 +385,7 @@ extern void parport_release(struct pardevice *dev); * timeslice is half a second, but it can be adjusted via the /proc * interface. **/ -static __inline__ int parport_yield(struct pardevice *dev) +static inline int parport_yield(struct pardevice *dev) { unsigned long int timeslip = (jiffies - dev->time); if ((dev->port->waithead == NULL) || (timeslip < dev->timeslice)) @@ -403,7 +403,7 @@ static __inline__ int parport_yield(struct pardevice *dev) * parport_claim_or_block(), and the return value is the same as for * parport_claim_or_block(). **/ -static __inline__ int parport_yield_blocking(struct pardevice *dev) +static inline int parport_yield_blocking(struct pardevice *dev) { unsigned long int timeslip = (jiffies - dev->time); if ((dev->port->waithead == NULL) || (timeslip < dev->timeslice)) diff --git a/include/linux/parport_pc.h b/include/linux/parport_pc.h index 3d6fc576d6a1..ea368c35a5e7 100644 --- a/include/linux/parport_pc.h +++ b/include/linux/parport_pc.h @@ -60,7 +60,7 @@ struct parport_pc_via_data u8 viacfg_parport_base; }; -static __inline__ void parport_pc_write_data(struct parport *p, unsigned char d) +static inline void parport_pc_write_data(struct parport *p, unsigned char d) { #ifdef DEBUG_PARPORT printk (KERN_DEBUG "parport_pc_write_data(%p,0x%02x)\n", p, d); @@ -68,7 +68,7 @@ static __inline__ void parport_pc_write_data(struct parport *p, unsigned char d) outb(d, DATA(p)); } -static __inline__ unsigned char parport_pc_read_data(struct parport *p) +static inline unsigned char parport_pc_read_data(struct parport *p) { unsigned char val = inb (DATA (p)); #ifdef DEBUG_PARPORT @@ -125,7 +125,7 @@ static inline void dump_parport_state (char *str, struct parport *p) /* __parport_pc_frob_control differs from parport_pc_frob_control in that * it doesn't do any extra masking. */ -static __inline__ unsigned char __parport_pc_frob_control (struct parport *p, +static inline unsigned char __parport_pc_frob_control (struct parport *p, unsigned char mask, unsigned char val) { @@ -143,17 +143,17 @@ static __inline__ unsigned char __parport_pc_frob_control (struct parport *p, return ctr; } -static __inline__ void parport_pc_data_reverse (struct parport *p) +static inline void parport_pc_data_reverse (struct parport *p) { __parport_pc_frob_control (p, 0x20, 0x20); } -static __inline__ void parport_pc_data_forward (struct parport *p) +static inline void parport_pc_data_forward (struct parport *p) { __parport_pc_frob_control (p, 0x20, 0x00); } -static __inline__ void parport_pc_write_control (struct parport *p, +static inline void parport_pc_write_control (struct parport *p, unsigned char d) { const unsigned char wm = (PARPORT_CONTROL_STROBE | @@ -171,7 +171,7 @@ static __inline__ void parport_pc_write_control (struct parport *p, __parport_pc_frob_control (p, wm, d & wm); } -static __inline__ unsigned char parport_pc_read_control(struct parport *p) +static inline unsigned char parport_pc_read_control(struct parport *p) { const unsigned char rm = (PARPORT_CONTROL_STROBE | PARPORT_CONTROL_AUTOFD | @@ -181,7 +181,7 @@ static __inline__ unsigned char parport_pc_read_control(struct parport *p) return priv->ctr & rm; /* Use soft copy */ } -static __inline__ unsigned char parport_pc_frob_control (struct parport *p, +static inline unsigned char parport_pc_frob_control (struct parport *p, unsigned char mask, unsigned char val) { @@ -208,18 +208,18 @@ static __inline__ unsigned char parport_pc_frob_control (struct parport *p, return __parport_pc_frob_control (p, mask, val); } -static __inline__ unsigned char parport_pc_read_status(struct parport *p) +static inline unsigned char parport_pc_read_status(struct parport *p) { return inb(STATUS(p)); } -static __inline__ void parport_pc_disable_irq(struct parport *p) +static inline void parport_pc_disable_irq(struct parport *p) { __parport_pc_frob_control (p, 0x10, 0x00); } -static __inline__ void parport_pc_enable_irq(struct parport *p) +static inline void parport_pc_enable_irq(struct parport *p) { __parport_pc_frob_control (p, 0x10, 0x10); } diff --git a/include/net/ax25.h b/include/net/ax25.h index 3f9aea8087e3..cd0bec7a6d4d 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h @@ -270,7 +270,7 @@ static inline struct ax25_cb *sk_to_ax25(const struct sock *sk) #define ax25_cb_hold(__ax25) \ refcount_inc(&((__ax25)->refcount)) -static __inline__ void ax25_cb_put(ax25_cb *ax25) +static inline void ax25_cb_put(ax25_cb *ax25) { if (refcount_dec_and_test(&ax25->refcount)) { kfree(ax25->digipeat); diff --git a/include/net/checksum.h b/include/net/checksum.h index aef2b2bb6603..e03914ab9197 100644 --- a/include/net/checksum.h +++ b/include/net/checksum.h @@ -41,7 +41,7 @@ __wsum csum_and_copy_from_user (const void __user *src, void *dst, #endif #ifndef HAVE_CSUM_COPY_USER -static __inline__ __wsum csum_and_copy_to_user +static inline __wsum csum_and_copy_to_user (const void *src, void __user *dst, int len, __wsum sum, int *err_ptr) { sum = csum_partial(src, len, sum); diff --git a/include/net/dn_nsp.h b/include/net/dn_nsp.h index 413a15e5339c..771d3943a8f9 100644 --- a/include/net/dn_nsp.h +++ b/include/net/dn_nsp.h @@ -144,7 +144,7 @@ struct srcobj_fmt { * numbers used in NSP. Similar in operation to the functions * of the same name in TCP. */ -static __inline__ int dn_before(__u16 seq1, __u16 seq2) +static inline int dn_before(__u16 seq1, __u16 seq2) { seq1 &= 0x0fff; seq2 &= 0x0fff; @@ -153,7 +153,7 @@ static __inline__ int dn_before(__u16 seq1, __u16 seq2) } -static __inline__ int dn_after(__u16 seq1, __u16 seq2) +static inline int dn_after(__u16 seq1, __u16 seq2) { seq1 &= 0x0fff; seq2 &= 0x0fff; @@ -161,23 +161,23 @@ static __inline__ int dn_after(__u16 seq1, __u16 seq2) return (int)((seq2 - seq1) & 0x0fff) > 2048; } -static __inline__ int dn_equal(__u16 seq1, __u16 seq2) +static inline int dn_equal(__u16 seq1, __u16 seq2) { return ((seq1 ^ seq2) & 0x0fff) == 0; } -static __inline__ int dn_before_or_equal(__u16 seq1, __u16 seq2) +static inline int dn_before_or_equal(__u16 seq1, __u16 seq2) { return (dn_before(seq1, seq2) || dn_equal(seq1, seq2)); } -static __inline__ void seq_add(__u16 *seq, __u16 off) +static inline void seq_add(__u16 *seq, __u16 off) { (*seq) += off; (*seq) &= 0x0fff; } -static __inline__ int seq_next(__u16 seq1, __u16 seq2) +static inline int seq_next(__u16 seq1, __u16 seq2) { return dn_equal(seq1 + 1, seq2); } @@ -185,7 +185,7 @@ static __inline__ int seq_next(__u16 seq1, __u16 seq2) /* * Can we delay the ack ? */ -static __inline__ int sendack(__u16 seq) +static inline int sendack(__u16 seq) { return (int)((seq & 0x1000) ? 0 : 1); } @@ -193,7 +193,7 @@ static __inline__ int sendack(__u16 seq) /* * Is socket congested ? */ -static __inline__ int dn_congested(struct sock *sk) +static inline int dn_congested(struct sock *sk) { return atomic_read(&sk->sk_rmem_alloc) > (sk->sk_rcvbuf >> 1); } diff --git a/include/net/ip.h b/include/net/ip.h index e44b1a44f67a..0e9cf4a778f9 100644 --- a/include/net/ip.h +++ b/include/net/ip.h @@ -547,7 +547,7 @@ static inline void ip_ipgre_mc_map(__be32 naddr, const unsigned char *broadcast, #include #endif -static __inline__ void inet_reset_saddr(struct sock *sk) +static inline void inet_reset_saddr(struct sock *sk) { inet_sk(sk)->inet_rcv_saddr = inet_sk(sk)->inet_saddr = 0; #if IS_ENABLED(CONFIG_IPV6) diff --git a/include/net/ip6_checksum.h b/include/net/ip6_checksum.h index cca840584c88..27567477dcc6 100644 --- a/include/net/ip6_checksum.h +++ b/include/net/ip6_checksum.h @@ -55,7 +55,7 @@ static inline __wsum ip6_gro_compute_pseudo(struct sk_buff *skb, int proto) skb_gro_len(skb), proto, 0)); } -static __inline__ __sum16 tcp_v6_check(int len, +static inline __sum16 tcp_v6_check(int len, const struct in6_addr *saddr, const struct in6_addr *daddr, __wsum base) diff --git a/include/net/ipx.h b/include/net/ipx.h index baf090390998..cf89ef92a5f7 100644 --- a/include/net/ipx.h +++ b/include/net/ipx.h @@ -47,7 +47,7 @@ struct ipxhdr { /* From af_ipx.c */ extern int sysctl_ipx_pprop_broadcasting; -static __inline__ struct ipxhdr *ipx_hdr(struct sk_buff *skb) +static inline struct ipxhdr *ipx_hdr(struct sk_buff *skb) { return (struct ipxhdr *)skb_transport_header(skb); } @@ -139,7 +139,7 @@ void ipx_proc_exit(void); const char *ipx_frame_name(__be16); const char *ipx_device_name(struct ipx_interface *intrfc); -static __inline__ void ipxitf_hold(struct ipx_interface *intrfc) +static inline void ipxitf_hold(struct ipx_interface *intrfc) { refcount_inc(&intrfc->refcnt); } @@ -157,18 +157,18 @@ int ipxrtr_route_skb(struct sk_buff *skb); struct ipx_route *ipxrtr_lookup(__be32 net); int ipxrtr_ioctl(unsigned int cmd, void __user *arg); -static __inline__ void ipxitf_put(struct ipx_interface *intrfc) +static inline void ipxitf_put(struct ipx_interface *intrfc) { if (refcount_dec_and_test(&intrfc->refcnt)) ipxitf_down(intrfc); } -static __inline__ void ipxrtr_hold(struct ipx_route *rt) +static inline void ipxrtr_hold(struct ipx_route *rt) { refcount_inc(&rt->refcnt); } -static __inline__ void ipxrtr_put(struct ipx_route *rt) +static inline void ipxrtr_put(struct ipx_route *rt) { if (refcount_dec_and_test(&rt->refcnt)) kfree(rt); diff --git a/include/net/llc_c_ev.h b/include/net/llc_c_ev.h index 3948cf111dd0..266275a945b4 100644 --- a/include/net/llc_c_ev.h +++ b/include/net/llc_c_ev.h @@ -120,7 +120,7 @@ struct llc_conn_state_ev { u8 cfm_prim; }; -static __inline__ struct llc_conn_state_ev *llc_conn_ev(struct sk_buff *skb) +static inline struct llc_conn_state_ev *llc_conn_ev(struct sk_buff *skb) { return (struct llc_conn_state_ev *)skb->cb; } @@ -216,7 +216,7 @@ int llc_conn_ev_qlfy_set_status_refuse(struct sock *sk, struct sk_buff *skb); int llc_conn_ev_qlfy_set_status_conflict(struct sock *sk, struct sk_buff *skb); int llc_conn_ev_qlfy_set_status_rst_done(struct sock *sk, struct sk_buff *skb); -static __inline__ int llc_conn_space(struct sock *sk, struct sk_buff *skb) +static inline int llc_conn_space(struct sock *sk, struct sk_buff *skb) { return atomic_read(&sk->sk_rmem_alloc) + skb->truesize < (unsigned int)sk->sk_rcvbuf; diff --git a/include/net/llc_conn.h b/include/net/llc_conn.h index df528a623548..27880d1bfd99 100644 --- a/include/net/llc_conn.h +++ b/include/net/llc_conn.h @@ -85,12 +85,12 @@ static inline struct llc_sock *llc_sk(const struct sock *sk) return (struct llc_sock *)sk; } -static __inline__ void llc_set_backlog_type(struct sk_buff *skb, char type) +static inline void llc_set_backlog_type(struct sk_buff *skb, char type) { skb->cb[sizeof(skb->cb) - 1] = type; } -static __inline__ char llc_backlog_type(struct sk_buff *skb) +static inline char llc_backlog_type(struct sk_buff *skb) { return skb->cb[sizeof(skb->cb) - 1]; } diff --git a/include/net/llc_s_ev.h b/include/net/llc_s_ev.h index 84db3a59ed28..00439d3e9f5d 100644 --- a/include/net/llc_s_ev.h +++ b/include/net/llc_s_ev.h @@ -44,7 +44,7 @@ struct llc_sap_state_ev { struct llc_addr daddr; }; -static __inline__ struct llc_sap_state_ev *llc_sap_ev(struct sk_buff *skb) +static inline struct llc_sap_state_ev *llc_sap_ev(struct sk_buff *skb) { return (struct llc_sap_state_ev *)skb->cb; } diff --git a/include/net/netrom.h b/include/net/netrom.h index 5a0714ff500f..1741b7cc8962 100644 --- a/include/net/netrom.h +++ b/include/net/netrom.h @@ -123,7 +123,7 @@ struct nr_node { #define nr_node_hold(__nr_node) \ refcount_inc(&((__nr_node)->refcount)) -static __inline__ void nr_node_put(struct nr_node *nr_node) +static inline void nr_node_put(struct nr_node *nr_node) { if (refcount_dec_and_test(&nr_node->refcount)) { kfree(nr_node); @@ -133,7 +133,7 @@ static __inline__ void nr_node_put(struct nr_node *nr_node) #define nr_neigh_hold(__nr_neigh) \ refcount_inc(&((__nr_neigh)->refcount)) -static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh) +static inline void nr_neigh_put(struct nr_neigh *nr_neigh) { if (refcount_dec_and_test(&nr_neigh->refcount)) { if (nr_neigh->ax25) @@ -145,13 +145,13 @@ static __inline__ void nr_neigh_put(struct nr_neigh *nr_neigh) /* nr_node_lock and nr_node_unlock also hold/put the node's refcounter. */ -static __inline__ void nr_node_lock(struct nr_node *nr_node) +static inline void nr_node_lock(struct nr_node *nr_node) { nr_node_hold(nr_node); spin_lock_bh(&nr_node->node_lock); } -static __inline__ void nr_node_unlock(struct nr_node *nr_node) +static inline void nr_node_unlock(struct nr_node *nr_node) { spin_unlock_bh(&nr_node->node_lock); nr_node_put(nr_node); diff --git a/include/net/scm.h b/include/net/scm.h index 1ce365f4c256..b77be632b440 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -44,16 +44,16 @@ void __scm_destroy(struct scm_cookie *scm); struct scm_fp_list *scm_fp_dup(struct scm_fp_list *fpl); #ifdef CONFIG_SECURITY_NETWORK -static __inline__ void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm) +static inline void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm) { security_socket_getpeersec_dgram(sock, NULL, &scm->secid); } #else -static __inline__ void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm) +static inline void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm) { } #endif /* CONFIG_SECURITY_NETWORK */ -static __inline__ void scm_set_cred(struct scm_cookie *scm, +static inline void scm_set_cred(struct scm_cookie *scm, struct pid *pid, kuid_t uid, kgid_t gid) { scm->pid = get_pid(pid); @@ -62,20 +62,20 @@ static __inline__ void scm_set_cred(struct scm_cookie *scm, scm->creds.gid = gid; } -static __inline__ void scm_destroy_cred(struct scm_cookie *scm) +static inline void scm_destroy_cred(struct scm_cookie *scm) { put_pid(scm->pid); scm->pid = NULL; } -static __inline__ void scm_destroy(struct scm_cookie *scm) +static inline void scm_destroy(struct scm_cookie *scm) { scm_destroy_cred(scm); if (scm->fp) __scm_destroy(scm); } -static __inline__ int scm_send(struct socket *sock, struct msghdr *msg, +static inline int scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *scm, bool forcecreds) { memset(scm, 0, sizeof(*scm)); @@ -110,7 +110,7 @@ static inline void scm_passec(struct socket *sock, struct msghdr *msg, struct sc { } #endif /* CONFIG_SECURITY_NETWORK */ -static __inline__ void scm_recv(struct socket *sock, struct msghdr *msg, +static inline void scm_recv(struct socket *sock, struct msghdr *msg, struct scm_cookie *scm, int flags) { if (!msg->msg_control) { diff --git a/include/net/udplite.h b/include/net/udplite.h index 9185e45b997f..747859a3a00f 100644 --- a/include/net/udplite.h +++ b/include/net/udplite.h @@ -17,7 +17,7 @@ extern struct udp_table udplite_table; /* * Checksum computation is all in software, hence simpler getfrag. */ -static __inline__ int udplite_getfrag(void *from, char *to, int offset, +static inline int udplite_getfrag(void *from, char *to, int offset, int len, int odd, struct sk_buff *skb) { struct msghdr *msg = from; diff --git a/include/net/x25.h b/include/net/x25.h index ed1acc3044ac..4cb533479d61 100644 --- a/include/net/x25.h +++ b/include/net/x25.h @@ -242,12 +242,12 @@ struct x25_neigh *x25_get_neigh(struct net_device *); void x25_link_free(void); /* x25_neigh.c */ -static __inline__ void x25_neigh_hold(struct x25_neigh *nb) +static inline void x25_neigh_hold(struct x25_neigh *nb) { refcount_inc(&nb->refcnt); } -static __inline__ void x25_neigh_put(struct x25_neigh *nb) +static inline void x25_neigh_put(struct x25_neigh *nb) { if (refcount_dec_and_test(&nb->refcnt)) kfree(nb); @@ -265,12 +265,12 @@ void x25_route_device_down(struct net_device *dev); int x25_route_ioctl(unsigned int, void __user *); void x25_route_free(void); -static __inline__ void x25_route_hold(struct x25_route *rt) +static inline void x25_route_hold(struct x25_route *rt) { refcount_inc(&rt->refcnt); } -static __inline__ void x25_route_put(struct x25_route *rt) +static inline void x25_route_put(struct x25_route *rt) { if (refcount_dec_and_test(&rt->refcnt)) kfree(rt); diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 0eb390c205af..2f03fd96dce9 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -903,7 +903,7 @@ static inline bool addr4_match(__be32 a1, __be32 a2, u8 prefixlen) return !((a1 ^ a2) & htonl(~0UL << (32 - prefixlen))); } -static __inline__ +static inline __be16 xfrm_flowi_sport(const struct flowi *fl, const union flowi_uli *uli) { __be16 port; @@ -930,7 +930,7 @@ __be16 xfrm_flowi_sport(const struct flowi *fl, const union flowi_uli *uli) return port; } -static __inline__ +static inline __be16 xfrm_flowi_dport(const struct flowi *fl, const union flowi_uli *uli) { __be16 port; @@ -1325,7 +1325,7 @@ static inline int xfrm6_policy_check_reverse(struct sock *sk, int dir, } #endif -static __inline__ +static inline xfrm_address_t *xfrm_flowi_daddr(const struct flowi *fl, unsigned short family) { switch (family){ @@ -1337,7 +1337,7 @@ xfrm_address_t *xfrm_flowi_daddr(const struct flowi *fl, unsigned short family) return NULL; } -static __inline__ +static inline xfrm_address_t *xfrm_flowi_saddr(const struct flowi *fl, unsigned short family) { switch (family){ @@ -1349,7 +1349,7 @@ xfrm_address_t *xfrm_flowi_saddr(const struct flowi *fl, unsigned short family) return NULL; } -static __inline__ +static inline void xfrm_flowi_addr_get(const struct flowi *fl, xfrm_address_t *saddr, xfrm_address_t *daddr, unsigned short family) @@ -1366,7 +1366,7 @@ void xfrm_flowi_addr_get(const struct flowi *fl, } } -static __inline__ int +static inline int __xfrm4_state_addr_check(const struct xfrm_state *x, const xfrm_address_t *daddr, const xfrm_address_t *saddr) { @@ -1376,7 +1376,7 @@ __xfrm4_state_addr_check(const struct xfrm_state *x, return 0; } -static __inline__ int +static inline int __xfrm6_state_addr_check(const struct xfrm_state *x, const xfrm_address_t *daddr, const xfrm_address_t *saddr) { @@ -1388,7 +1388,7 @@ __xfrm6_state_addr_check(const struct xfrm_state *x, return 0; } -static __inline__ int +static inline int xfrm_state_addr_check(const struct xfrm_state *x, const xfrm_address_t *daddr, const xfrm_address_t *saddr, unsigned short family) @@ -1402,7 +1402,7 @@ xfrm_state_addr_check(const struct xfrm_state *x, return 0; } -static __inline__ int +static inline int xfrm_state_addr_flow_check(const struct xfrm_state *x, const struct flowi *fl, unsigned short family) { diff --git a/include/uapi/linux/atm.h b/include/uapi/linux/atm.h index 95ebdcf4fe88..a89c6529d0e0 100644 --- a/include/uapi/linux/atm.h +++ b/include/uapi/linux/atm.h @@ -215,13 +215,13 @@ struct sockaddr_atmsvc { }; -static __inline__ int atmsvc_addr_in_use(struct sockaddr_atmsvc addr) +static inline int atmsvc_addr_in_use(struct sockaddr_atmsvc addr) { return *addr.sas_addr.prv || *addr.sas_addr.pub; } -static __inline__ int atmpvc_addr_in_use(struct sockaddr_atmpvc addr) +static inline int atmpvc_addr_in_use(struct sockaddr_atmpvc addr) { return addr.sap_addr.itf || addr.sap_addr.vpi || addr.sap_addr.vci; } diff --git a/include/uapi/linux/atmsap.h b/include/uapi/linux/atmsap.h index fc052481eae0..97f3699ead0b 100644 --- a/include/uapi/linux/atmsap.h +++ b/include/uapi/linux/atmsap.h @@ -155,7 +155,7 @@ struct atm_sap { }; -static __inline__ int blli_in_use(struct atm_blli blli) +static inline int blli_in_use(struct atm_blli blli) { return blli.l2_proto || blli.l3_proto; } diff --git a/include/uapi/linux/map_to_7segment.h b/include/uapi/linux/map_to_7segment.h index f9ed18134b83..16c89adab225 100644 --- a/include/uapi/linux/map_to_7segment.h +++ b/include/uapi/linux/map_to_7segment.h @@ -76,7 +76,7 @@ struct seg7_conversion_map { unsigned char table[128]; }; -static __inline__ int map_to_seg7(struct seg7_conversion_map *map, int c) +static inline int map_to_seg7(struct seg7_conversion_map *map, int c) { return c >= 0 && c < sizeof(map->table) ? map->table[c] : -EINVAL; } diff --git a/include/uapi/linux/netfilter_arp/arp_tables.h b/include/uapi/linux/netfilter_arp/arp_tables.h index a2a0927d9bd6..4d733bbaa183 100644 --- a/include/uapi/linux/netfilter_arp/arp_tables.h +++ b/include/uapi/linux/netfilter_arp/arp_tables.h @@ -197,7 +197,7 @@ struct arpt_get_entries { }; /* Helper functions */ -static __inline__ struct xt_entry_target *arpt_get_target(struct arpt_entry *e) +static inline struct xt_entry_target *arpt_get_target(struct arpt_entry *e) { return (void *)e + e->target_offset; } diff --git a/include/uapi/linux/netfilter_bridge/ebtables.h b/include/uapi/linux/netfilter_bridge/ebtables.h index 3b86c14ea49d..0c5bf95a8d44 100644 --- a/include/uapi/linux/netfilter_bridge/ebtables.h +++ b/include/uapi/linux/netfilter_bridge/ebtables.h @@ -191,7 +191,7 @@ struct ebt_entry { unsigned char elems[0] __attribute__ ((aligned (__alignof__(struct ebt_replace)))); }; -static __inline__ struct ebt_entry_target * +static inline struct ebt_entry_target * ebt_get_target(struct ebt_entry *e) { return (void *)e + e->target_offset; diff --git a/include/uapi/linux/netfilter_ipv4/ip_tables.h b/include/uapi/linux/netfilter_ipv4/ip_tables.h index 6aaeb14bfce1..06c7900e36c4 100644 --- a/include/uapi/linux/netfilter_ipv4/ip_tables.h +++ b/include/uapi/linux/netfilter_ipv4/ip_tables.h @@ -219,7 +219,7 @@ struct ipt_get_entries { }; /* Helper functions */ -static __inline__ struct xt_entry_target * +static inline struct xt_entry_target * ipt_get_target(struct ipt_entry *e) { return (void *)e + e->target_offset; diff --git a/include/uapi/linux/netfilter_ipv6/ip6_tables.h b/include/uapi/linux/netfilter_ipv6/ip6_tables.h index 031d0a43bed2..f84464aab65b 100644 --- a/include/uapi/linux/netfilter_ipv6/ip6_tables.h +++ b/include/uapi/linux/netfilter_ipv6/ip6_tables.h @@ -259,7 +259,7 @@ struct ip6t_get_entries { }; /* Helper functions */ -static __inline__ struct xt_entry_target * +static inline struct xt_entry_target * ip6t_get_target(struct ip6t_entry *e) { return (void *)e + e->target_offset; diff --git a/include/video/newport.h b/include/video/newport.h index bcbb3d1b6bf9..108bc554c4b8 100644 --- a/include/video/newport.h +++ b/include/video/newport.h @@ -426,7 +426,7 @@ static inline unsigned short newport_vc2_get(struct newport_regs *regs, #define NCMAP_REGADDR_RREG 0x00000060 #define NCMAP_PROTOCOL (0x00008000 | 0x00040000 | 0x00800000) -static __inline__ void newport_cmap_setaddr(struct newport_regs *regs, +static inline void newport_cmap_setaddr(struct newport_regs *regs, unsigned short addr) { regs->set.dcbmode = (NPORT_DMODE_ACMALL | NCMAP_PROTOCOL | @@ -437,7 +437,7 @@ static __inline__ void newport_cmap_setaddr(struct newport_regs *regs, NCMAP_REGADDR_PBUF | NPORT_DMODE_W3); } -static __inline__ void newport_cmap_setrgb(struct newport_regs *regs, +static inline void newport_cmap_setrgb(struct newport_regs *regs, unsigned char red, unsigned char green, unsigned char blue) @@ -450,7 +450,7 @@ static __inline__ void newport_cmap_setrgb(struct newport_regs *regs, /* Miscellaneous NEWPORT routines. */ #define BUSY_TIMEOUT 100000 -static __inline__ int newport_wait(struct newport_regs *regs) +static inline int newport_wait(struct newport_regs *regs) { int t = BUSY_TIMEOUT; @@ -460,7 +460,7 @@ static __inline__ int newport_wait(struct newport_regs *regs) return !t; } -static __inline__ int newport_bfwait(struct newport_regs *regs) +static inline int newport_bfwait(struct newport_regs *regs) { int t = BUSY_TIMEOUT; @@ -547,7 +547,7 @@ static __inline__ int newport_bfwait(struct newport_regs *regs) #define WAYSLOW_DCB_XMAP9_PROTOCOL DCB_CYCLES (12, 12, 0) #define R_DCB_XMAP9_PROTOCOL DCB_CYCLES (2, 1, 3) -static __inline__ void +static inline void xmap9FIFOWait (struct newport_regs *rex) { rex->set.dcbmode = DCB_XMAP0 | XM9_CRS_FIFO_AVAIL | @@ -558,7 +558,7 @@ xmap9FIFOWait (struct newport_regs *rex) ; } -static __inline__ void +static inline void xmap9SetModeReg (struct newport_regs *rex, unsigned int modereg, unsigned int data24, int cfreq) { if (cfreq > 119) diff --git a/lib/zstd/mem.h b/lib/zstd/mem.h index 3a0f34c8706c..739837a59ad6 100644 --- a/lib/zstd/mem.h +++ b/lib/zstd/mem.h @@ -27,7 +27,7 @@ /*-**************************************** * Compiler specifics ******************************************/ -#define ZSTD_STATIC static __inline __attribute__((unused)) +#define ZSTD_STATIC static inline __attribute__((unused)) /*-************************************************************** * Basic Types diff --git a/net/appletalk/atalk_proc.c b/net/appletalk/atalk_proc.c index 8006295f8bd7..6bc7c80a44de 100644 --- a/net/appletalk/atalk_proc.c +++ b/net/appletalk/atalk_proc.c @@ -17,7 +17,7 @@ #include -static __inline__ struct atalk_iface *atalk_get_interface_idx(loff_t pos) +static inline struct atalk_iface *atalk_get_interface_idx(loff_t pos) { struct atalk_iface *i; @@ -78,7 +78,7 @@ static int atalk_seq_interface_show(struct seq_file *seq, void *v) return 0; } -static __inline__ struct atalk_route *atalk_get_route_idx(loff_t pos) +static inline struct atalk_route *atalk_get_route_idx(loff_t pos) { struct atalk_route *r; diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c index 9b6bc5abe946..822bf45adb73 100644 --- a/net/appletalk/ddp.c +++ b/net/appletalk/ddp.c @@ -1277,7 +1277,7 @@ static int atalk_getname(struct socket *sock, struct sockaddr *uaddr, } #if IS_ENABLED(CONFIG_IPDDP) -static __inline__ int is_ip_over_ddp(struct sk_buff *skb) +static inline int is_ip_over_ddp(struct sk_buff *skb) { return skb->data[12] == 22; } diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 91592fceeaad..8d2fd114f6e2 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -865,7 +865,7 @@ static void neigh_periodic_work(struct work_struct *work) write_unlock_bh(&tbl->lock); } -static __inline__ int neigh_max_probes(struct neighbour *n) +static inline int neigh_max_probes(struct neighbour *n) { struct neigh_parms *p = n->parms; return NEIGH_VAR(p, UCAST_PROBES) + NEIGH_VAR(p, APP_PROBES) + diff --git a/net/core/scm.c b/net/core/scm.c index b1ff8a441748..d508a27f8552 100644 --- a/net/core/scm.c +++ b/net/core/scm.c @@ -45,7 +45,7 @@ * setu(g)id. */ -static __inline__ int scm_check_creds(struct ucred *creds) +static inline int scm_check_creds(struct ucred *creds) { const struct cred *cred = current_cred(); kuid_t uid = make_kuid(cred->user_ns, creds->uid); diff --git a/net/decnet/dn_nsp_in.c b/net/decnet/dn_nsp_in.c index 2fb5e055ba25..508bb7a341aa 100644 --- a/net/decnet/dn_nsp_in.c +++ b/net/decnet/dn_nsp_in.c @@ -583,7 +583,7 @@ static void dn_nsp_linkservice(struct sock *sk, struct sk_buff *skb) * bh_lock_sock() (its already held when this is called) which * also allows data and other data to be queued to a socket. */ -static __inline__ int dn_queue_skb(struct sock *sk, struct sk_buff *skb, int sig, struct sk_buff_head *queue) +static inline int dn_queue_skb(struct sock *sk, struct sk_buff *skb, int sig, struct sk_buff_head *queue) { int err; diff --git a/net/decnet/dn_nsp_out.c b/net/decnet/dn_nsp_out.c index a1779de6bd9c..2ed306ce9010 100644 --- a/net/decnet/dn_nsp_out.c +++ b/net/decnet/dn_nsp_out.c @@ -529,7 +529,7 @@ void dn_send_conn_conf(struct sock *sk, gfp_t gfp) } -static __inline__ void dn_nsp_do_disc(struct sock *sk, unsigned char msgflg, +static inline void dn_nsp_do_disc(struct sock *sk, unsigned char msgflg, unsigned short reason, gfp_t gfp, struct dst_entry *dst, int ddl, unsigned char *dd, __le16 rem, __le16 loc) diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c index 1c002c0fb712..6b7c61544d76 100644 --- a/net/decnet/dn_route.c +++ b/net/decnet/dn_route.c @@ -174,7 +174,7 @@ static void dn_dst_ifdown(struct dst_entry *dst, struct net_device *dev, int how } } -static __inline__ unsigned int dn_hash(__le16 src, __le16 dst) +static inline unsigned int dn_hash(__le16 src, __le16 dst) { __u16 tmp = (__u16 __force)(src ^ dst); tmp ^= (tmp >> 3); diff --git a/net/decnet/dn_table.c b/net/decnet/dn_table.c index f0710b5d037d..90b5144c20bf 100644 --- a/net/decnet/dn_table.c +++ b/net/decnet/dn_table.c @@ -405,7 +405,7 @@ static void dn_rtmsg_fib(int event, struct dn_fib_node *f, int z, u32 tb_id, rtnl_set_sk_err(&init_net, RTNLGRP_DECnet_ROUTE, err); } -static __inline__ int dn_hash_dump_bucket(struct sk_buff *skb, +static inline int dn_hash_dump_bucket(struct sk_buff *skb, struct netlink_callback *cb, struct dn_fib_table *tb, struct dn_zone *dz, @@ -434,7 +434,7 @@ static __inline__ int dn_hash_dump_bucket(struct sk_buff *skb, return skb->len; } -static __inline__ int dn_hash_dump_zone(struct sk_buff *skb, +static inline int dn_hash_dump_zone(struct sk_buff *skb, struct netlink_callback *cb, struct dn_fib_table *tb, struct dn_zone *dz) diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index 4da39446da2d..177e1f9c6bce 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c @@ -18,7 +18,7 @@ * * Fixes: * - * Alan Cox : Added lots of __inline__ to optimise + * Alan Cox : Added lots of inline to optimise * the memory usage of all the tiny little * functions. * Alan Cox : Dumped the header building experiment. diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 9a4261e50272..35896e9897c1 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c @@ -100,7 +100,7 @@ bool ipv6_mod_enabled(void) } EXPORT_SYMBOL_GPL(ipv6_mod_enabled); -static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk) +static inline struct ipv6_pinfo *inet6_sk_generic(struct sock *sk) { const int offset = sk->sk_prot->obj_size - sizeof(struct ipv6_pinfo); diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index c9c53ade55c3..488a04e188c0 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c @@ -111,7 +111,7 @@ static const struct inet6_protocol icmpv6_protocol = { }; /* Called with BH disabled */ -static __inline__ struct sock *icmpv6_xmit_lock(struct net *net) +static inline struct sock *icmpv6_xmit_lock(struct net *net) { struct sock *sk; @@ -126,7 +126,7 @@ static __inline__ struct sock *icmpv6_xmit_lock(struct net *net) return sk; } -static __inline__ void icmpv6_xmit_unlock(struct sock *sk) +static inline void icmpv6_xmit_unlock(struct sock *sk) { spin_unlock(&sk->sk_lock.slock); } diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 28c4aa5078fc..c5165652929a 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -541,7 +541,7 @@ static int __udpv6_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) return 0; } -static __inline__ void udpv6_err(struct sk_buff *skb, +static inline void udpv6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, u8 type, u8 code, int offset, __be32 info) { @@ -947,7 +947,7 @@ static void udp_v6_early_demux(struct sk_buff *skb) } } -static __inline__ int udpv6_rcv(struct sk_buff *skb) +static inline int udpv6_rcv(struct sk_buff *skb) { return __udp6_lib_rcv(skb, &udp_table, IPPROTO_UDP); } diff --git a/net/lapb/lapb_iface.c b/net/lapb/lapb_iface.c index db6e0afe3a20..b797138fec8c 100644 --- a/net/lapb/lapb_iface.c +++ b/net/lapb/lapb_iface.c @@ -52,12 +52,12 @@ static void lapb_free_cb(struct lapb_cb *lapb) kfree(lapb); } -static __inline__ void lapb_hold(struct lapb_cb *lapb) +static inline void lapb_hold(struct lapb_cb *lapb) { refcount_inc(&lapb->refcnt); } -static __inline__ void lapb_put(struct lapb_cb *lapb) +static inline void lapb_put(struct lapb_cb *lapb) { if (refcount_dec_and_test(&lapb->refcnt)) lapb_free_cb(lapb); diff --git a/net/llc/llc_input.c b/net/llc/llc_input.c index 82cb93f66b9b..6d467c8b1d70 100644 --- a/net/llc/llc_input.c +++ b/net/llc/llc_input.c @@ -72,7 +72,7 @@ void llc_set_station_handler(void (*handler)(struct sk_buff *skb)) * * This function returns which LLC component must handle this PDU. */ -static __inline__ int llc_pdu_type(struct sk_buff *skb) +static inline int llc_pdu_type(struct sk_buff *skb) { int type = LLC_DEST_CONN; /* I-PDU or S-PDU type */ struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 161b0224d6ae..0cbe8de662a6 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -389,7 +389,7 @@ our $Attribute = qr{ __weak }x; our $Modifier; -our $Inline = qr{inline|__always_inline|noinline|__inline|__inline__}; +our $Inline = qr{inline|__always_inline|noinline|inline|inline}; our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]}; our $Lval = qr{$Ident(?:$Member)*}; @@ -5782,13 +5782,13 @@ sub process { "inline keyword should sit between storage class and type\n" . $herecurr); } -# Check for __inline__ and __inline, prefer inline +# Check for inline and inline, prefer inline if ($realfile !~ m@\binclude/uapi/@ && - $line =~ /\b(__inline__|__inline)\b/) { + $line =~ /\b(inline|inline)\b/) { if (WARN("INLINE", "plain inline is preferred over $1\n" . $herecurr) && $fix) { - $fixed[$fixlinenr] =~ s/\b(__inline__|__inline)\b/inline/; + $fixed[$fixlinenr] =~ s/\b(inline|inline)\b/inline/; } } diff --git a/scripts/genksyms/keywords.c b/scripts/genksyms/keywords.c index 9f40bcd17d07..f8cb811cd97d 100644 --- a/scripts/genksyms/keywords.c +++ b/scripts/genksyms/keywords.c @@ -14,8 +14,8 @@ static struct resword { { "__const", CONST_KEYW }, { "__const__", CONST_KEYW }, { "__extension__", EXTENSION_KEYW }, - { "__inline", INLINE_KEYW }, - { "__inline__", INLINE_KEYW }, + { "inline", INLINE_KEYW }, + { "inline", INLINE_KEYW }, { "__signed", SIGNED_KEYW }, { "__signed__", SIGNED_KEYW }, { "__typeof", TYPEOF_KEYW }, diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 8f0f508a78e9..9caed6640b58 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc @@ -1569,8 +1569,8 @@ sub dump_function($$) { $prototype =~ s/^extern +//; $prototype =~ s/^asmlinkage +//; $prototype =~ s/^inline +//; - $prototype =~ s/^__inline__ +//; - $prototype =~ s/^__inline +//; + $prototype =~ s/^inline +//; + $prototype =~ s/^inline +//; $prototype =~ s/^__always_inline +//; $prototype =~ s/^noinline +//; $prototype =~ s/__init +//; diff --git a/sound/sparc/amd7930.c b/sound/sparc/amd7930.c index 56f17410fcea..3d1e603fdcfe 100644 --- a/sound/sparc/amd7930.c +++ b/sound/sparc/amd7930.c @@ -344,7 +344,7 @@ struct snd_amd7930 { static struct snd_amd7930 *amd7930_list; /* Idle the AMD7930 chip. The amd->lock is not held. */ -static __inline__ void amd7930_idle(struct snd_amd7930 *amd) +static inline void amd7930_idle(struct snd_amd7930 *amd) { unsigned long flags; @@ -355,7 +355,7 @@ static __inline__ void amd7930_idle(struct snd_amd7930 *amd) } /* Enable chip interrupts. The amd->lock is not held. */ -static __inline__ void amd7930_enable_ints(struct snd_amd7930 *amd) +static inline void amd7930_enable_ints(struct snd_amd7930 *amd) { unsigned long flags; @@ -366,7 +366,7 @@ static __inline__ void amd7930_enable_ints(struct snd_amd7930 *amd) } /* Disable chip interrupts. The amd->lock is not held. */ -static __inline__ void amd7930_disable_ints(struct snd_amd7930 *amd) +static inline void amd7930_disable_ints(struct snd_amd7930 *amd) { unsigned long flags; From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: PROPOSAL: Extend inline asm syntax with size spec Date: Wed, 31 Oct 2018 13:55:26 +0100 Message-ID: <20181031125526.GA13219@hirez.programming.kicks-ass.net> References: <20181008073128.GL29268@gate.crashing.org> <20181009145330.GT29268@gate.crashing.org> <20181010072240.GB103159@gmail.com> <20181010080324.GV29268@gate.crashing.org> <20181010081906.GA5533@zn.tnic> <20181010185432.GB29268@gate.crashing.org> <20181010191427.GF5533@zn.tnic> <20181013193335.GD31650@zn.tnic> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181013193335.GD31650@zn.tnic> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Borislav Petkov Cc: Kate Stewart , Christopher Li , virtualization@lists.linux-foundation.org, Masahiro Yamada , Nadav Amit , Jan Beulich , "H. Peter Anvin" , Sam Ravnborg , Ingo Molnar , x86@kernel.org, linux-sparse@vger.kernel.org, Ingo Molnar , linux-xtensa@linux-xtensa.org, Kees Cook , Segher Boessenkool , Chris Zankel , Michael Matz , Josh Poimboeuf , Alok Kataria , Juergen Gross , gcc@gcc.gnu.org, Richard Biener , Max Filippov , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Thomas List-Id: linux-sparse@vger.kernel.org T24gU2F0LCBPY3QgMTMsIDIwMTggYXQgMDk6MzM6MzVQTSArMDIwMCwgQm9yaXNsYXYgUGV0a292 IHdyb3RlOgo+IE9rLAo+IAo+IHdpdGggU2VnaGVyJ3MgaGVscCBJJ3ZlIGJlZW4gcGxheWluZyB3 aXRoIGhpcyBwYXRjaCBvbnRvcCBvZiBibGVlZGluZwo+IGVkZ2UgZ2NjIDkgYW5kIGhlcmUgYXJl IG15IG9ic2VydmF0aW9ucy4gUGxlYXNlIGRvdWJsZS1jaGVjayBtZSBmb3IKPiBib29ib29zIHNv IHRoYXQgdGhleSBjYW4gYmUgYWRkcmVzc2VkIHdoaWxlIHRoZXJlJ3MgdGltZS4KPiAKPiBTbyBo ZXJlJ3Mgd2hhdCBJIHNlZSBvbnRvcCBvZiA0LjE5LXJjNzoKPiAKPiBGaXJzdCBtYXJrZWQgdGhl IGFsdGVybmF0aXZlIGFzbSgpIGFzIGlubGluZSBhbmQgdW5kZWZmZWQgdGhlICJpbmxpbmUiCj4g a2V5d29yZC4gSSBuZWVkIHRvIGRvIHRoYXQgYmVjYXVzZSBvZiB0aGUgZnVua3kgZ2FtZXMgd2Ug ZG8gd2l0aAo+ICJpbmxpbmUiIHJlZGVmaW5pdGlvbnMgaW4gaW5jbHVkZS9saW51eC9jb21waWxl cl90eXBlcy5oLgo+IAo+IEFuZCBTZWdoZXIgaGludGVkIGF0IGVpdGhlciBkb2luZzoKPiAKPiBh c20gdm9sYXRpbGUgaW5saW5lKC4uLgo+IAo+IG9yCj4gCj4gYXNtIHZvbGF0aWxlIF9faW5saW5l X18oLi4uCj4gCj4gYnV0IGJvdGggImlubGluZSIgdmFyaWFudHMgYXJlIGRlZmluZWQgYXMgbWFj cm9zIGluIHRoYXQgZmlsZS4KPiAKPiBXaGljaCBtZWFucyB3ZSBlaXRoZXIgbmVlZCB0byAjdW5k ZWYgaW5saW5lIGJlZm9yZSB1c2luZyBpdCBpbiBhc20oKSBvcgo+IGNvbWUgdXAgd2l0aCBzb21l dGhpbmcgY2xldmVyZXIuCgojIGdpdCBncmVwIC1lICJcPF9faW5saW5lX19cPiIgfCB3YyAtbAo0 ODgKIyBnaXQgZ3JlcCAtZSAiXDxfX2lubGluZVw+IiB8IHdjIC1sCjU2CiMgZ2l0IGdyZXAgLWUg Ilw8aW5saW5lXD4iIHwgd2MgLWwKNjk1OTgKCkFuZCB3ZSBhbHJlYWR5IGhhdmUgc2NyaXB0cy9j aGVja3BhdGNoLnBsOgoKICAjIENoZWNrIGZvciBfX2lubGluZV9fIGFuZCBfX2lubGluZSwgcHJl ZmVyIGlubGluZQoKV2hpY2ggc3VnZ2VzdHMgd2UgZG86CgpnaXQgZ3JlcCAtbCAiXDxfX2lubGlu ZVwoXHxfX1wpXD4iIHwgd2hpbGUgcmVhZCBmaWxlCmRvCglzZWQgLWkgLWUgJ3MvXDxfX2lubGlu ZVwoXHxfX1wpXD4vaW5saW5lL2cnICRmaWxlCmRvbmUKCmFuZCBnZXQgaXQgb3ZlciB3aXRoLgoK CkFueXdheSwgd2l0aCB0aGUgYmVsb3cgcGF0Y2gsIEkgZ2V0OgoKICAgdGV4dCAgICBkYXRhICAg ICBic3MgICAgIGRlYyAgICAgaGV4IGZpbGVuYW1lCjE3Mzg1MTgzICAgICAgICA1MDY0NzgwIDE5 NTM4OTIgMjQ0MDM4NTUgICAgICAgIDE3NDVmOGYgZGVmY29uZmlnLWJ1aWxkL3ZtbGludXgKMTcz ODU2NzggICAgICAgIDUwNjQ3ODAgMTk1Mzg5MiAyNDQwNDM1MCAgICAgICAgMTc0NjE3ZSBkZWZj b25maWctYnVpbGQvdm1saW51eAoKV2hpY2ggc2hvd3Mgd2UgaW5saW5lIG1vcmUgKGxvb2sgZm9y IGFzbV92b2xhdGlsZSBmb3IgdGhlIGFjdHVhbApjaGFuZ2VzKS4KCgpTbyB5ZXMsIHRoaXMgc2Vl bXMgbGlrZSBzb21ldGhpbmcgd2UgY291bGQgd29yayB3aXRoLgoKLS0tCiBEb2N1bWVudGF0aW9u L3RyYWNlL3RyYWNlcG9pbnQtYW5hbHlzaXMucnN0ICAgICAgICB8ICAyICstCiBEb2N1bWVudGF0 aW9uL3RyYW5zbGF0aW9ucy9qYV9KUC9TdWJtaXR0aW5nUGF0Y2hlcyB8ICA0ICstLQogRG9jdW1l bnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vU3VibWl0dGluZ1BhdGNoZXMgfCAgNCArLS0KIGFy Y2gvYWxwaGEvaW5jbHVkZS9hc20vYXRvbWljLmggICAgICAgICAgICAgICAgICAgIHwgMTIgKysr LS0tLQogYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9iaXRvcHMuaCAgICAgICAgICAgICAgICAgICAg fCAgNiArKy0tCiBhcmNoL2FscGhhL2luY2x1ZGUvYXNtL2NvbXBpbGVyLmggICAgICAgICAgICAg ICAgICB8ICA0ICstLQogYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9kbWEuaCAgICAgICAgICAgICAg ICAgICAgICAgfCAyMiArKysrKystLS0tLS0KIGFyY2gvYWxwaGEvaW5jbHVkZS9hc20vZmxvcHB5 LmggICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBhcmNoL2FscGhhL2luY2x1ZGUvYXNtL2ly cS5oICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBhcmNoL2FscGhhL2luY2x1ZGUvYXNt L2xvY2FsLmggICAgICAgICAgICAgICAgICAgICB8ICA0ICstLQogYXJjaC9hbHBoYS9pbmNsdWRl L2FzbS9zbXAuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC9hcm0vbWFjaC1p b3AzMngvaW5jbHVkZS9tYWNoL3VuY29tcHJlc3MuaCAgICAgfCAgMiArLQogYXJjaC9hcm0vbWFj aC1pb3AzM3gvaW5jbHVkZS9tYWNoL3VuY29tcHJlc3MuaCAgICAgfCAgMiArLQogYXJjaC9hcm0v bWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3VuY29tcHJlc3MuaCAgICAgfCAgMiArLQogYXJjaC9p YTY0L2hwL2NvbW1vbi9zYmFfaW9tbXUuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJj aC9pYTY0L2hwL3NpbS9zaW1ldGguYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQog YXJjaC9pYTY0L2luY2x1ZGUvYXNtL2F0b21pYy5oICAgICAgICAgICAgICAgICAgICAgfCAgOCAr Ky0tLQogYXJjaC9pYTY0L2luY2x1ZGUvYXNtL2JpdG9wcy5oICAgICAgICAgICAgICAgICAgICAg fCAzNCArKysrKysrKystLS0tLS0tLS0KIGFyY2gvaWE2NC9pbmNsdWRlL2FzbS9kZWxheS5oICAg ICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKy0tLS0KIGFyY2gvaWE2NC9pbmNsdWRlL2FzbS9p cnEuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvaWE2NC9pbmNsdWRlL2Fz bS9wYWdlLmggICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvaWE2NC9pbmNsdWRl L2FzbS9zbi9sZWRzLmggICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvaWE2NC9pbmNs dWRlL2FzbS91YWNjZXNzLmggICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBhcmNoL2lhNjQv aW5jbHVkZS91YXBpL2FzbS9yc2UuaCAgICAgICAgICAgICAgICAgICB8IDEyICsrKy0tLS0KIGFy Y2gvaWE2NC9pbmNsdWRlL3VhcGkvYXNtL3N3YWIuaCAgICAgICAgICAgICAgICAgIHwgIDYgKyst LQogYXJjaC9pYTY0L29wcm9maWxlL2JhY2t0cmFjZS5jICAgICAgICAgICAgICAgICAgICAgfCAg NCArLS0KIGFyY2gvbTY4ay9pbmNsdWRlL2FzbS9ibGlua2VuLmggICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIGFyY2gvbTY4ay9pbmNsdWRlL2FzbS9jaGVja3N1bS5oICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGFyY2gvbTY4ay9pbmNsdWRlL2FzbS9kbWEuaCAgICAgICAgICAgICAgICAg ICAgICAgIHwgMzIgKysrKysrKystLS0tLS0tLS0KIGFyY2gvbTY4ay9pbmNsdWRlL2FzbS9mbG9w cHkuaCAgICAgICAgICAgICAgICAgICAgIHwgIDggKystLS0KIGFyY2gvbTY4ay9pbmNsdWRlL2Fz bS9uZXR0ZWwuaCAgICAgICAgICAgICAgICAgICAgIHwgIDggKystLS0KIGFyY2gvbTY4ay9tYWMv aW9wLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKy0tLS0KIGFyY2gv bWlwcy9pbmNsdWRlL2FzbS9hdG9taWMuaCAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKy0t LS0tCiBhcmNoL21pcHMvaW5jbHVkZS9hc20vY2hlY2tzdW0uaCAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBhcmNoL21pcHMvaW5jbHVkZS9hc20vZG1hLmggICAgICAgICAgICAgICAgICAgICAg ICB8IDIwICsrKysrLS0tLS0tCiBhcmNoL21pcHMvaW5jbHVkZS9hc20vamF6ei5oICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBhcmNoL21pcHMvaW5jbHVkZS9hc20vbG9jYWwuaCAgICAg ICAgICAgICAgICAgICAgICB8ICA0ICstLQogYXJjaC9taXBzL2luY2x1ZGUvYXNtL3N0cmluZy5o ICAgICAgICAgICAgICAgICAgICAgfCAgOCArKy0tLQogYXJjaC9taXBzL2tlcm5lbC9iaW5mbXRf ZWxmbjMyLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC9uZHMzMi9pbmNsdWRlL2Fz bS9zd2FiLmggICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KIGFyY2gvcGFyaXNjL2luY2x1 ZGUvYXNtL2F0b21pYy5oICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKystLS0tLS0KIGFyY2gv cGFyaXNjL2luY2x1ZGUvYXNtL2JpdG9wcy5oICAgICAgICAgICAgICAgICAgIHwgMTggKysrKyst LS0tLQogYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vY2hlY2tzdW0uaCAgICAgICAgICAgICAgICAg fCAgNCArLS0KIGFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2NvbXBhdC5oICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2RlbGF5LmggICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIGFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2RtYS5oICAgICAgICAgICAg ICAgICAgICAgIHwgMjAgKysrKystLS0tLS0KIGFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2lkZS5o ICAgICAgICAgICAgICAgICAgICAgIHwgIDggKystLS0KIGFyY2gvcGFyaXNjL2luY2x1ZGUvYXNt L2lycS5oICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvcGFyaXNjL2luY2x1ZGUv YXNtL3NwaW5sb2NrLmggICAgICAgICAgICAgICAgIHwgMTIgKysrLS0tLQogYXJjaC9wb3dlcnBj L2luY2x1ZGUvYXNtL2F0b21pYy5oICAgICAgICAgICAgICAgICAgfCA0MCArKysrKysrKysrKy0t LS0tLS0tLS0tCiBhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYml0b3BzLmggICAgICAgICAgICAg ICAgICB8IDI4ICsrKysrKystLS0tLS0tLQogYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2RtYS5o ICAgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKy0tLS0tLQogYXJjaC9wb3dlcnBjL2luY2x1 ZGUvYXNtL2VkYWMuaCAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC9wb3dlcnBjL2lu Y2x1ZGUvYXNtL2lycS5oICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC9wb3dlcnBj L2luY2x1ZGUvYXNtL2xvY2FsLmggICAgICAgICAgICAgICAgICAgfCAxNCArKysrLS0tLQogYXJj aC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0LmggICAgICAgICAgICAgICAgICAgfCAgMiArLQog YXJjaC9zaC9pbmNsdWRlL2FzbS9wcm9jZXNzb3JfMzIuaCAgICAgICAgICAgICAgICAgfCAgNCAr LS0KIGFyY2gvc2gvaW5jbHVkZS9jcHUtc2gzL2NwdS9kYWMuaCAgICAgICAgICAgICAgICAgIHwg IDYgKystLQogYXJjaC94ODYvaW5jbHVkZS9hc20vYWx0ZXJuYXRpdmUuaCAgICAgICAgICAgICAg ICAgfCAxNCArKysrLS0tLQogYXJjaC94ODYvdW0vYXNtL2NoZWNrc3VtLmggICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNCArLS0KIGFyY2gveDg2L3VtL2FzbS9jaGVja3N1bV8zMi5oICAgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBhcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9jaGVja3N1 bS5oICAgICAgICAgICAgICAgICB8IDE0ICsrKystLS0tCiBhcmNoL3h0ZW5zYS9pbmNsdWRlL2Fz bS9jbXB4Y2hnLmggICAgICAgICAgICAgICAgICB8ICA0ICstLQogYXJjaC94dGVuc2EvaW5jbHVk ZS9hc20vaXJxLmggICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYmxvY2svcGFydGl0aW9u cy9hbWlnYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9hdG0v aGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCiBkcml2ZXJz L2F0bS9pZHQ3NzI1Mi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0KIGRy aXZlcnMvZ3B1L2RybS9tZ2EvbWdhX2Rydi5oICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IGRyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX3N0YXRlLmMgICAgICAgICAgICAgICAgICAgIHwgMTQg KysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9yMTI4L3IxMjhfZHJ2LmggICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9yMTI4L3IxMjhfc3RhdGUuYyAgICAgICAgICAg ICAgICAgIHwgMTQgKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2lycS5jICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS92aWEvdmlhX3ZlcmlmaWVy LmMgICAgICAgICAgICAgICAgIHwgMzAgKysrKysrKystLS0tLS0tLQogZHJpdmVycy9pc2RuL2hh cmR3YXJlL2VpY29uL3BsYXRmb3JtLmggICAgICAgICAgICAgfCAxNCArKysrLS0tLQogZHJpdmVy cy9pc2RuL2k0bC9pc2RuX25ldC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrLS0t LQogZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAg OCArKy0tLQogZHJpdmVycy9tZWRpYS9wY2kvaXZ0di9pdnR2LWlvY3RsLmMgICAgICAgICAgICAg ICAgfCAgMiArLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VuL3N1bmdlbS5jICAgICAgICAgICAg ICAgICAgfCAgOCArKy0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VuL3N1bmhtZS5jICAgICAg ICAgICAgICAgICAgfCAgNiArKy0tCiBkcml2ZXJzL25ldC9oYW1yYWRpby9iYXljb21fc2VyX2Zk eC5jICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMgICAg ICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL25ldC93YW4vbjIuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLQogZHJpdmVycy9wYXJpc2MvbGVkLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KIGRyaXZlcnMvcGFyaXNjL3NiYV9p b21tdS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvcGFycG9ydC9w YXJwb3J0X2dzYy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvcGFycG9y dC9wYXJwb3J0X2dzYy5oICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBkcml2ZXJzL3Bh cnBvcnQvcGFycG9ydF9wYy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJz L3Njc2kvbHBmYy9scGZjX3Njc2kuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2 ZXJzL3Njc2kvcGNtY2lhL3N5bTUzYzUwMF9jcy5jICAgICAgICAgICAgICAgICB8ICA0ICstLQog ZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lubGluZS5oICAgICAgICAgICAgICAgICAgfCAgMiAr LQogZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX29zLmMgICAgICAgICAgICAgICAgICAgICAgfCAg NCArLS0KIGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfcHdyY3RybC5jICAgICAg IHwgIDQgKy0tCiBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3dsYW5fdXRpbC5j ICAgICB8ICAyICstCiBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvZHJ2X3R5cGVz LmggICAgICB8ICA2ICsrLS0KIGRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9pZWVl ODAyMTEuaCAgICAgIHwgIDYgKystLQogZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRl L29zZGVwX3NlcnZpY2UuaCAgfCAxMCArKystLS0KIC4uLi9ydGw4NzIzYnMvaW5jbHVkZS9vc2Rl cF9zZXJ2aWNlX2xpbnV4LmggICAgICAgIHwgMTQgKysrKy0tLS0KIGRyaXZlcnMvc3RhZ2luZy9y dGw4NzIzYnMvaW5jbHVkZS9ydHdfbWxtZS5oICAgICAgIHwgMTQgKysrKy0tLS0KIGRyaXZlcnMv c3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oICAgICAgIHwgMTYgKysrKy0tLS0t CiBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvc3RhX2luZm8uaCAgICAgICB8ICAy ICstCiBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvd2lmaS5oICAgICAgICAgICB8 IDE0ICsrKystLS0tCiBkcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvd2xhbl9ic3Nk ZWYuaCAgICB8ICAyICstCiBkcml2ZXJzL3R0eS9hbWlzZXJpYWwuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL3R0eS9zZXJpYWwvaXAyMnppbG9nLmMgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL3R0eS9zZXJpYWwvc3Vuc2FiLmMgICAgICAg ICAgICAgICAgICAgICAgICB8ICA0ICstLQogZHJpdmVycy90dHkvc2VyaWFsL3N1bnppbG9nLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2Zi Y29uLmMgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKy0tLS0tLQogZHJpdmVycy92aWRlby9m YmRldi9mZmIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy92aWRl by9mYmRldi9pbnRlbGZiL2ludGVsZmJkcnYuYyAgICAgICAgICAgfCAxMCArKystLS0KIGRyaXZl cnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZiaHcuYyAgICAgICAgICAgIHwgIDIgKy0KIGRy aXZlcnMvdzEvbWFzdGVycy9tYXRyb3hfdzEuYyAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0t CiBmcy9jb2RhL2NvZGFfbGludXguaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2 ICsrLS0KIGZzL2ZyZWV2eGZzL3Z4ZnNfaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIGZzL25mc2QvbmZzZmguaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDQgKy0tCiBpbmNsdWRlL2FjcGkvcGxhdGZvcm0vYWNnY2MuaCAgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBpbmNsdWRlL2FjcGkvcGxhdGZvcm0vYWNpbnRlbC5oICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL2FzbS1nZW5lcmljL2lkZV9pb3BzLmggICAgICAg ICAgICAgICAgICAgICB8ICA4ICsrLS0tCiBpbmNsdWRlL2xpbnV4L2F0YWxrLmggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA0ICstLQogaW5jbHVkZS9saW51eC9jZXBoL21lc3Nlbmdl ci5oICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogaW5jbHVkZS9saW51eC9jb21waWxlcl90 eXBlcy5oICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KIGluY2x1ZGUvbGludXgvaGRsYy5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBpbmNsdWRlL2xpbnV4L2lu ZXRkZXZpY2UuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrLS0tCiBpbmNsdWRlL2xp bnV4L3BhcnBvcnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLQogaW5jbHVk ZS9saW51eC9wYXJwb3J0X3BjLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAyMiArKysrKyst LS0tLS0KIGluY2x1ZGUvbmV0L2F4MjUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIGluY2x1ZGUvbmV0L2NoZWNrc3VtLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGluY2x1ZGUvbmV0L2RuX25zcC5oICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMTYgKysrKy0tLS0tCiBpbmNsdWRlL25ldC9pcC5oICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL25ldC9pcDZfY2hlY2tzdW0uaCAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL25ldC9pcHguaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKy0tLQogaW5jbHVkZS9uZXQvbGxjX2NfZXYu aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KIGluY2x1ZGUvbmV0L2xsY19j b25uLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBpbmNsdWRlL25ldC9s bGNfc19ldi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL25l dC9uZXRyb20uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrLS0tCiBpbmNs dWRlL25ldC9zY20uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKyst LS0tCiBpbmNsdWRlL25ldC91ZHBsaXRlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBpbmNsdWRlL25ldC94MjUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA4ICsrLS0tCiBpbmNsdWRlL25ldC94ZnJtLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDE4ICsrKysrLS0tLS0KIGluY2x1ZGUvdWFwaS9saW51eC9hdG0uaCAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBpbmNsdWRlL3VhcGkvbGludXgvYXRtc2FwLmgg ICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL3VhcGkvbGludXgvbWFwX3Rv XzdzZWdtZW50LmggICAgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL3VhcGkvbGludXgvbmV0 ZmlsdGVyX2FycC9hcnBfdGFibGVzLmggICAgICB8ICAyICstCiBpbmNsdWRlL3VhcGkvbGludXgv bmV0ZmlsdGVyX2JyaWRnZS9lYnRhYmxlcy5oICAgICB8ICAyICstCiBpbmNsdWRlL3VhcGkvbGlu dXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmggICAgICB8ICAyICstCiBpbmNsdWRlL3VhcGkv bGludXgvbmV0ZmlsdGVyX2lwdjYvaXA2X3RhYmxlcy5oICAgICB8ICAyICstCiBpbmNsdWRlL3Zp ZGVvL25ld3BvcnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKy0tLS0KIGxp Yi96c3RkL21lbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IG5ldC9hcHBsZXRhbGsvYXRhbGtfcHJvYy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQg Ky0tCiBuZXQvYXBwbGV0YWxrL2RkcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBuZXQvY29yZS9uZWlnaGJvdXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBuZXQvY29yZS9zY20uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAyICstCiBuZXQvZGVjbmV0L2RuX25zcF9pbi5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBuZXQvZGVjbmV0L2RuX25zcF9vdXQuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBuZXQvZGVjbmV0L2RuX3JvdXRlLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBuZXQvZGVjbmV0L2RuX3RhYmxlLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA0ICstLQogbmV0L2lwdjQvaWdtcC5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2lwdjYvYWZfaW5ldDYuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2lwdjYvaWNtcC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KIG5ldC9pcHY2L3VkcC5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBuZXQvbGFwYi9sYXBiX2lm YWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLQogbmV0L2xsYy9sbGNf aW5wdXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc2NyaXB0cy9j aGVja3BhdGNoLnBsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKy0tLQogc2Ny aXB0cy9nZW5rc3ltcy9rZXl3b3Jkcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0K IHNjcmlwdHMva2VybmVsLWRvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQg Ky0tCiBzb3VuZC9zcGFyYy9hbWQ3OTMwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA2ICsrLS0KIDE2NSBmaWxlcyBjaGFuZ2VkLCA1NDcgaW5zZXJ0aW9ucygrKSwgNTQ3IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdHJhY2UvdHJhY2Vwb2ludC1hbmFs eXNpcy5yc3QgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL3RyYWNlcG9pbnQtYW5hbHlzaXMucnN0Cmlu ZGV4IDcxNjMyNmI5ZjE1Mi4uZWRkNzM1YTliYTJkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9u L3RyYWNlL3RyYWNlcG9pbnQtYW5hbHlzaXMucnN0CisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2Uv dHJhY2Vwb2ludC1hbmFseXNpcy5yc3QKQEAgLTMxNSw3ICszMTUsNyBAQCBUbyBzZWUgd2hlcmUg d2l0aGluIHRoZSBmdW5jdGlvbiBwaXhtYW5GaWxsc3NlMiB0aGluZ3MgYXJlIGdvaW5nIHdyb25n OgogICAgIDAuMDAgOiAgICAgICAgIDM0ZWViOiAgICAgICAwZiAxOCAwOCAgICAgICAgICAgICAg ICBwcmVmZXRjaHQwICglZWF4KQogICAgICAgICAgOiAgICAgIH0KICAgICAgICAgIDoKLSAgICAg ICAgIDogICAgICBleHRlcm4gX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXywgX19hbHdheXNfaW5saW5lX18sIF8KKyAgICAgICAgIDogICAgICBleHRlcm4gaW5saW5l IHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf CiAgICAgICAgICA6ICAgICAgX21tX3N0b3JlX3NpMTI4IChfX20xMjhpICpfX1AsIF9fbTEyOGkg X19CKSA6ICAgICAgewogICAgICAgICAgOiAgICAgICAgKl9fUCA9IF9fQjsKICAgIDEyLjQwIDog ICAgICAgICAzNGVlZTogICAgICAgNjYgMGYgN2YgODAgNDAgZmYgZmYgICAgbW92ZHFhICV4bW0w LC0weGMwKCVlYXgpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9qYV9K UC9TdWJtaXR0aW5nUGF0Y2hlcyBiL0RvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL2phX0pQL1N1 Ym1pdHRpbmdQYXRjaGVzCmluZGV4IDAyMTM5NjU2NDYzZS4uMTg4ODQ2ZjExODRiIDEwMDY0NAot LS0gYS9Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9qYV9KUC9TdWJtaXR0aW5nUGF0Y2hlcwor KysgYi9Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy9qYV9KUC9TdWJtaXR0aW5nUGF0Y2hlcwpA QCAtNjc2LDggKzY3Niw4IEBAIGdjYyDjgavjgYrjgYTjgabjga/jgIHjg57jgq/jg63jgajlkIzj gZjjgY/jgonjgYTou73jgYTjgafjgZnjgIIKIOOBhOOBj+OBpOOBi+OBrueJueWumuOBruOCseOD vOOCuSnjgoTjgIwgc3RhdGljIGlubGluZSDjgI3plqLmlbDjgpLkvb/jgYbjgZPjgajjgYzjgafj gY3jgarjgYTjgojjgYbjgaoKIOWgtOaJgCjjg57jgq/jg63jga7lvJXmlbDjga7mloflrZfliJfp gKPntZDjga7jgojjgYbjgaop44Gr44Gg44GR5L2/44KP44KM44KL44G544GN44Gn44GZ44CCCiAK LeOAjCBzdGF0aWMgaW5saW5lIOOAjeOBr+OAjCBzdGF0aWMgX19pbmxpbmVfXyDjgI3jgoTjgIwg ZXh0ZXJuIGlubGluZSDjgI3jgoQKLeOAjCBleHRlcm4gX19pbmxpbmVfXyDjgI3jgojjgorjgoLp ganliIfjgafjgZnjgIIKK+OAjCBzdGF0aWMgaW5saW5lIOOAjeOBr+OAjCBzdGF0aWMgaW5saW5l IOOAjeOChOOAjCBleHRlcm4gaW5saW5lIOOAjeOChAor44CMIGV4dGVybiBpbmxpbmUg44CN44KI 44KK44KC6YGp5YiH44Gn44GZ44CCCiAKIDQpIOioreioiOOBq+WHneOCiuOBmeOBjuOCi+OBqgog CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9TdWJtaXR0aW5n UGF0Y2hlcyBiL0RvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL1N1Ym1pdHRpbmdQYXRj aGVzCmluZGV4IGU5MDk4ZGE4ZjFhNC4uNWMzOWI2YzQ4N2I1IDEwMDY0NAotLS0gYS9Eb2N1bWVu dGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9TdWJtaXR0aW5nUGF0Y2hlcworKysgYi9Eb2N1bWVu dGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9TdWJtaXR0aW5nUGF0Y2hlcwpAQCAtMzc3LDggKzM3 Nyw4IEBAIFN0YXRpYyBpbmxpbmUg5Ye95pWw55u45q+U5a6P5p2l6K+077yM5piv5aW95b6X5aSa 55qE6YCJ5oup44CCU3RhdGljIGlubGluZSDlh70KIAog5a6P5Y+q5ZyoIHN0YXRpYyBpbmxpbmUg 5Ye95pWw5LiN5piv5pyA5LyY55qE5pe25YCZW+WcqCBmYXN0IHBhdGhzIOmHjOacieW+iOWwkeea hOeLrOeri+eahAog5qGI5L6LXe+8jOaIluiAheS4jeWPr+iDveeUqCBzdGF0aWMgaW5saW5lIOWH veaVsOeahOaXtuWAmVvkvovlpoLlrZfnrKbkuLLliIbphY1d44CCCi3lupTor6XnlKggJ3N0YXRp YyBpbmxpbmUnIOiAjOS4jeaYryAnc3RhdGljIF9faW5saW5lX18nLCAnZXh0ZXJuIGlubGluZScg 5ZKMCi0nZXh0ZXJuIF9faW5saW5lX18nIOOAggor5bqU6K+l55SoICdzdGF0aWMgaW5saW5lJyDo gIzkuI3mmK8gJ3N0YXRpYyBpbmxpbmUnLCAnZXh0ZXJuIGlubGluZScg5ZKMCisnZXh0ZXJuIGlu bGluZScg44CCCiAKIDQpIOS4jeimgei/h+W6puiuvuiuoQogCmRpZmYgLS1naXQgYS9hcmNoL2Fs cGhhL2luY2x1ZGUvYXNtL2F0b21pYy5oIGIvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9hdG9taWMu aAppbmRleCAxNTBhMWM1ZDZhMmMuLmY4ZDQ5NGJjZDcyYyAxMDA2NDQKLS0tIGEvYXJjaC9hbHBo YS9pbmNsdWRlL2FzbS9hdG9taWMuaAorKysgYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2F0b21p Yy5oCkBAIC00MCw3ICs0MCw3IEBACiAgKi8KIAogI2RlZmluZSBBVE9NSUNfT1Aob3AsIGFzbV9v cCkJCQkJCQlcCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY18jI29wKGludCBpLCBhdG9t aWNfdCAqIHYpCQkJXAorc3RhdGljIGlubGluZSB2b2lkIGF0b21pY18jI29wKGludCBpLCBhdG9t aWNfdCAqIHYpCQkJXAogewkJCQkJCQkJCVwKIAl1bnNpZ25lZCBsb25nIHRlbXA7CQkJCQkJXAog CV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGlu bGluZSBpbnQgYXRvbWljX2ZldGNoXyMjb3AjI19yZWxheGVkKGludCBpLCBhdG9taWNfdCAqdikJ XAogfQogCiAjZGVmaW5lIEFUT01JQzY0X09QKG9wLCBhc21fb3ApCQkJCQkJXAotc3RhdGljIF9f aW5saW5lX18gdm9pZCBhdG9taWM2NF8jI29wKGxvbmcgaSwgYXRvbWljNjRfdCAqIHYpCQlcCitz dGF0aWMgaW5saW5lIHZvaWQgYXRvbWljNjRfIyNvcChsb25nIGksIGF0b21pYzY0X3QgKiB2KQkJ XAogewkJCQkJCQkJCVwKIAl1bnNpZ25lZCBsb25nIHRlbXA7CQkJCQkJXAogCV9fYXNtX18gX192 b2xhdGlsZV9fKAkJCQkJCVwKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2 b2lkIGF0b21pYzY0XyMjb3AobG9uZyBpLCBhdG9taWM2NF90ICogdikJCVwKIH0JCQkJCQkJCQlc CiAKICNkZWZpbmUgQVRPTUlDNjRfT1BfUkVUVVJOKG9wLCBhc21fb3ApCQkJCQlcCi1zdGF0aWMg X19pbmxpbmVfXyBsb25nIGF0b21pYzY0XyMjb3AjI19yZXR1cm5fcmVsYXhlZChsb25nIGksIGF0 b21pYzY0X3QgKiB2KQlcCitzdGF0aWMgaW5saW5lIGxvbmcgYXRvbWljNjRfIyNvcCMjX3JldHVy bl9yZWxheGVkKGxvbmcgaSwgYXRvbWljNjRfdCAqIHYpCVwKIHsJCQkJCQkJCQlcCiAJbG9uZyB0 ZW1wLCByZXN1bHQ7CQkJCQkJXAogCV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKQEAgLTEy OCw3ICsxMjgsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBsb25nIGF0b21pYzY0XyMjb3AjI19yZXR1 cm5fcmVsYXhlZChsb25nIGksIGF0b21pYzY0X3QgKiB2KQlcCiB9CiAKICNkZWZpbmUgQVRPTUlD NjRfRkVUQ0hfT1Aob3AsIGFzbV9vcCkJCQkJCVwKLXN0YXRpYyBfX2lubGluZV9fIGxvbmcgYXRv bWljNjRfZmV0Y2hfIyNvcCMjX3JlbGF4ZWQobG9uZyBpLCBhdG9taWM2NF90ICogdikJXAorc3Rh dGljIGlubGluZSBsb25nIGF0b21pYzY0X2ZldGNoXyMjb3AjI19yZWxheGVkKGxvbmcgaSwgYXRv bWljNjRfdCAqIHYpCVwKIHsJCQkJCQkJCQlcCiAJbG9uZyB0ZW1wLCByZXN1bHQ7CQkJCQkJXAog CV9fYXNtX18gX192b2xhdGlsZV9fKAkJCQkJCVwKQEAgLTIxNCw3ICsyMTQsNyBAQCBBVE9NSUNf T1BTKHhvciwgeG9yKQogICogQXRvbWljYWxseSBhZGRzIEBhIHRvIEB2LCBzbyBsb25nIGFzIGl0 IHdhcyBub3QgQHUuCiAgKiBSZXR1cm5zIHRoZSBvbGQgdmFsdWUgb2YgQHYuCiAgKi8KLXN0YXRp YyBfX2lubGluZV9fIGludCBhdG9taWNfZmV0Y2hfYWRkX3VubGVzcyhhdG9taWNfdCAqdiwgaW50 IGEsIGludCB1KQorc3RhdGljIGlubGluZSBpbnQgYXRvbWljX2ZldGNoX2FkZF91bmxlc3MoYXRv bWljX3QgKnYsIGludCBhLCBpbnQgdSkKIHsKIAlpbnQgYywgbmV3LCBvbGQ7CiAJc21wX21iKCk7 CkBAIC0yNDYsNyArMjQ2LDcgQEAgc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19mZXRjaF9h ZGRfdW5sZXNzKGF0b21pY190ICp2LCBpbnQgYSwgaW50IHUpCiAgKiBBdG9taWNhbGx5IGFkZHMg QGEgdG8gQHYsIHNvIGxvbmcgYXMgaXQgd2FzIG5vdCBAdS4KICAqIFJldHVybnMgdGhlIG9sZCB2 YWx1ZSBvZiBAdi4KICAqLwotc3RhdGljIF9faW5saW5lX18gbG9uZyBhdG9taWM2NF9mZXRjaF9h ZGRfdW5sZXNzKGF0b21pYzY0X3QgKnYsIGxvbmcgYSwgbG9uZyB1KQorc3RhdGljIGlubGluZSBs b25nIGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3MoYXRvbWljNjRfdCAqdiwgbG9uZyBhLCBsb25n IHUpCiB7CiAJbG9uZyBjLCBuZXcsIG9sZDsKIAlzbXBfbWIoKTsKZGlmZiAtLWdpdCBhL2FyY2gv YWxwaGEvaW5jbHVkZS9hc20vYml0b3BzLmggYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2JpdG9w cy5oCmluZGV4IGNhNDNmNGQwYjkzNy4uNGQwOGJkODI0M2MwIDEwMDY0NAotLS0gYS9hcmNoL2Fs cGhhL2luY2x1ZGUvYXNtL2JpdG9wcy5oCisrKyBiL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vYml0 b3BzLmgKQEAgLTgyLDcgKzgyLDcgQEAgY2xlYXJfYml0X3VubG9jayh1bnNpZ25lZCBsb25nIG5y LCB2b2xhdGlsZSB2b2lkICogYWRkcikKIC8qCiAgKiBXQVJOSU5HOiBub24gYXRvbWljIHZlcnNp b24uCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQKK3N0YXRpYyBpbmxpbmUgdm9pZAogX19j bGVhcl9iaXQodW5zaWduZWQgbG9uZyBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCiB7CiAJaW50 ICptID0gKChpbnQgKikgYWRkcikgKyAobnIgPj4gNSk7CkBAIC0xMTgsNyArMTE4LDcgQEAgY2hh bmdlX2JpdCh1bnNpZ25lZCBsb25nIG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKIC8qCiAgKiBX QVJOSU5HOiBub24gYXRvbWljIHZlcnNpb24uCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQK K3N0YXRpYyBpbmxpbmUgdm9pZAogX19jaGFuZ2VfYml0KHVuc2lnbmVkIGxvbmcgbnIsIHZvbGF0 aWxlIHZvaWQgKiBhZGRyKQogewogCWludCAqbSA9ICgoaW50ICopIGFkZHIpICsgKG5yID4+IDUp OwpAQCAtMjcyLDcgKzI3Miw3IEBAIHRlc3RfYW5kX2NoYW5nZV9iaXQodW5zaWduZWQgbG9uZyBu ciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCiAvKgogICogV0FSTklORzogbm9uIGF0b21pYyB2ZXJz aW9uLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQKK3N0YXRpYyBpbmxpbmUgaW50CiBfX3Rl c3RfYW5kX2NoYW5nZV9iaXQodW5zaWduZWQgbG9uZyBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIp CiB7CiAJdW5zaWduZWQgbG9uZyBtYXNrID0gMSA8PCAobnIgJiAweDFmKTsKZGlmZiAtLWdpdCBh L2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vY29tcGlsZXIuaCBiL2FyY2gvYWxwaGEvaW5jbHVkZS9h c20vY29tcGlsZXIuaAppbmRleCA1MTU5YmEyNTlkNjUuLjExMTc2ZGMxODJmOCAxMDA2NDQKLS0t IGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9jb21waWxlci5oCisrKyBiL2FyY2gvYWxwaGEvaW5j bHVkZS9hc20vY29tcGlsZXIuaApAQCAtMTAsOCArMTAsOCBAQAogCiAjaW5jbHVkZSA8bGludXgv Y29tcGlsZXIuaD4KICN1bmRlZiBpbmxpbmUKLSN1bmRlZiBfX2lubGluZV9fCi0jdW5kZWYgX19p bmxpbmUKKyN1bmRlZiBpbmxpbmUKKyN1bmRlZiBpbmxpbmUKICN1bmRlZiBfX2Fsd2F5c19pbmxp bmUKICNkZWZpbmUgX19hbHdheXNfaW5saW5lCQlpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlz X2lubGluZSkpCiAKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vZG1hLmggYi9h cmNoL2FscGhhL2luY2x1ZGUvYXNtL2RtYS5oCmluZGV4IDI4NjEwZWE3Nzg2ZC4uNzNiZjQxNTRi NmE1IDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2RtYS5oCisrKyBiL2FyY2gv YWxwaGEvaW5jbHVkZS9hc20vZG1hLmgKQEAgLTE5OCwyMCArMTk4LDIwIEBACiAKIGV4dGVybiBz cGlubG9ja190ICBkbWFfc3Bpbl9sb2NrOwogCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBs b25nIGNsYWltX2RtYV9sb2NrKHZvaWQpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY2xh aW1fZG1hX2xvY2sodm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXNwaW5fbG9ja19p cnFzYXZlKCZkbWFfc3Bpbl9sb2NrLCBmbGFncyk7CiAJcmV0dXJuIGZsYWdzOwogfQogCi1zdGF0 aWMgX19pbmxpbmVfXyB2b2lkIHJlbGVhc2VfZG1hX2xvY2sodW5zaWduZWQgbG9uZyBmbGFncykK K3N0YXRpYyBpbmxpbmUgdm9pZCByZWxlYXNlX2RtYV9sb2NrKHVuc2lnbmVkIGxvbmcgZmxhZ3Mp CiB7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZG1hX3NwaW5fbG9jaywgZmxhZ3MpOwogfQog CiAvKiBlbmFibGUvZGlzYWJsZSBhIHNwZWNpZmljIERNQSBjaGFubmVsICovCi1zdGF0aWMgX19p bmxpbmVfXyB2b2lkIGVuYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQorc3RhdGljIGlubGlu ZSB2b2lkIGVuYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQogewogCWlmIChkbWFucjw9MykK IAkJZG1hX291dGIoZG1hbnIsICBETUExX01BU0tfUkVHKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBz dGF0aWMgX19pbmxpbmVfXyB2b2lkIGVuYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQogCQlk bWFfb3V0YihkbWFuciAmIDMsICBETUEyX01BU0tfUkVHKTsKIH0KIAotc3RhdGljIF9faW5saW5l X18gdm9pZCBkaXNhYmxlX2RtYSh1bnNpZ25lZCBpbnQgZG1hbnIpCitzdGF0aWMgaW5saW5lIHZv aWQgZGlzYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQogewogCWlmIChkbWFucjw9MykKIAkJ ZG1hX291dGIoZG1hbnIgfCA0LCAgRE1BMV9NQVNLX1JFRyk7CkBAIC0yMzQsNyArMjM0LDcgQEAg c3RhdGljIF9faW5saW5lX18gdm9pZCBkaXNhYmxlX2RtYSh1bnNpZ25lZCBpbnQgZG1hbnIpCiAg KiAtLS0gSW4gb3JkZXIgdG8gZG8gdGhhdCwgdGhlIERNQSByb3V0aW5lcyBiZWxvdyBzaG91bGQg LS0tCiAgKiAtLS0gb25seSBiZSB1c2VkIHdoaWxlIGludGVycnVwdHMgYXJlIGRpc2FibGVkISAt LS0KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9kbWFfZmYodW5zaWduZWQgaW50 IGRtYW5yKQorc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2RtYV9mZih1bnNpZ25lZCBpbnQgZG1h bnIpCiB7CiAJaWYgKGRtYW5yPD0zKQogCQlkbWFfb3V0YigwLCAgRE1BMV9DTEVBUl9GRl9SRUcp OwpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2xlYXJfZG1hX2Zm KHVuc2lnbmVkIGludCBkbWFucikKIH0KIAogLyogc2V0IG1vZGUgKGFib3ZlKSBmb3IgYSBzcGVj aWZpYyBETUEgY2hhbm5lbCAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX21vZGUo dW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIG1vZGUpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2Rt YV9tb2RlKHVuc2lnbmVkIGludCBkbWFuciwgY2hhciBtb2RlKQogewogCWlmIChkbWFucjw9MykK IAkJZG1hX291dGIobW9kZSB8IGRtYW5yLCAgRE1BMV9NT0RFX1JFRyk7CkBAIC0yNTIsNyArMjUy LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX21vZGUodW5zaWduZWQgaW50IGRt YW5yLCBjaGFyIG1vZGUpCiB9CiAKIC8qIHNldCBleHRlbmRlZCBtb2RlIGZvciBhIHNwZWNpZmlj IERNQSBjaGFubmVsICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF9kbWFfZXh0X21vZGUo dW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIGV4dF9tb2RlKQorc3RhdGljIGlubGluZSB2b2lkIHNl dF9kbWFfZXh0X21vZGUodW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIGV4dF9tb2RlKQogewogCWlm IChkbWFucjw9MykKIAkJZG1hX291dGIoZXh0X21vZGUgfCBkbWFuciwgIERNQTFfRVhUX01PREVf UkVHKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF9kbWFf ZXh0X21vZGUodW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIGV4dF9tb2RlKQogICogVGhpcyBpcyB1 c2VkIGZvciBzdWNjZXNzaXZlIHRyYW5zZmVycyB3aGVuIHdlIGtub3cgdGhlIGNvbnRlbnRzIG9m CiAgKiB0aGUgbG93ZXIgMTYgYml0cyBvZiB0aGUgRE1BIGN1cnJlbnQgYWRkcmVzcyByZWdpc3Rl ci4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX3BhZ2UodW5zaWduZWQgaW50 IGRtYW5yLCB1bnNpZ25lZCBpbnQgcGFnZW5yKQorc3RhdGljIGlubGluZSB2b2lkIHNldF9kbWFf cGFnZSh1bnNpZ25lZCBpbnQgZG1hbnIsIHVuc2lnbmVkIGludCBwYWdlbnIpCiB7CiAJc3dpdGNo KGRtYW5yKSB7CiAJCWNhc2UgMDoKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgX19pbmxpbmVf XyB2b2lkIHNldF9kbWFfcGFnZSh1bnNpZ25lZCBpbnQgZG1hbnIsIHVuc2lnbmVkIGludCBwYWdl bnIpCiAvKiBTZXQgdHJhbnNmZXIgYWRkcmVzcyAmIHBhZ2UgYml0cyBmb3Igc3BlY2lmaWMgRE1B IGNoYW5uZWwuCiAgKiBBc3N1bWVzIGRtYSBmbGlwZmxvcCBpcyBjbGVhci4KICAqLwotc3RhdGlj IF9faW5saW5lX18gdm9pZCBzZXRfZG1hX2FkZHIodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25l ZCBpbnQgYSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZG1hX2FkZHIodW5zaWduZWQgaW50IGRt YW5yLCB1bnNpZ25lZCBpbnQgYSkKIHsKIAlpZiAoZG1hbnIgPD0gMykgIHsKIAkgICAgZG1hX291 dGIoIGEgJiAweGZmLCAoKGRtYW5yJjMpPDwxKSArIElPX0RNQTFfQkFTRSApOwpAQCAtMzIzLDcg KzMyMyw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9hZGRyKHVuc2lnbmVkIGlu dCBkbWFuciwgdW5zaWduZWQgaW50IGEpCiAgKiBBc3N1bWVzIGRtYSBmbGlwLWZsb3AgaXMgY2xl YXIuCiAgKiBOT1RFIDI6ICJjb3VudCIgcmVwcmVzZW50cyBfYnl0ZXNfIGFuZCBtdXN0IGJlIGV2 ZW4gZm9yIGNoYW5uZWxzIDUtNy4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1h X2NvdW50KHVuc2lnbmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGNvdW50KQorc3RhdGljIGlu bGluZSB2b2lkIHNldF9kbWFfY291bnQodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBpbnQg Y291bnQpCiB7CiAgICAgICAgIGNvdW50LS07CiAJaWYgKGRtYW5yIDw9IDMpICB7CkBAIC0zNDQs NyArMzQ0LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX2NvdW50KHVuc2lnbmVk IGludCBkbWFuciwgdW5zaWduZWQgaW50IGNvdW50KQogICoKICAqIEFzc3VtZXMgRE1BIGZsaXAt ZmxvcCBpcyBjbGVhci4KICAqLwotc3RhdGljIF9faW5saW5lX18gaW50IGdldF9kbWFfcmVzaWR1 ZSh1bnNpZ25lZCBpbnQgZG1hbnIpCitzdGF0aWMgaW5saW5lIGludCBnZXRfZG1hX3Jlc2lkdWUo dW5zaWduZWQgaW50IGRtYW5yKQogewogCXVuc2lnbmVkIGludCBpb19wb3J0ID0gKGRtYW5yPD0z KT8gKChkbWFuciYzKTw8MSkgKyAxICsgSU9fRE1BMV9CQVNFCiAJCQkJCSA6ICgoZG1hbnImMyk8 PDIpICsgMiArIElPX0RNQTJfQkFTRTsKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvaW5jbHVkZS9h c20vZmxvcHB5LmggYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2Zsb3BweS5oCmluZGV4IDk0Mjky NDc1NmNmMi4uMzc5NDdjMmE4MzM2IDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNt L2Zsb3BweS5oCisrKyBiL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vZmxvcHB5LmgKQEAgLTM0LDcg KzM0LDcgQEAKIAogI2RlZmluZSBmZF9kbWFfc2V0dXAoYWRkcixzaXplLG1vZGUsaW8pIGFscGhh X2ZkX2RtYV9zZXR1cChhZGRyLHNpemUsbW9kZSxpbykKIAotc3RhdGljIF9faW5saW5lX18gaW50 IAorc3RhdGljIGlubGluZSBpbnQgCiBhbHBoYV9mZF9kbWFfc2V0dXAoY2hhciAqYWRkciwgdW5z aWduZWQgbG9uZyBzaXplLCBpbnQgbW9kZSwgaW50IGlvKQogewogCXN0YXRpYyB1bnNpZ25lZCBs b25nIHByZXZfc2l6ZTsKQEAgLTcyLDcgKzcyLDcgQEAgYWxwaGFfZmRfZG1hX3NldHVwKGNoYXIg KmFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgaW50IG1vZGUsIGludCBpbykKIAogI2VuZGlmIC8q IENPTkZJR19QQ0kgKi8KIAotX19pbmxpbmVfXyB2b2lkIHZpcnR1YWxfZG1hX2luaXQodm9pZCkK K2lubGluZSB2b2lkIHZpcnR1YWxfZG1hX2luaXQodm9pZCkKIHsKIAkvKiBOb3RoaW5nIHRvIGRv IG9uIGFuIEFscGhhICovCiB9CmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2ly cS5oIGIvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9pcnEuaAppbmRleCA0ZDE3Y2FjZDE0NjIuLmJm YWQ4NTk4ZTk3MiAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9pcnEuaAorKysg Yi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2lycS5oCkBAIC03Nyw3ICs3Nyw3IEBACiAjIGRlZmlu ZSBOUl9JUlFTCTE2CiAjZW5kaWYKIAotc3RhdGljIF9faW5saW5lX18gaW50IGlycV9jYW5vbmlj YWxpemUoaW50IGlycSkKK3N0YXRpYyBpbmxpbmUgaW50IGlycV9jYW5vbmljYWxpemUoaW50IGly cSkKIHsKIAkvKgogCSAqIFhYWCBpcyB0aGlzIHRydWUgZm9yIGFsbCBBbHBoYSdzPyAgVGhlIG9s ZCBzZXJpYWwgZHJpdmVyCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2xvY2Fs LmggYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2xvY2FsLmgKaW5kZXggZmFiMjZhMWM5M2Q1Li5i MTM2MTVlZTU0MzEgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vbG9jYWwuaAor KysgYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2xvY2FsLmgKQEAgLTE4LDcgKzE4LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QKICNkZWZpbmUgbG9jYWxfYWRkKGksbCkJYXRvbWljX2xvbmdfYWRkKChpKSwo JihsKS0+YSkpCiAjZGVmaW5lIGxvY2FsX3N1YihpLGwpCWF0b21pY19sb25nX3N1YigoaSksKCYo bCktPmEpKQogCi1zdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvY2FsX2FkZF9yZXR1cm4obG9uZyBp LCBsb2NhbF90ICogbCkKK3N0YXRpYyBpbmxpbmUgbG9uZyBsb2NhbF9hZGRfcmV0dXJuKGxvbmcg aSwgbG9jYWxfdCAqIGwpCiB7CiAJbG9uZyB0ZW1wLCByZXN1bHQ7CiAJX19hc21fXyBfX3ZvbGF0 aWxlX18oCkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9jYWxfYWRk X3JldHVybihsb25nIGksIGxvY2FsX3QgKiBsKQogCXJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRp YyBfX2lubGluZV9fIGxvbmcgbG9jYWxfc3ViX3JldHVybihsb25nIGksIGxvY2FsX3QgKiBsKQor c3RhdGljIGlubGluZSBsb25nIGxvY2FsX3N1Yl9yZXR1cm4obG9uZyBpLCBsb2NhbF90ICogbCkK IHsKIAlsb25nIHRlbXAsIHJlc3VsdDsKIAlfX2FzbV9fIF9fdm9sYXRpbGVfXygKZGlmZiAtLWdp dCBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vc21wLmggYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNt L3NtcC5oCmluZGV4IDIyNjRhZTcyNjczYi4uZjVlNDlhY2Y2MGE0IDEwMDY0NAotLS0gYS9hcmNo L2FscGhhL2luY2x1ZGUvYXNtL3NtcC5oCisrKyBiL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vc21w LmgKQEAgLTksNyArOSw3IEBACiAKIC8qIEhBQ0s6IENhYnJpbyBXSEFNSSByZXR1cm4gdmFsdWUg aXMgYm9ndXMgaWYgbW9yZSB0aGFuIDggYml0cyB1c2VkLi4gOi0oICovCiAKLXN0YXRpYyBfX2lu bGluZV9fIHVuc2lnbmVkIGNoYXIKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhcgogX19oYXJk X3NtcF9wcm9jZXNzb3JfaWQodm9pZCkKIHsKIAlyZWdpc3RlciB1bnNpZ25lZCBjaGFyIF9fcjAg X19hc21fXygiJDAiKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2luY2x1ZGUv bWFjaC91bmNvbXByZXNzLmggYi9hcmNoL2FybS9tYWNoLWlvcDMyeC9pbmNsdWRlL21hY2gvdW5j b21wcmVzcy5oCmluZGV4IGVkNGFjM2UyOGZhMS4uMjRkMWRkNGVhMjdmIDEwMDY0NAotLS0gYS9h cmNoL2FybS9tYWNoLWlvcDMyeC9pbmNsdWRlL21hY2gvdW5jb21wcmVzcy5oCisrKyBiL2FyY2gv YXJtL21hY2gtaW9wMzJ4L2luY2x1ZGUvbWFjaC91bmNvbXByZXNzLmgKQEAgLTIzLDcgKzIzLDcg QEAgc3RhdGljIGlubGluZSB2b2lkIGZsdXNoKHZvaWQpCiB7CiB9CiAKLXN0YXRpYyBfX2lubGlu ZV9fIHZvaWQgX19hcmNoX2RlY29tcF9zZXR1cCh1bnNpZ25lZCBsb25nIGFyY2hfaWQpCitzdGF0 aWMgaW5saW5lIHZvaWQgX19hcmNoX2RlY29tcF9zZXR1cCh1bnNpZ25lZCBsb25nIGFyY2hfaWQp CiB7CiAJaWYgKG1hY2hpbmVfaXNfaXE4MDMyMSgpKQogCQl1YXJ0X2Jhc2UgPSAodm9sYXRpbGUg dTggKilJUTgwMzIxX1VBUlQ7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDMzeC9pbmNs dWRlL21hY2gvdW5jb21wcmVzcy5oIGIvYXJjaC9hcm0vbWFjaC1pb3AzM3gvaW5jbHVkZS9tYWNo L3VuY29tcHJlc3MuaAppbmRleCA2MmI3MWNkZTFmNzkuLjlmYzVhMmFhZThkZSAxMDA2NDQKLS0t IGEvYXJjaC9hcm0vbWFjaC1pb3AzM3gvaW5jbHVkZS9tYWNoL3VuY29tcHJlc3MuaAorKysgYi9h cmNoL2FybS9tYWNoLWlvcDMzeC9pbmNsdWRlL21hY2gvdW5jb21wcmVzcy5oCkBAIC0yMyw3ICsy Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaCh2b2lkKQogewogfQogCi1zdGF0aWMgX19p bmxpbmVfXyB2b2lkIF9fYXJjaF9kZWNvbXBfc2V0dXAodW5zaWduZWQgbG9uZyBhcmNoX2lkKQor c3RhdGljIGlubGluZSB2b2lkIF9fYXJjaF9kZWNvbXBfc2V0dXAodW5zaWduZWQgbG9uZyBhcmNo X2lkKQogewogCWlmIChtYWNoaW5lX2lzX2lxODAzMzEoKSB8fCBtYWNoaW5lX2lzX2lxODAzMzIo KSkKIAkJdWFydF9iYXNlID0gKHZvbGF0aWxlIHUzMiAqKUlPUDMzWF9VQVJUMF9QSFlTOwpkaWZm IC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3VuY29tcHJlc3MuaCBi L2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC91bmNvbXByZXNzLmgKaW5kZXggN2Iy NWMwMjI1ZTQ2Li5kOWU2OThmN2Q3ZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaXhwNHh4 L2luY2x1ZGUvbWFjaC91bmNvbXByZXNzLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5j bHVkZS9tYWNoL3VuY29tcHJlc3MuaApAQCAtMzUsNyArMzUsNyBAQCBzdGF0aWMgdm9pZCBmbHVz aCh2b2lkKQogewogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXJjaF9kZWNvbXBfc2V0 dXAodW5zaWduZWQgbG9uZyBhcmNoX2lkKQorc3RhdGljIGlubGluZSB2b2lkIF9fYXJjaF9kZWNv bXBfc2V0dXAodW5zaWduZWQgbG9uZyBhcmNoX2lkKQogewogCS8qCiAJICogU29tZSBib2FyZHMg YXJlIHVzaW5nIFVBUlQyIGFzIGNvbnNvbGUKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9ocC9jb21t b24vc2JhX2lvbW11LmMgYi9hcmNoL2lhNjQvaHAvY29tbW9uL3NiYV9pb21tdS5jCmluZGV4IDY3 MWNlMWUzZjZmMi4uZDU5N2Y4MTBiYjg0IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaHAvY29tbW9u L3NiYV9pb21tdS5jCisrKyBiL2FyY2gvaWE2NC9ocC9jb21tb24vc2JhX2lvbW11LmMKQEAgLTEw Nyw3ICsxMDcsNyBAQCBleHRlcm4gaW50IHN3aW90bGJfbGF0ZV9pbml0X3dpdGhfZGVmYXVsdF9z aXplIChzaXplX3Qgc2l6ZSk7CiAjZXJyb3IgRlVMTF9WQUxJRF9QRElSIGFuZCBBU1NFUlRfUERJ Ul9TQU5JVFkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQogI2VuZGlmCiAKLSNkZWZpbmUgU0JBX0lO TElORQlfX2lubGluZV9fCisjZGVmaW5lIFNCQV9JTkxJTkUJaW5saW5lCiAvKiAjZGVmaW5lIFNC QV9JTkxJTkUgKi8KIAogI2lmZGVmIERFQlVHX1NCQV9JTklUCmRpZmYgLS1naXQgYS9hcmNoL2lh NjQvaHAvc2ltL3NpbWV0aC5jIGIvYXJjaC9pYTY0L2hwL3NpbS9zaW1ldGguYwppbmRleCBmMzll ZjJiNGVkNzIuLmUwNjIwMjgzZGZjNiAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2hwL3NpbS9zaW1l dGguYworKysgYi9hcmNoL2lhNjQvaHAvc2ltL3NpbWV0aC5jCkBAIC0yNDYsNyArMjQ2LDcgQEAg c2ltZXRoX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIH0KIAogLyogY29waWVkIGZyb20g bGFwYmV0aGVyLmMgKi8KLXN0YXRpYyBfX2lubGluZV9fIGludCBkZXZfaXNfZXRoZGV2KHN0cnVj dCBuZXRfZGV2aWNlICpkZXYpCitzdGF0aWMgaW5saW5lIGludCBkZXZfaXNfZXRoZGV2KHN0cnVj dCBuZXRfZGV2aWNlICpkZXYpCiB7CiAgICAgICAgcmV0dXJuICggZGV2LT50eXBlID09IEFSUEhS RF9FVEhFUiAmJiBzdHJuY21wKGRldi0+bmFtZSwgImR1bW15IiwgNSkpOwogfQpkaWZmIC0tZ2l0 IGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL2F0b21pYy5oIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNt L2F0b21pYy5oCmluZGV4IDIwNjUzMGQwNzUxYi4uOTQwOGZhOTZlMmRkIDEwMDY0NAotLS0gYS9h cmNoL2lhNjQvaW5jbHVkZS9hc20vYXRvbWljLmgKKysrIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNt L2F0b21pYy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjZGVmaW5lIGF0b21pYzY0X3NldCh2LGkpCVdS SVRFX09OQ0UoKCh2KS0+Y291bnRlciksIChpKSkKIAogI2RlZmluZSBBVE9NSUNfT1Aob3AsIGNf b3ApCQkJCQkJXAotc3RhdGljIF9faW5saW5lX18gaW50CQkJCQkJCVwKK3N0YXRpYyBpbmxpbmUg aW50CQkJCQkJCVwKIGlhNjRfYXRvbWljXyMjb3AgKGludCBpLCBhdG9taWNfdCAqdikJCQkJCVwK IHsJCQkJCQkJCQlcCiAJX19zMzIgb2xkLCBuZXc7CQkJCQkJCVwKQEAgLTQ0LDcgKzQ0LDcgQEAg aWE2NF9hdG9taWNfIyNvcCAoaW50IGksIGF0b21pY190ICp2KQkJCQkJXAogfQogCiAjZGVmaW5l IEFUT01JQ19GRVRDSF9PUChvcCwgY19vcCkJCQkJCVwKLXN0YXRpYyBfX2lubGluZV9fIGludAkJ CQkJCQlcCitzdGF0aWMgaW5saW5lIGludAkJCQkJCQlcCiBpYTY0X2F0b21pY19mZXRjaF8jI29w IChpbnQgaSwgYXRvbWljX3QgKnYpCQkJCVwKIHsJCQkJCQkJCQlcCiAJX19zMzIgb2xkLCBuZXc7 CQkJCQkJCVwKQEAgLTEyNCw3ICsxMjQsNyBAQCBBVE9NSUNfRkVUQ0hfT1AoeG9yLCBeKQogI3Vu ZGVmIEFUT01JQ19PUAogCiAjZGVmaW5lIEFUT01JQzY0X09QKG9wLCBjX29wKQkJCQkJCVwKLXN0 YXRpYyBfX2lubGluZV9fIGxvbmcJCQkJCQkJXAorc3RhdGljIGlubGluZSBsb25nCQkJCQkJCVwK IGlhNjRfYXRvbWljNjRfIyNvcCAoX19zNjQgaSwgYXRvbWljNjRfdCAqdikJCQkJXAogewkJCQkJ CQkJCVwKIAlfX3M2NCBvbGQsIG5ldzsJCQkJCQkJXApAQCAtMTM5LDcgKzEzOSw3IEBAIGlhNjRf YXRvbWljNjRfIyNvcCAoX19zNjQgaSwgYXRvbWljNjRfdCAqdikJCQkJXAogfQogCiAjZGVmaW5l IEFUT01JQzY0X0ZFVENIX09QKG9wLCBjX29wKQkJCQkJXAotc3RhdGljIF9faW5saW5lX18gbG9u ZwkJCQkJCQlcCitzdGF0aWMgaW5saW5lIGxvbmcJCQkJCQkJXAogaWE2NF9hdG9taWM2NF9mZXRj aF8jI29wIChfX3M2NCBpLCBhdG9taWM2NF90ICp2KQkJCVwKIHsJCQkJCQkJCQlcCiAJX19zNjQg b2xkLCBuZXc7CQkJCQkJCVwKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9iaXRv cHMuaCBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9iaXRvcHMuaAppbmRleCA1NmE3NzRiZjEzZmEu LmQzMjQ5ZDA4MWFiNiAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL2JpdG9wcy5o CisrKyBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9iaXRvcHMuaApAQCAtMzYsNyArMzYsNyBAQAog ICoKICAqIGJpdCAwIGlzIHRoZSBMU0Igb2YgYWRkcjsgYml0IDMyIGlzIHRoZSBMU0Igb2YgKGFk ZHIrMSkuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQKK3N0YXRpYyBpbmxpbmUgdm9pZAog c2V0X2JpdCAoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQogewogCV9fdTMyIGJpdCwgb2xk LCBuZXc7CkBAIC02MSw3ICs2MSw3IEBAIHNldF9iaXQgKGludCBuciwgdm9sYXRpbGUgdm9pZCAq YWRkcikKICAqIElmIGl0J3MgY2FsbGVkIG9uIHRoZSBzYW1lIHJlZ2lvbiBvZiBtZW1vcnkgc2lt dWx0YW5lb3VzbHksIHRoZSBlZmZlY3QKICAqIG1heSBiZSB0aGF0IG9ubHkgb25lIG9wZXJhdGlv biBzdWNjZWVkcy4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZAorc3RhdGljIGlubGluZSB2 b2lkCiBfX3NldF9iaXQgKGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKIHsKIAkqKChfX3Uz MiAqKSBhZGRyICsgKG5yID4+IDUpKSB8PSAoMSA8PCAobnIgJiAzMSkpOwpAQCAtNzcsNyArNzcs NyBAQCBfX3NldF9iaXQgKGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKICAqIHlvdSBzaG91 bGQgY2FsbCBzbXBfbWJfX2JlZm9yZV9hdG9taWMoKSBhbmQvb3Igc21wX21iX19hZnRlcl9hdG9t aWMoKQogICogaW4gb3JkZXIgdG8gZW5zdXJlIGNoYW5nZXMgYXJlIHZpc2libGUgb24gb3RoZXIg cHJvY2Vzc29ycy4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZAorc3RhdGljIGlubGluZSB2 b2lkCiBjbGVhcl9iaXQgKGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKIHsKIAlfX3UzMiBt YXNrLCBvbGQsIG5ldzsKQEAgLTEwMSw3ICsxMDEsNyBAQCBjbGVhcl9iaXQgKGludCBuciwgdm9s YXRpbGUgdm9pZCAqYWRkcikKICAqIGNsZWFyX2JpdF91bmxvY2soKSBpcyBhdG9taWMgYW5kIG1h eSBub3QgYmUgcmVvcmRlcmVkLiAgSXQgZG9lcwogICogY29udGFpbiBhIG1lbW9yeSBiYXJyaWVy IHN1aXRhYmxlIGZvciB1bmxvY2sgdHlwZSBvcGVyYXRpb25zLgogICovCi1zdGF0aWMgX19pbmxp bmVfXyB2b2lkCitzdGF0aWMgaW5saW5lIHZvaWQKIGNsZWFyX2JpdF91bmxvY2sgKGludCBuciwg dm9sYXRpbGUgdm9pZCAqYWRkcikKIHsKIAlfX3UzMiBtYXNrLCBvbGQsIG5ldzsKQEAgLTEyNSw3 ICsxMjUsNyBAQCBjbGVhcl9iaXRfdW5sb2NrIChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIp CiAgKiBTaW1pbGFybHkgdG8gY2xlYXJfYml0X3VubG9jaywgdGhlIGltcGxlbWVudGF0aW9uIHVz ZXMgYSBzdG9yZQogICogd2l0aCByZWxlYXNlIHNlbWFudGljcy4gU2VlIGFsc28gYXJjaF9zcGlu X3VubG9jaygpLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkCitzdGF0aWMgaW5saW5lIHZv aWQKIF9fY2xlYXJfYml0X3VubG9jayhpbnQgbnIsIHZvaWQgKmFkZHIpCiB7CiAJX191MzIgKiBj b25zdCBtID0gKF9fdTMyICopIGFkZHIgKyAobnIgPj4gNSk7CkBAIC0xNDMsNyArMTQzLDcgQEAg X19jbGVhcl9iaXRfdW5sb2NrKGludCBuciwgdm9pZCAqYWRkcikKICAqIElmIGl0J3MgY2FsbGVk IG9uIHRoZSBzYW1lIHJlZ2lvbiBvZiBtZW1vcnkgc2ltdWx0YW5lb3VzbHksIHRoZSBlZmZlY3QK ICAqIG1heSBiZSB0aGF0IG9ubHkgb25lIG9wZXJhdGlvbiBzdWNjZWVkcy4KICAqLwotc3RhdGlj IF9faW5saW5lX18gdm9pZAorc3RhdGljIGlubGluZSB2b2lkCiBfX2NsZWFyX2JpdCAoaW50IG5y LCB2b2xhdGlsZSB2b2lkICphZGRyKQogewogCSooKF9fdTMyICopIGFkZHIgKyAobnIgPj4gNSkp ICY9IH4oMSA8PCAobnIgJiAzMSkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIF9fY2xlYXJfYml0IChp bnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCiAgKiBOb3RlIHRoYXQgQG5yIG1heSBiZSBhbG1v c3QgYXJiaXRyYXJpbHkgbGFyZ2U7IHRoaXMgZnVuY3Rpb24gaXMgbm90CiAgKiByZXN0cmljdGVk IHRvIGFjdGluZyBvbiBhIHNpbmdsZS13b3JkIHF1YW50aXR5LgogICovCi1zdGF0aWMgX19pbmxp bmVfXyB2b2lkCitzdGF0aWMgaW5saW5lIHZvaWQKIGNoYW5nZV9iaXQgKGludCBuciwgdm9sYXRp bGUgdm9pZCAqYWRkcikKIHsKIAlfX3UzMiBiaXQsIG9sZCwgbmV3OwpAQCAtMTgzLDcgKzE4Myw3 IEBAIGNoYW5nZV9iaXQgKGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKICAqIElmIGl0J3Mg Y2FsbGVkIG9uIHRoZSBzYW1lIHJlZ2lvbiBvZiBtZW1vcnkgc2ltdWx0YW5lb3VzbHksIHRoZSBl ZmZlY3QKICAqIG1heSBiZSB0aGF0IG9ubHkgb25lIG9wZXJhdGlvbiBzdWNjZWVkcy4KICAqLwot c3RhdGljIF9faW5saW5lX18gdm9pZAorc3RhdGljIGlubGluZSB2b2lkCiBfX2NoYW5nZV9iaXQg KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKIHsKIAkqKChfX3UzMiAqKSBhZGRyICsgKG5y ID4+IDUpKSBePSAoMSA8PCAobnIgJiAzMSkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIF9fY2hhbmdl X2JpdCAoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQogICogVGhpcyBvcGVyYXRpb24gaXMg YXRvbWljIGFuZCBjYW5ub3QgYmUgcmVvcmRlcmVkLiAgCiAgKiBJdCBhbHNvIGltcGxpZXMgdGhl IGFjcXVpc2l0aW9uIHNpZGUgb2YgdGhlIG1lbW9yeSBiYXJyaWVyLgogICovCi1zdGF0aWMgX19p bmxpbmVfXyBpbnQKK3N0YXRpYyBpbmxpbmUgaW50CiB0ZXN0X2FuZF9zZXRfYml0IChpbnQgbnIs IHZvbGF0aWxlIHZvaWQgKmFkZHIpCiB7CiAJX191MzIgYml0LCBvbGQsIG5ldzsKQEAgLTIzMiw3 ICsyMzIsNyBAQCB0ZXN0X2FuZF9zZXRfYml0IChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIp CiAgKiBJZiB0d28gZXhhbXBsZXMgb2YgdGhpcyBvcGVyYXRpb24gcmFjZSwgb25lIGNhbiBhcHBl YXIgdG8gc3VjY2VlZAogICogYnV0IGFjdHVhbGx5IGZhaWwuICBZb3UgbXVzdCBwcm90ZWN0IG11 bHRpcGxlIGFjY2Vzc2VzIHdpdGggYSBsb2NrLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQK K3N0YXRpYyBpbmxpbmUgaW50CiBfX3Rlc3RfYW5kX3NldF9iaXQgKGludCBuciwgdm9sYXRpbGUg dm9pZCAqYWRkcikKIHsKIAlfX3UzMiAqcCA9IChfX3UzMiAqKSBhZGRyICsgKG5yID4+IDUpOwpA QCAtMjUxLDcgKzI1MSw3IEBAIF9fdGVzdF9hbmRfc2V0X2JpdCAoaW50IG5yLCB2b2xhdGlsZSB2 b2lkICphZGRyKQogICogVGhpcyBvcGVyYXRpb24gaXMgYXRvbWljIGFuZCBjYW5ub3QgYmUgcmVv cmRlcmVkLiAgCiAgKiBJdCBhbHNvIGltcGxpZXMgdGhlIGFjcXVpc2l0aW9uIHNpZGUgb2YgdGhl IG1lbW9yeSBiYXJyaWVyLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQKK3N0YXRpYyBpbmxp bmUgaW50CiB0ZXN0X2FuZF9jbGVhcl9iaXQgKGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikK IHsKIAlfX3UzMiBtYXNrLCBvbGQsIG5ldzsKQEAgLTI3Nyw3ICsyNzcsNyBAQCB0ZXN0X2FuZF9j bGVhcl9iaXQgKGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKICAqIElmIHR3byBleGFtcGxl cyBvZiB0aGlzIG9wZXJhdGlvbiByYWNlLCBvbmUgY2FuIGFwcGVhciB0byBzdWNjZWVkCiAgKiBi dXQgYWN0dWFsbHkgZmFpbC4gIFlvdSBtdXN0IHByb3RlY3QgbXVsdGlwbGUgYWNjZXNzZXMgd2l0 aCBhIGxvY2suCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIGludAorc3RhdGljIGlubGluZSBpbnQK IF9fdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCiB7CiAJ X191MzIgKnAgPSAoX191MzIgKikgYWRkciArIChuciA+PiA1KTsKQEAgLTI5Niw3ICsyOTYsNyBA QCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQogICog VGhpcyBvcGVyYXRpb24gaXMgYXRvbWljIGFuZCBjYW5ub3QgYmUgcmVvcmRlcmVkLiAgCiAgKiBJ dCBhbHNvIGltcGxpZXMgdGhlIGFjcXVpc2l0aW9uIHNpZGUgb2YgdGhlIG1lbW9yeSBiYXJyaWVy LgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQKK3N0YXRpYyBpbmxpbmUgaW50CiB0ZXN0X2Fu ZF9jaGFuZ2VfYml0IChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCiB7CiAJX191MzIgYml0 LCBvbGQsIG5ldzsKQEAgLTMyMCw3ICszMjAsNyBAQCB0ZXN0X2FuZF9jaGFuZ2VfYml0IChpbnQg bnIsIHZvbGF0aWxlIHZvaWQgKmFkZHIpCiAgKgogICogVGhpcyBvcGVyYXRpb24gaXMgbm9uLWF0 b21pYyBhbmQgY2FuIGJlIHJlb3JkZXJlZC4KICAqLwotc3RhdGljIF9faW5saW5lX18gaW50Citz dGF0aWMgaW5saW5lIGludAogX190ZXN0X2FuZF9jaGFuZ2VfYml0IChpbnQgbnIsIHZvaWQgKmFk ZHIpCiB7CiAJX191MzIgb2xkLCBiaXQgPSAoMSA8PCAobnIgJiAzMSkpOwpAQCAtMzMxLDcgKzMz MSw3IEBAIF9fdGVzdF9hbmRfY2hhbmdlX2JpdCAoaW50IG5yLCB2b2lkICphZGRyKQogCXJldHVy biAob2xkICYgYml0KSAhPSAwOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQKK3N0YXRpYyBp bmxpbmUgaW50CiB0ZXN0X2JpdCAoaW50IG5yLCBjb25zdCB2b2xhdGlsZSB2b2lkICphZGRyKQog ewogCXJldHVybiAxICYgKCgoY29uc3Qgdm9sYXRpbGUgX191MzIgKikgYWRkcilbbnIgPj4gNV0g Pj4gKG5yICYgMzEpKTsKQEAgLTM1OSw3ICszNTksNyBAQCBmZnogKHVuc2lnbmVkIGxvbmcgeCkK ICAqCiAgKiBVbmRlZmluZWQgaWYgbm8gYml0IGV4aXN0cywgc28gY29kZSBzaG91bGQgY2hlY2sg YWdhaW5zdCAwIGZpcnN0LgogICovCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCitz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIF9fZmZzICh1bnNpZ25lZCBsb25nIHgpCiB7CiAJ dW5zaWduZWQgbG9uZyByZXN1bHQ7CkBAIC00MjcsNyArNDI3LDcgQEAgX19mbHMgKHVuc2lnbmVk IGxvbmcgeCkKICAqIGh3ZWlnaHROOiByZXR1cm5zIHRoZSBoYW1taW5nIHdlaWdodCAoaS5lLiB0 aGUgbnVtYmVyCiAgKiBvZiBiaXRzIHNldCkgb2YgYSBOLWJpdCB3b3JkCiAgKi8KLXN0YXRpYyBf X2lubGluZV9fIHVuc2lnbmVkIGxvbmcgX19hcmNoX2h3ZWlnaHQ2NCh1bnNpZ25lZCBsb25nIHgp CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19hcmNoX2h3ZWlnaHQ2NCh1bnNpZ25lZCBs b25nIHgpCiB7CiAJdW5zaWduZWQgbG9uZyByZXN1bHQ7CiAJcmVzdWx0ID0gaWE2NF9wb3BjbnQo eCk7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vZGVsYXkuaCBiL2FyY2gvaWE2 NC9pbmNsdWRlL2FzbS9kZWxheS5oCmluZGV4IDAyMjdhYzU4NjEwNy4uOWY3ZTYwNDk2ZmViIDEw MDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vZGVsYXkuaAorKysgYi9hcmNoL2lhNjQv aW5jbHVkZS9hc20vZGVsYXkuaApAQCAtMjAsMTQgKzIwLDE0IEBACiAjaW5jbHVkZSA8YXNtL2lu dHJpbnNpY3MuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAKLXN0YXRpYyBfX2lubGlu ZV9fIHZvaWQKK3N0YXRpYyBpbmxpbmUgdm9pZAogaWE2NF9zZXRfaXRtICh1bnNpZ25lZCBsb25n IHZhbCkKIHsKIAlpYTY0X3NldHJlZyhfSUE2NF9SRUdfQ1JfSVRNLCB2YWwpOwogCWlhNjRfc3Js el9kKCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcKK3N0YXRpYyBpbmxp bmUgdW5zaWduZWQgbG9uZwogaWE2NF9nZXRfaXRtICh2b2lkKQogewogCXVuc2lnbmVkIGxvbmcg cmVzdWx0OwpAQCAtMzcsMjcgKzM3LDI3IEBAIGlhNjRfZ2V0X2l0bSAodm9pZCkKIAlyZXR1cm4g cmVzdWx0OwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkCitzdGF0aWMgaW5saW5lIHZvaWQK IGlhNjRfc2V0X2l0diAodW5zaWduZWQgbG9uZyB2YWwpCiB7CiAJaWE2NF9zZXRyZWcoX0lBNjRf UkVHX0NSX0lUViwgdmFsKTsKIAlpYTY0X3NybHpfZCgpOwogfQogCi1zdGF0aWMgX19pbmxpbmVf XyB1bnNpZ25lZCBsb25nCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIGlhNjRfZ2V0X2l0 diAodm9pZCkKIHsKIAlyZXR1cm4gaWE2NF9nZXRyZWcoX0lBNjRfUkVHX0NSX0lUVik7CiB9CiAK LXN0YXRpYyBfX2lubGluZV9fIHZvaWQKK3N0YXRpYyBpbmxpbmUgdm9pZAogaWE2NF9zZXRfaXRj ICh1bnNpZ25lZCBsb25nIHZhbCkKIHsKIAlpYTY0X3NldHJlZyhfSUE2NF9SRUdfQVJfSVRDLCB2 YWwpOwogCWlhNjRfc3Jsel9kKCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxv bmcKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwogaWE2NF9nZXRfaXRjICh2b2lkKQogewog CXVuc2lnbmVkIGxvbmcgcmVzdWx0OwpAQCAtNzUsNyArNzUsNyBAQCBpYTY0X2dldF9pdGMgKHZv aWQpCiAKIGV4dGVybiB2b2lkIGlhNjRfZGVsYXlfbG9vcCAodW5zaWduZWQgbG9uZyBsb29wcyk7 CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQKK3N0YXRpYyBpbmxpbmUgdm9pZAogX19kZWxheSAo dW5zaWduZWQgbG9uZyBsb29wcykKIHsKIAlpZiAodW5saWtlbHkobG9vcHMgPCAxKSkKZGlmZiAt LWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9pcnEuaCBiL2FyY2gvaWE2NC9pbmNsdWRlL2Fz bS9pcnEuaAppbmRleCA4Yjg0YTU1ZWQzOGEuLmVhYjhkZWZhMzBkZSAxMDA2NDQKLS0tIGEvYXJj aC9pYTY0L2luY2x1ZGUvYXNtL2lycS5oCisrKyBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9pcnEu aApAQCAtMTYsNyArMTYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2NwdW1hc2suaD4KICNpbmNsdWRl IDxnZW5lcmF0ZWQvbnItaXJxcy5oPgogCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQKK3N0YXRpYyBp bmxpbmUgaW50CiBpcnFfY2Fub25pY2FsaXplIChpbnQgaXJxKQogewogCS8qCmRpZmYgLS1naXQg YS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGFnZS5oIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3Bh Z2UuaAppbmRleCA1Nzk4YmQyYjQ2MmMuLjg1ODMxN2JlMTBjYiAxMDA2NDQKLS0tIGEvYXJjaC9p YTY0L2luY2x1ZGUvYXNtL3BhZ2UuaAorKysgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGFnZS5o CkBAIC0xNTQsNyArMTU0LDcgQEAgdHlwZWRlZiB1bmlvbiBpYTY0X3ZhIHsKIGV4dGVybiB1bnNp Z25lZCBpbnQgaHBhZ2Vfc2hpZnQ7CiAjZW5kaWYKIAotc3RhdGljIF9faW5saW5lX18gaW50Citz dGF0aWMgaW5saW5lIGludAogZ2V0X29yZGVyICh1bnNpZ25lZCBsb25nIHNpemUpCiB7CiAJbG9u ZyBkb3VibGUgZCA9IHNpemUgLSAxOwpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNt L3NuL2xlZHMuaCBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9zbi9sZWRzLmgKaW5kZXggNjZjZjhj NGQ5MmM5Li40OGFhYmU5NTUyM2YgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9z bi9sZWRzLmgKKysrIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL2xlZHMuaApAQCAtMjIsNyAr MjIsNyBAQAogICogQmFzaWMgbWFjcm9zIGZvciBmbGFzaGluZyB0aGUgTEVEUyBvbiBhbiBTR0kg U04uCiAgKi8KIAotc3RhdGljIF9faW5saW5lX18gdm9pZAorc3RhdGljIGlubGluZSB2b2lkCiBz ZXRfbGVkX2JpdHModTggdmFsdWUsIHU4IG1hc2spCiB7CiAJcGRhLT5sZWRfc3RhdGUgPSAocGRh LT5sZWRfc3RhdGUgJiB+bWFzaykgfCAodmFsdWUgJiBtYXNrKTsKZGlmZiAtLWdpdCBhL2FyY2gv aWE2NC9pbmNsdWRlL2FzbS91YWNjZXNzLmggYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vdWFjY2Vz cy5oCmluZGV4IGE3NDUyNGYyZDYyNS4uMzg2YmZlMTU1MGMwIDEwMDY0NAotLS0gYS9hcmNoL2lh NjQvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCisrKyBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS91YWNj ZXNzLmgKQEAgLTI1OSw3ICsyNTksNyBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBfX3N0cm5sZW5f dXNlciAoY29uc3QgY2hhciBfX3VzZXIgKiwgbG9uZyk7CiB9KQogCiAjZGVmaW5lIEFSQ0hfSEFT X1RSQU5TTEFURV9NRU1fUFRSCTEKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgKgorc3RhdGljIGlu bGluZSB2b2lkICoKIHhsYXRlX2Rldl9tZW1fcHRyKHBoeXNfYWRkcl90IHApCiB7CiAJc3RydWN0 IHBhZ2UgKnBhZ2U7CkBAIC0yNzcsNyArMjc3LDcgQEAgeGxhdGVfZGV2X21lbV9wdHIocGh5c19h ZGRyX3QgcCkKIC8qCiAgKiBDb252ZXJ0IGEgdmlydHVhbCBjYWNoZWQga2VybmVsIG1lbW9yeSBw b2ludGVyIHRvIGFuIHVuY2FjaGVkIHBvaW50ZXIKICAqLwotc3RhdGljIF9faW5saW5lX18gdm9p ZCAqCitzdGF0aWMgaW5saW5lIHZvaWQgKgogeGxhdGVfZGV2X2ttZW1fcHRyKHZvaWQgKnApCiB7 CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS91YXBp L2FzbS9yc2UuaCBiL2FyY2gvaWE2NC9pbmNsdWRlL3VhcGkvYXNtL3JzZS5oCmluZGV4IDZkMjYw YWY1NzFjNS4uNTVlNjZjYWUxMGUxIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS91YXBp L2FzbS9yc2UuaAorKysgYi9hcmNoL2lhNjQvaW5jbHVkZS91YXBpL2FzbS9yc2UuaApAQCAtOCwx MSArOCwxMSBAQAogICoKICAqIFJlZ2lzdGVyIHN0YWNrIGVuZ2luZSByZWxhdGVkIGhlbHBlciBm dW5jdGlvbnMuICBUaGlzIGZpbGUgbWF5IGJlCiAgKiB1c2VkIGluIGFwcGxpY2F0aW9ucywgc28g YmUgY2FyZWZ1bCBhYm91dCB0aGUgbmFtZS1zcGFjZSBhbmQgZ2l2ZQotICogc29tZSBjb25zaWRl cmF0aW9uIHRvIG5vbi1HTlUgQyBjb21waWxlcnMgKHRob3VnaCBfX2lubGluZV9fIGlzCisgKiBz b21lIGNvbnNpZGVyYXRpb24gdG8gbm9uLUdOVSBDIGNvbXBpbGVycyAodGhvdWdoIGlubGluZSBp cwogICogZmluZSkuCiAgKi8KIAotc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZworc3Rh dGljIGlubGluZSB1bnNpZ25lZCBsb25nCiBpYTY0X3JzZV9zbG90X251bSAodW5zaWduZWQgbG9u ZyAqYWRkcikKIHsKIAlyZXR1cm4gKCgodW5zaWduZWQgbG9uZykgYWRkcikgPj4gMykgJiAweDNm OwpAQCAtMjEsNyArMjEsNyBAQCBpYTY0X3JzZV9zbG90X251bSAodW5zaWduZWQgbG9uZyAqYWRk cikKIC8qCiAgKiBSZXR1cm4gVFJVRSBpZiBBRERSIGlzIHRoZSBhZGRyZXNzIG9mIGFuIFJOQVQg c2xvdC4KICAqLwotc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZworc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBsb25nCiBpYTY0X3JzZV9pc19ybmF0X3Nsb3QgKHVuc2lnbmVkIGxvbmcgKmFk ZHIpCiB7CiAJcmV0dXJuIGlhNjRfcnNlX3Nsb3RfbnVtKGFkZHIpID09IDB4M2Y7CkBAIC0zMSw3 ICszMSw3IEBAIGlhNjRfcnNlX2lzX3JuYXRfc2xvdCAodW5zaWduZWQgbG9uZyAqYWRkcikKICAq IFJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIFJOQVQgc2xvdCB0aGF0IGNvdmVycyB0aGUgc2xv dCBhdAogICogYWRkcmVzcyBTTE9UX0FERFIuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIHVuc2ln bmVkIGxvbmcgKgorc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nICoKIGlhNjRfcnNlX3JuYXRf YWRkciAodW5zaWduZWQgbG9uZyAqc2xvdF9hZGRyKQogewogCXJldHVybiAodW5zaWduZWQgbG9u ZyAqKSAoKHVuc2lnbmVkIGxvbmcpIHNsb3RfYWRkciB8ICgweDNmIDw8IDMpKTsKQEAgLTQyLDcg KzQyLDcgQEAgaWE2NF9yc2Vfcm5hdF9hZGRyICh1bnNpZ25lZCBsb25nICpzbG90X2FkZHIpCiAg KiBlbmRpbmcgYXQgQlNQLiAgVGhpcyBpc24ndCBzaW1wbHkgKEJTUC1CU1BTVE9SRSkvOCBiZWNh dXNlIGV2ZXJ5IDY0dGggc2xvdCBzdG9yZXMKICAqIGFyLnJuYXQuCiAgKi8KLXN0YXRpYyBfX2lu bGluZV9fIHVuc2lnbmVkIGxvbmcKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwogaWE2NF9y c2VfbnVtX3JlZ3MgKHVuc2lnbmVkIGxvbmcgKmJzcHN0b3JlLCB1bnNpZ25lZCBsb25nICpic3Ap CiB7CiAJdW5zaWduZWQgbG9uZyBzbG90cyA9IChic3AgLSBic3BzdG9yZSk7CkBAIC01NCw3ICs1 NCw3IEBAIGlhNjRfcnNlX251bV9yZWdzICh1bnNpZ25lZCBsb25nICpic3BzdG9yZSwgdW5zaWdu ZWQgbG9uZyAqYnNwKQogICogVGhlIGludmVyc2Ugb2YgdGhlIGFib3ZlOiBnaXZlbiBic3BzdG9y ZSBhbmQgdGhlIG51bWJlciBvZgogICogcmVnaXN0ZXJzLCBjYWxjdWxhdGUgYXIuYnNwLgogICov Ci1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nICoKK3N0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgbG9uZyAqCiBpYTY0X3JzZV9za2lwX3JlZ3MgKHVuc2lnbmVkIGxvbmcgKmFkZHIsIGxvbmcg bnVtX3JlZ3MpCiB7CiAJbG9uZyBkZWx0YSA9IGlhNjRfcnNlX3Nsb3RfbnVtKGFkZHIpICsgbnVt X3JlZ3M7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS91YXBpL2FzbS9zd2FiLmggYi9h cmNoL2lhNjQvaW5jbHVkZS91YXBpL2FzbS9zd2FiLmgKaW5kZXggNzlmM2ZlZjFhMDVlLi41YjVk ZjdhMDVmN2UgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9pbmNsdWRlL3VhcGkvYXNtL3N3YWIuaAor KysgYi9hcmNoL2lhNjQvaW5jbHVkZS91YXBpL2FzbS9zd2FiLmgKQEAgLTExLDcgKzExLDcgQEAK ICNpbmNsdWRlIDxhc20vaW50cmluc2ljcy5oPgogI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+ CiAKLXN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX2NvbnN0X18gX191NjQgX19hcmNoX3N3 YWI2NChfX3U2NCB4KQorc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9jb25zdF9fIF9fdTY0IF9f YXJjaF9zd2FiNjQoX191NjQgeCkKIHsKIAlfX3U2NCByZXN1bHQ7CiAKQEAgLTIwLDEzICsyMCwx MyBAQCBzdGF0aWMgX19pbmxpbmVfXyBfX2F0dHJpYnV0ZV9jb25zdF9fIF9fdTY0IF9fYXJjaF9z d2FiNjQoX191NjQgeCkKIH0KICNkZWZpbmUgX19hcmNoX3N3YWI2NCBfX2FyY2hfc3dhYjY0CiAK LXN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX2NvbnN0X18gX191MzIgX19hcmNoX3N3YWIz MihfX3UzMiB4KQorc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9jb25zdF9fIF9fdTMyIF9fYXJj aF9zd2FiMzIoX191MzIgeCkKIHsKIAlyZXR1cm4gX19hcmNoX3N3YWI2NCh4KSA+PiAzMjsKIH0K ICNkZWZpbmUgX19hcmNoX3N3YWIzMiBfX2FyY2hfc3dhYjMyCiAKLXN0YXRpYyBfX2lubGluZV9f IF9fYXR0cmlidXRlX2NvbnN0X18gX191MTYgX19hcmNoX3N3YWIxNihfX3UxNiB4KQorc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9jb25zdF9fIF9fdTE2IF9fYXJjaF9zd2FiMTYoX191MTYgeCkK IHsKIAlyZXR1cm4gX19hcmNoX3N3YWI2NCh4KSA+PiA0ODsKIH0KZGlmZiAtLWdpdCBhL2FyY2gv aWE2NC9vcHJvZmlsZS9iYWNrdHJhY2UuYyBiL2FyY2gvaWE2NC9vcHJvZmlsZS9iYWNrdHJhY2Uu YwppbmRleCA2YTIxOWE5NDYwNTAuLmM5YzgyODJmN2E3MyAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0 L29wcm9maWxlL2JhY2t0cmFjZS5jCisrKyBiL2FyY2gvaWE2NC9vcHJvZmlsZS9iYWNrdHJhY2Uu YwpAQCAtMzIsNyArMzIsNyBAQCB0eXBlZGVmIHN0cnVjdAogfSBpYTY0X2JhY2t0cmFjZV90Owog CiAvKiBSZXR1cm5zIG5vbi16ZXJvIGlmIHRoZSBQQyBpcyBpbiB0aGUgSW50ZXJydXB0IFZlY3Rv ciBUYWJsZSAqLwotc3RhdGljIF9faW5saW5lX18gaW50IGluX2l2dF9jb2RlKHVuc2lnbmVkIGxv bmcgcGMpCitzdGF0aWMgaW5saW5lIGludCBpbl9pdnRfY29kZSh1bnNpZ25lZCBsb25nIHBjKQog ewogCWV4dGVybiBjaGFyIGlhNjRfaXZ0W107CiAJcmV0dXJuIChwYyA+PSAodV9sb25nKWlhNjRf aXZ0ICYmIHBjIDwgKHVfbG9uZylpYTY0X2l2dCszMjc2OCk7CkBAIC00MSw3ICs0MSw3IEBAIHN0 YXRpYyBfX2lubGluZV9fIGludCBpbl9pdnRfY29kZSh1bnNpZ25lZCBsb25nIHBjKQogLyoKICAq IFVud2luZCB0byBuZXh0IHN0YWNrIGZyYW1lLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQg bmV4dF9mcmFtZShpYTY0X2JhY2t0cmFjZV90ICpidCkKK3N0YXRpYyBpbmxpbmUgaW50IG5leHRf ZnJhbWUoaWE2NF9iYWNrdHJhY2VfdCAqYnQpCiB7CiAJLyoKIAkgKiBBdm9pZCB1bnNpZ2h0bHkg Y29uc29sZSBtZXNzYWdlIGZyb20gdW53X3Vud2luZCgpIHdoZW4gYXR0ZW1wdGluZwpkaWZmIC0t Z2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2JsaW5rZW4uaCBiL2FyY2gvbTY4ay9pbmNsdWRl L2FzbS9ibGlua2VuLmgKaW5kZXggMDYyNjU4MmE3ZGI0Li4yZTVlNzRkNzRmODIgMTAwNjQ0Ci0t LSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9ibGlua2VuLmgKKysrIGIvYXJjaC9tNjhrL2luY2x1 ZGUvYXNtL2JsaW5rZW4uaApAQCAtMTksNyArMTksNyBAQAogCiBleHRlcm4gdW5zaWduZWQgY2hh ciBocDMwMF9sZWRzdGF0ZTsKIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBibGlua2VuX2xlZHMo aW50IG9uLCBpbnQgb2ZmKQorc3RhdGljIGlubGluZSB2b2lkIGJsaW5rZW5fbGVkcyhpbnQgb24s IGludCBvZmYpCiB7CiAJaWYgKE1BQ0hfSVNfSFAzMDApCiAJewpkaWZmIC0tZ2l0IGEvYXJjaC9t NjhrL2luY2x1ZGUvYXNtL2NoZWNrc3VtLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vY2hlY2tz dW0uaAppbmRleCBmOWI5NGU0Yjk0ZjkuLjM3MjQzMDdiZTRhMSAxMDA2NDQKLS0tIGEvYXJjaC9t NjhrL2luY2x1ZGUvYXNtL2NoZWNrc3VtLmgKKysrIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2No ZWNrc3VtLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW5saW5lIF9fc3VtMTYgaXBfY29t cHV0ZV9jc3VtKGNvbnN0IHZvaWQgKmJ1ZmYsIGludCBsZW4pCiB9CiAKICNkZWZpbmUgX0hBVkVf QVJDSF9JUFY2X0NTVU0KLXN0YXRpYyBfX2lubGluZV9fIF9fc3VtMTYKK3N0YXRpYyBpbmxpbmUg X19zdW0xNgogY3N1bV9pcHY2X21hZ2ljKGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsIGNv bnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsCiAJCV9fdTMyIGxlbiwgX191OCBwcm90bywgX193 c3VtIHN1bSkKIHsKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9kbWEuaCBiL2Fy Y2gvbTY4ay9pbmNsdWRlL2FzbS9kbWEuaAppbmRleCBhZTIwMjE5NjRlMzIuLmE0NTE3NzhmZTEx MiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2RtYS5oCisrKyBiL2FyY2gvbTY4 ay9pbmNsdWRlL2FzbS9kbWEuaApAQCAtMTIzLDcgKzEyMyw3IEBAIGV4dGVybiB1bnNpZ25lZCBp bnQgZG1hX2RldmljZV9hZGRyZXNzW01BWF9NNjhLX0RNQV9DSEFOTkVMU107CiAKICNpZiAhZGVm aW5lZChDT05GSUdfTTUyNzIpCiAvKiBlbmFibGUvZGlzYWJsZSBhIHNwZWNpZmljIERNQSBjaGFu bmVsICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGVuYWJsZV9kbWEodW5zaWduZWQgaW50IGRt YW5yKQorc3RhdGljIGlubGluZSB2b2lkIGVuYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQog ewogICB2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqZG1hd3A7CiAKQEAgLTEzNSw3ICsxMzUsNyBA QCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGVuYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQog ICBkbWF3cFtNQ0ZETUFfRENSXSB8PSBNQ0ZETUFfRENSX0VFWFQ7CiB9CiAKLXN0YXRpYyBfX2lu bGluZV9fIHZvaWQgZGlzYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQorc3RhdGljIGlubGlu ZSB2b2lkIGRpc2FibGVfZG1hKHVuc2lnbmVkIGludCBkbWFucikKIHsKICAgdm9sYXRpbGUgdW5z aWduZWQgc2hvcnQgKmRtYXdwOwogICB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICAqZG1hcGI7CkBA IC0xNjIsMTIgKzE2MiwxMiBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRpc2FibGVfZG1hKHVu c2lnbmVkIGludCBkbWFucikKICAqCiAgKiBUaGlzIGlzIGEgTk9QIGZvciBDb2xkRmlyZS4gUHJv dmlkZSBhIHN0dWIgZm9yIGNvbXBhdGliaWxpdHkuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZv aWQgY2xlYXJfZG1hX2ZmKHVuc2lnbmVkIGludCBkbWFucikKK3N0YXRpYyBpbmxpbmUgdm9pZCBj bGVhcl9kbWFfZmYodW5zaWduZWQgaW50IGRtYW5yKQogewogfQogCiAvKiBzZXQgbW9kZSAoYWJv dmUpIGZvciBhIHNwZWNpZmljIERNQSBjaGFubmVsICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lk IHNldF9kbWFfbW9kZSh1bnNpZ25lZCBpbnQgZG1hbnIsIGNoYXIgbW9kZSkKK3N0YXRpYyBpbmxp bmUgdm9pZCBzZXRfZG1hX21vZGUodW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIG1vZGUpCiB7CiAK ICAgdm9sYXRpbGUgdW5zaWduZWQgY2hhciAgKmRtYWJwOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHN0 YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9tb2RlKHVuc2lnbmVkIGludCBkbWFuciwgY2hh ciBtb2RlKQogfQogCiAvKiBTZXQgdHJhbnNmZXIgYWRkcmVzcyBmb3Igc3BlY2lmaWMgRE1BIGNo YW5uZWwgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9hZGRyKHVuc2lnbmVkIGlu dCBkbWFuciwgdW5zaWduZWQgaW50IGEpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RtYV9hZGRy KHVuc2lnbmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGEpCiB7CiAgIHZvbGF0aWxlIHVuc2ln bmVkIHNob3J0ICpkbWF3cDsKICAgdm9sYXRpbGUgdW5zaWduZWQgaW50ICAgKmRtYWxwOwpAQCAt MjQ3LDcgKzI0Nyw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9hZGRyKHVuc2ln bmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGEpCiAgKiBTcGVjaWZpYyBmb3IgQ29sZGZpcmUg LSBzZXRzIGRldmljZSBhZGRyZXNzLgogICogU2hvdWxkIGJlIGNhbGxlZCBhZnRlciB0aGUgbW9k ZSBzZXQgY2FsbCwgYW5kIGJlZm9yZSBzZXQgRE1BIGFkZHJlc3MuCiAgKi8KLXN0YXRpYyBfX2lu bGluZV9fIHZvaWQgc2V0X2RtYV9kZXZpY2VfYWRkcih1bnNpZ25lZCBpbnQgZG1hbnIsIHVuc2ln bmVkIGludCBhKQorc3RhdGljIGlubGluZSB2b2lkIHNldF9kbWFfZGV2aWNlX2FkZHIodW5zaWdu ZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBpbnQgYSkKIHsKICNpZmRlZiBETUFfREVCVUcKICAgcHJp bnRrKCJzZXRfZG1hX2RldmljZV9hZGRyKGRtYW5yPSVkLGE9JXgpXG4iLCBkbWFuciwgYSk7CkBA IC0yNTksNyArMjU5LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX2RldmljZV9h ZGRyKHVuc2lnbmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGEpCiAvKgogICogTk9URSAyOiAi Y291bnQiIHJlcHJlc2VudHMgX2J5dGVzXy4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBz ZXRfZG1hX2NvdW50KHVuc2lnbmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGNvdW50KQorc3Rh dGljIGlubGluZSB2b2lkIHNldF9kbWFfY291bnQodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25l ZCBpbnQgY291bnQpCiB7CiAgIHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICpkbWF3cDsKIApAQCAt Mjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9jb3VudCh1bnNp Z25lZCBpbnQgZG1hbnIsIHVuc2lnbmVkIGludCBjb3VudCkKICAqIHN0aWxsIGluIHByb2dyZXNz IHdpbGwgcmV0dXJuIHVucHJlZGljdGFibGUgcmVzdWx0cy4KICAqIE90aGVyd2lzZSwgaXQgcmV0 dXJucyB0aGUgbnVtYmVyIG9mIF9ieXRlc18gbGVmdCB0byB0cmFuc2Zlci4KICAqLwotc3RhdGlj IF9faW5saW5lX18gaW50IGdldF9kbWFfcmVzaWR1ZSh1bnNpZ25lZCBpbnQgZG1hbnIpCitzdGF0 aWMgaW5saW5lIGludCBnZXRfZG1hX3Jlc2lkdWUodW5zaWduZWQgaW50IGRtYW5yKQogewogICB2 b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqZG1hd3A7CiAgIHVuc2lnbmVkIHNob3J0IGNvdW50OwpA QCAtMzE2LDcgKzMxNiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfZG1hX3Jlc2lkdWUo dW5zaWduZWQgaW50IGRtYW5yKQogICovCiAKIC8qIGVuYWJsZS9kaXNhYmxlIGEgc3BlY2lmaWMg RE1BIGNoYW5uZWwgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgZW5hYmxlX2RtYSh1bnNpZ25l ZCBpbnQgZG1hbnIpCitzdGF0aWMgaW5saW5lIHZvaWQgZW5hYmxlX2RtYSh1bnNpZ25lZCBpbnQg ZG1hbnIpCiB7CiAgIHZvbGF0aWxlIHVuc2lnbmVkIGludCAgKmRtYWxwOwogCkBAIC0zMjgsNyAr MzI4LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBlbmFibGVfZG1hKHVuc2lnbmVkIGludCBk bWFucikKICAgZG1hbHBbTUNGRE1BX0RNUl0gfD0gTUNGRE1BX0RNUl9FTjsKIH0KIAotc3RhdGlj IF9faW5saW5lX18gdm9pZCBkaXNhYmxlX2RtYSh1bnNpZ25lZCBpbnQgZG1hbnIpCitzdGF0aWMg aW5saW5lIHZvaWQgZGlzYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQogewogICB2b2xhdGls ZSB1bnNpZ25lZCBpbnQgICAqZG1hbHA7CiAKQEAgLTM1MywxMiArMzUzLDEyIEBAIHN0YXRpYyBf X2lubGluZV9fIHZvaWQgZGlzYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5yKQogICoKICAqIFRo aXMgaXMgYSBOT1AgZm9yIENvbGRGaXJlLiBQcm92aWRlIGEgc3R1YiBmb3IgY29tcGF0aWJpbGl0 eS4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9kbWFfZmYodW5zaWduZWQgaW50 IGRtYW5yKQorc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2RtYV9mZih1bnNpZ25lZCBpbnQgZG1h bnIpCiB7CiB9CiAKIC8qIHNldCBtb2RlIChhYm92ZSkgZm9yIGEgc3BlY2lmaWMgRE1BIGNoYW5u ZWwgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9tb2RlKHVuc2lnbmVkIGludCBk bWFuciwgY2hhciBtb2RlKQorc3RhdGljIGlubGluZSB2b2lkIHNldF9kbWFfbW9kZSh1bnNpZ25l ZCBpbnQgZG1hbnIsIGNoYXIgbW9kZSkKIHsKIAogICB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgICAq ZG1hbHA7CkBAIC0zOTYsNyArMzk2LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1h X21vZGUodW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIG1vZGUpCiB9CiAKIC8qIFNldCB0cmFuc2Zl ciBhZGRyZXNzIGZvciBzcGVjaWZpYyBETUEgY2hhbm5lbCAqLwotc3RhdGljIF9faW5saW5lX18g dm9pZCBzZXRfZG1hX2FkZHIodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBpbnQgYSkKK3N0 YXRpYyBpbmxpbmUgdm9pZCBzZXRfZG1hX2FkZHIodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25l ZCBpbnQgYSkKIHsKICAgdm9sYXRpbGUgdW5zaWduZWQgaW50ICAgKmRtYWxwOwogCkBAIC00MzEs NyArNDMxLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX2FkZHIodW5zaWduZWQg aW50IGRtYW5yLCB1bnNpZ25lZCBpbnQgYSkKICAqIFNwZWNpZmljIGZvciBDb2xkZmlyZSAtIHNl dHMgZGV2aWNlIGFkZHJlc3MuCiAgKiBTaG91bGQgYmUgY2FsbGVkIGFmdGVyIHRoZSBtb2RlIHNl dCBjYWxsLCBhbmQgYmVmb3JlIHNldCBETUEgYWRkcmVzcy4KICAqLwotc3RhdGljIF9faW5saW5l X18gdm9pZCBzZXRfZG1hX2RldmljZV9hZGRyKHVuc2lnbmVkIGludCBkbWFuciwgdW5zaWduZWQg aW50IGEpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RtYV9kZXZpY2VfYWRkcih1bnNpZ25lZCBp bnQgZG1hbnIsIHVuc2lnbmVkIGludCBhKQogewogI2lmZGVmIERNQV9ERUJVRwogICBwcmludGso InNldF9kbWFfZGV2aWNlX2FkZHIoZG1hbnI9JWQsYT0leClcbiIsIGRtYW5yLCBhKTsKQEAgLTQ0 NSw3ICs0NDUsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF9kbWFfZGV2aWNlX2FkZHIo dW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBpbnQgYSkKICAqCiAgKiBOT1RFIDM6IFdoaWxl IGEgMzItYml0IHJlZ2lzdGVyLCAiY291bnQiIGlzIG9ubHkgYSBtYXhpbXVtIDI0LWJpdCB2YWx1 ZS4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX2NvdW50KHVuc2lnbmVkIGlu dCBkbWFuciwgdW5zaWduZWQgaW50IGNvdW50KQorc3RhdGljIGlubGluZSB2b2lkIHNldF9kbWFf Y291bnQodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBpbnQgY291bnQpCiB7CiAgIHZvbGF0 aWxlIHVuc2lnbmVkIGludCAqZG1hbHA7CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMgX19p bmxpbmVfXyB2b2lkIHNldF9kbWFfY291bnQodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBp bnQgY291bnQpCiAgKiBzdGlsbCBpbiBwcm9ncmVzcyB3aWxsIHJldHVybiB1bnByZWRpY3RhYmxl IHJlc3VsdHMuCiAgKiBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIG51bWJlciBvZiBfYnl0ZXNf IGxlZnQgdG8gdHJhbnNmZXIuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfZG1hX3Jl c2lkdWUodW5zaWduZWQgaW50IGRtYW5yKQorc3RhdGljIGlubGluZSBpbnQgZ2V0X2RtYV9yZXNp ZHVlKHVuc2lnbmVkIGludCBkbWFucikKIHsKICAgdm9sYXRpbGUgdW5zaWduZWQgaW50ICpkbWFs cDsKICAgdW5zaWduZWQgaW50IGNvdW50OwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUv YXNtL2Zsb3BweS5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2Zsb3BweS5oCmluZGV4IGMzYjlh ZDY3MzJmYy4uN2E2NThhNWNhNzQ2IDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20v ZmxvcHB5LmgKKysrIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2Zsb3BweS5oCkBAIC01MCwyMCAr NTAsMjAgQEAgc3RhdGljIGludCBkb2luZ19wZG1hPTA7CiAKIGV4dGVybiBzcGlubG9ja190ICBk bWFfc3Bpbl9sb2NrOwogCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGNsYWltX2Rt YV9sb2NrKHZvaWQpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY2xhaW1fZG1hX2xvY2so dm9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXNwaW5fbG9ja19pcnFzYXZlKCZkbWFf c3Bpbl9sb2NrLCBmbGFncyk7CiAJcmV0dXJuIGZsYWdzOwogfQogCi1zdGF0aWMgX19pbmxpbmVf XyB2b2lkIHJlbGVhc2VfZG1hX2xvY2sodW5zaWduZWQgbG9uZyBmbGFncykKK3N0YXRpYyBpbmxp bmUgdm9pZCByZWxlYXNlX2RtYV9sb2NrKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7CiAJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZG1hX3NwaW5fbG9jaywgZmxhZ3MpOwogfQogCiAKLXN0YXRpYyBf X2lubGluZV9fIHVuc2lnbmVkIGNoYXIgZmRfaW5iKGludCBwb3J0KQorc3RhdGljIGlubGluZSB1 bnNpZ25lZCBjaGFyIGZkX2luYihpbnQgcG9ydCkKIHsKIAlpZihNQUNIX0lTX1E0MCkKIAkJcmV0 dXJuIGluYl9wKHBvcnQpOwpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB1bnNp Z25lZCBjaGFyIGZkX2luYihpbnQgcG9ydCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIF9faW5s aW5lX18gdm9pZCBmZF9vdXRiKHVuc2lnbmVkIGNoYXIgdmFsdWUsIGludCBwb3J0KQorc3RhdGlj IGlubGluZSB2b2lkIGZkX291dGIodW5zaWduZWQgY2hhciB2YWx1ZSwgaW50IHBvcnQpCiB7CiAJ aWYoTUFDSF9JU19RNDApCiAJCW91dGJfcCh2YWx1ZSwgcG9ydCk7CmRpZmYgLS1naXQgYS9hcmNo L202OGsvaW5jbHVkZS9hc20vbmV0dGVsLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbmV0dGVs LmgKaW5kZXggNDU3MTZlYWQ3YjlkLi40MDM3Mzc3YzAwNDggMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4 ay9pbmNsdWRlL2FzbS9uZXR0ZWwuaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbmV0dGVs LmgKQEAgLTQ3LDE0ICs0NywxNCBAQCBleHRlcm4gdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgcHBk YXRhOwogICoJVGhlc2UgZnVuY3Rpb25zIGRlZmluZWQgdG8gZ2l2ZSBxdWFzaSBnZW5lcmljIGFj Y2VzcyB0byB0aGUKICAqCVBQSU8gYml0cyB1c2VkIGZvciBEVFIvRENELgogICovCi1zdGF0aWMg X19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgbWNmX2dldHBwZGF0YSh2b2lkKQorc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBpbnQgbWNmX2dldHBwZGF0YSh2b2lkKQogewogCXZvbGF0aWxlIHVuc2lnbmVk IHNob3J0ICpwcDsKIAlwcCA9ICh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSBNQ0ZTSU1fUEFE QVQ7CiAJcmV0dXJuKCh1bnNpZ25lZCBpbnQpICpwcCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9f IHZvaWQgbWNmX3NldHBwZGF0YSh1bnNpZ25lZCBpbnQgbWFzaywgdW5zaWduZWQgaW50IGJpdHMp CitzdGF0aWMgaW5saW5lIHZvaWQgbWNmX3NldHBwZGF0YSh1bnNpZ25lZCBpbnQgbWFzaywgdW5z aWduZWQgaW50IGJpdHMpCiB7CiAJdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKnBwOwogCXBwID0g KHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopIE1DRlNJTV9QQURBVDsKQEAgLTg2LDEyICs4Niwx MiBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIG1jZl9zZXRwcGRhdGEodW5zaWduZWQgaW50IG1h c2ssIHVuc2lnbmVkIGludCBiaXRzKQogICoJVGhlc2UgZnVuY3Rpb25zIGRlZmluZWQgdG8gZ2l2 ZSBxdWFzaSBnZW5lcmljIGFjY2VzcyB0byB0aGUKICAqCVBQSU8gYml0cyB1c2VkIGZvciBEVFIv RENELgogICovCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgbWNmX2dldHBwZGF0YSh2 b2lkKQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbWNmX2dldHBwZGF0YSh2b2lkKQogewog CXJldHVybiByZWFkdyhNQ0ZTSU1fUEJEQVQpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lk IG1jZl9zZXRwcGRhdGEodW5zaWduZWQgaW50IG1hc2ssIHVuc2lnbmVkIGludCBiaXRzKQorc3Rh dGljIGlubGluZSB2b2lkIG1jZl9zZXRwcGRhdGEodW5zaWduZWQgaW50IG1hc2ssIHVuc2lnbmVk IGludCBiaXRzKQogewogCXdyaXRldygocmVhZHcoTUNGU0lNX1BCREFUKSAmIH5tYXNrKSB8IGJp dHMsIE1DRlNJTV9QQkRBVCk7CiB9CmRpZmYgLS1naXQgYS9hcmNoL202OGsvbWFjL2lvcC5jIGIv YXJjaC9tNjhrL21hYy9pb3AuYwppbmRleCA5YmZhMTcwMTU3NjguLjI4OGIwNzUzMDgwMiAxMDA2 NDQKLS0tIGEvYXJjaC9tNjhrL21hYy9pb3AuYworKysgYi9hcmNoL202OGsvbWFjL2lvcC5jCkBA IC0xNjEsNDIgKzE2MSw0MiBAQCBpcnFyZXR1cm5fdCBpb3BfaXNtX2lycShpbnQsIHZvaWQgKik7 CiAgKiBQcml2YXRlIGFjY2VzcyBmdW5jdGlvbnMKICAqLwogCi1zdGF0aWMgX19pbmxpbmVfXyB2 b2lkIGlvcF9sb2FkYWRkcih2b2xhdGlsZSBzdHJ1Y3QgbWFjX2lvcCAqaW9wLCBfX3UxNiBhZGRy KQorc3RhdGljIGlubGluZSB2b2lkIGlvcF9sb2FkYWRkcih2b2xhdGlsZSBzdHJ1Y3QgbWFjX2lv cCAqaW9wLCBfX3UxNiBhZGRyKQogewogCWlvcC0+cmFtX2FkZHJfbG8gPSBhZGRyOwogCWlvcC0+ cmFtX2FkZHJfaGkgPSBhZGRyID4+IDg7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIF9fdTggaW9w X3JlYWRiKHZvbGF0aWxlIHN0cnVjdCBtYWNfaW9wICppb3AsIF9fdTE2IGFkZHIpCitzdGF0aWMg aW5saW5lIF9fdTggaW9wX3JlYWRiKHZvbGF0aWxlIHN0cnVjdCBtYWNfaW9wICppb3AsIF9fdTE2 IGFkZHIpCiB7CiAJaW9wLT5yYW1fYWRkcl9sbyA9IGFkZHI7CiAJaW9wLT5yYW1fYWRkcl9oaSA9 IGFkZHIgPj4gODsKIAlyZXR1cm4gaW9wLT5yYW1fZGF0YTsKIH0KIAotc3RhdGljIF9faW5saW5l X18gdm9pZCBpb3Bfd3JpdGViKHZvbGF0aWxlIHN0cnVjdCBtYWNfaW9wICppb3AsIF9fdTE2IGFk ZHIsIF9fdTggZGF0YSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBpb3Bfd3JpdGViKHZvbGF0aWxlIHN0 cnVjdCBtYWNfaW9wICppb3AsIF9fdTE2IGFkZHIsIF9fdTggZGF0YSkKIHsKIAlpb3AtPnJhbV9h ZGRyX2xvID0gYWRkcjsKIAlpb3AtPnJhbV9hZGRyX2hpID0gYWRkciA+PiA4OwogCWlvcC0+cmFt X2RhdGEgPSBkYXRhOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlvcF9zdG9wKHZvbGF0 aWxlIHN0cnVjdCBtYWNfaW9wICppb3ApCitzdGF0aWMgaW5saW5lIHZvaWQgaW9wX3N0b3Aodm9s YXRpbGUgc3RydWN0IG1hY19pb3AgKmlvcCkKIHsKIAlpb3AtPnN0YXR1c19jdHJsICY9IH5JT1Bf UlVOOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlvcF9zdGFydCh2b2xhdGlsZSBzdHJ1 Y3QgbWFjX2lvcCAqaW9wKQorc3RhdGljIGlubGluZSB2b2lkIGlvcF9zdGFydCh2b2xhdGlsZSBz dHJ1Y3QgbWFjX2lvcCAqaW9wKQogewogCWlvcC0+c3RhdHVzX2N0cmwgPSBJT1BfUlVOIHwgSU9Q X0FVVE9JTkM7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgaW9wX2J5cGFzcyh2b2xhdGls ZSBzdHJ1Y3QgbWFjX2lvcCAqaW9wKQorc3RhdGljIGlubGluZSB2b2lkIGlvcF9ieXBhc3Modm9s YXRpbGUgc3RydWN0IG1hY19pb3AgKmlvcCkKIHsKIAlpb3AtPnN0YXR1c19jdHJsIHw9IElPUF9C WVBBU1M7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgaW9wX2ludGVycnVwdCh2b2xhdGls ZSBzdHJ1Y3QgbWFjX2lvcCAqaW9wKQorc3RhdGljIGlubGluZSB2b2lkIGlvcF9pbnRlcnJ1cHQo dm9sYXRpbGUgc3RydWN0IG1hY19pb3AgKmlvcCkKIHsKIAlpb3AtPnN0YXR1c19jdHJsIHw9IElP UF9JUlE7CiB9CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vYXRvbWljLmggYi9h cmNoL21pcHMvaW5jbHVkZS9hc20vYXRvbWljLmgKaW5kZXggZDRlYTdhNWI2MGNmLi5jMTc5YzEy Y2Q3YzcgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9hdG9taWMuaAorKysgYi9h cmNoL21pcHMvaW5jbHVkZS9hc20vYXRvbWljLmgKQEAgLTUzLDcgKzUzLDcgQEAKICNkZWZpbmUg YXRvbWljX3NldCh2LCBpKQlXUklURV9PTkNFKCh2KS0+Y291bnRlciwgKGkpKQogCiAjZGVmaW5l IEFUT01JQ19PUChvcCwgY19vcCwgYXNtX29wKQkJCQkJICAgICAgXAotc3RhdGljIF9faW5saW5l X18gdm9pZCBhdG9taWNfIyNvcChpbnQgaSwgYXRvbWljX3QgKiB2KQkJCSAgICAgIFwKK3N0YXRp YyBpbmxpbmUgdm9pZCBhdG9taWNfIyNvcChpbnQgaSwgYXRvbWljX3QgKiB2KQkJCSAgICAgIFwK IHsJCQkJCQkJCQkgICAgICBcCiAJaWYgKGtlcm5lbF91c2VzX2xsc2MpIHsJCQkJCQkgICAgICBc CiAJCWludCB0ZW1wOwkJCQkJCSAgICAgIFwKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIF9faW5s aW5lX18gdm9pZCBhdG9taWNfIyNvcChpbnQgaSwgYXRvbWljX3QgKiB2KQkJCSAgICAgIFwKIH0K IAogI2RlZmluZSBBVE9NSUNfT1BfUkVUVVJOKG9wLCBjX29wLCBhc21fb3ApCQkJCSAgICAgIFwK LXN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfIyNvcCMjX3JldHVybl9yZWxheGVkKGludCBp LCBhdG9taWNfdCAqIHYpCSAgICAgIFwKK3N0YXRpYyBpbmxpbmUgaW50IGF0b21pY18jI29wIyNf cmV0dXJuX3JlbGF4ZWQoaW50IGksIGF0b21pY190ICogdikJICAgICAgXAogewkJCQkJCQkJCSAg ICAgIFwKIAlpbnQgcmVzdWx0OwkJCQkJCQkgICAgICBcCiAJCQkJCQkJCQkgICAgICBcCkBAIC0x MDksNyArMTA5LDcgQEAgc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY18jI29wIyNfcmV0dXJu X3JlbGF4ZWQoaW50IGksIGF0b21pY190ICogdikJICAgICAgXAogfQogCiAjZGVmaW5lIEFUT01J Q19GRVRDSF9PUChvcCwgY19vcCwgYXNtX29wKQkJCQkgICAgICBcCi1zdGF0aWMgX19pbmxpbmVf XyBpbnQgYXRvbWljX2ZldGNoXyMjb3AjI19yZWxheGVkKGludCBpLCBhdG9taWNfdCAqIHYpCSAg ICAgIFwKK3N0YXRpYyBpbmxpbmUgaW50IGF0b21pY19mZXRjaF8jI29wIyNfcmVsYXhlZChpbnQg aSwgYXRvbWljX3QgKiB2KQkgICAgICBcCiB7CQkJCQkJCQkJICAgICAgXAogCWludCByZXN1bHQ7 CQkJCQkJCSAgICAgIFwKIAkJCQkJCQkJCSAgICAgIFwKQEAgLTE3OCw3ICsxNzgsNyBAQCBBVE9N SUNfT1BTKHhvciwgXj0sIHhvcikKICAqIEF0b21pY2FsbHkgdGVzdCBAdiBhbmQgc3VidHJhY3Qg QGkgaWYgQHYgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIEBpLgogICogVGhlIGZ1bmN0aW9uIHJl dHVybnMgdGhlIG9sZCB2YWx1ZSBvZiBAdiBtaW51cyBAaS4KICAqLwotc3RhdGljIF9faW5saW5l X18gaW50IGF0b21pY19zdWJfaWZfcG9zaXRpdmUoaW50IGksIGF0b21pY190ICogdikKK3N0YXRp YyBpbmxpbmUgaW50IGF0b21pY19zdWJfaWZfcG9zaXRpdmUoaW50IGksIGF0b21pY190ICogdikK IHsKIAlpbnQgcmVzdWx0OwogCkBAIC0yNDYsNyArMjQ2LDcgQEAgc3RhdGljIF9faW5saW5lX18g aW50IGF0b21pY19zdWJfaWZfcG9zaXRpdmUoaW50IGksIGF0b21pY190ICogdikKICNkZWZpbmUg YXRvbWljNjRfc2V0KHYsIGkpCVdSSVRFX09OQ0UoKHYpLT5jb3VudGVyLCAoaSkpCiAKICNkZWZp bmUgQVRPTUlDNjRfT1Aob3AsIGNfb3AsIGFzbV9vcCkJCQkJCSAgICAgIFwKLXN0YXRpYyBfX2lu bGluZV9fIHZvaWQgYXRvbWljNjRfIyNvcChsb25nIGksIGF0b21pYzY0X3QgKiB2KQkJICAgICAg XAorc3RhdGljIGlubGluZSB2b2lkIGF0b21pYzY0XyMjb3AobG9uZyBpLCBhdG9taWM2NF90ICog dikJCSAgICAgIFwKIHsJCQkJCQkJCQkgICAgICBcCiAJaWYgKGtlcm5lbF91c2VzX2xsc2MpIHsJ CQkJCQkgICAgICBcCiAJCWxvbmcgdGVtcDsJCQkJCQkgICAgICBcCkBAIC0yNzAsNyArMjcwLDcg QEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWM2NF8jI29wKGxvbmcgaSwgYXRvbWljNjRf dCAqIHYpCQkgICAgICBcCiB9CiAKICNkZWZpbmUgQVRPTUlDNjRfT1BfUkVUVVJOKG9wLCBjX29w LCBhc21fb3ApCQkJCSAgICAgIFwKLXN0YXRpYyBfX2lubGluZV9fIGxvbmcgYXRvbWljNjRfIyNv cCMjX3JldHVybl9yZWxheGVkKGxvbmcgaSwgYXRvbWljNjRfdCAqIHYpIFwKK3N0YXRpYyBpbmxp bmUgbG9uZyBhdG9taWM2NF8jI29wIyNfcmV0dXJuX3JlbGF4ZWQobG9uZyBpLCBhdG9taWM2NF90 ICogdikgXAogewkJCQkJCQkJCSAgICAgIFwKIAlsb25nIHJlc3VsdDsJCQkJCQkJICAgICAgXAog CQkJCQkJCQkJICAgICAgXApAQCAtMzAyLDcgKzMwMiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGxv bmcgYXRvbWljNjRfIyNvcCMjX3JldHVybl9yZWxheGVkKGxvbmcgaSwgYXRvbWljNjRfdCAqIHYp IFwKIH0KIAogI2RlZmluZSBBVE9NSUM2NF9GRVRDSF9PUChvcCwgY19vcCwgYXNtX29wKQkJCQkg ICAgICBcCi1zdGF0aWMgX19pbmxpbmVfXyBsb25nIGF0b21pYzY0X2ZldGNoXyMjb3AjI19yZWxh eGVkKGxvbmcgaSwgYXRvbWljNjRfdCAqIHYpICBcCitzdGF0aWMgaW5saW5lIGxvbmcgYXRvbWlj NjRfZmV0Y2hfIyNvcCMjX3JlbGF4ZWQobG9uZyBpLCBhdG9taWM2NF90ICogdikgIFwKIHsJCQkJ CQkJCQkgICAgICBcCiAJbG9uZyByZXN1bHQ7CQkJCQkJCSAgICAgIFwKIAkJCQkJCQkJCSAgICAg IFwKQEAgLTM3Miw3ICszNzIsNyBAQCBBVE9NSUM2NF9PUFMoeG9yLCBePSwgeG9yKQogICogQXRv bWljYWxseSB0ZXN0IEB2IGFuZCBzdWJ0cmFjdCBAaSBpZiBAdiBpcyBncmVhdGVyIG9yIGVxdWFs IHRoYW4gQGkuCiAgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgb2xkIHZhbHVlIG9mIEB2IG1p bnVzIEBpLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBsb25nIGF0b21pYzY0X3N1Yl9pZl9wb3Np dGl2ZShsb25nIGksIGF0b21pYzY0X3QgKiB2KQorc3RhdGljIGlubGluZSBsb25nIGF0b21pYzY0 X3N1Yl9pZl9wb3NpdGl2ZShsb25nIGksIGF0b21pYzY0X3QgKiB2KQogewogCWxvbmcgcmVzdWx0 OwogCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vY2hlY2tzdW0uaCBiL2FyY2gv bWlwcy9pbmNsdWRlL2FzbS9jaGVja3N1bS5oCmluZGV4IGU4MTYxZTRkZmRlNy4uOTNmM2ZiYzZl OTE3IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vY2hlY2tzdW0uaAorKysgYi9h cmNoL21pcHMvaW5jbHVkZS9hc20vY2hlY2tzdW0uaApAQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRp YyBpbmxpbmUgX19zdW0xNiBpcF9jb21wdXRlX2NzdW0oY29uc3Qgdm9pZCAqYnVmZiwgaW50IGxl bikKIH0KIAogI2RlZmluZSBfSEFWRV9BUkNIX0lQVjZfQ1NVTQotc3RhdGljIF9faW5saW5lX18g X19zdW0xNiBjc3VtX2lwdjZfbWFnaWMoY29uc3Qgc3RydWN0IGluNl9hZGRyICpzYWRkciwKK3N0 YXRpYyBpbmxpbmUgX19zdW0xNiBjc3VtX2lwdjZfbWFnaWMoY29uc3Qgc3RydWN0IGluNl9hZGRy ICpzYWRkciwKIAkJCQkJICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLAogCQkJCQkgIF9f dTMyIGxlbiwgX191OCBwcm90bywKIAkJCQkJICBfX3dzdW0gc3VtKQpkaWZmIC0tZ2l0IGEvYXJj aC9taXBzL2luY2x1ZGUvYXNtL2RtYS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2RtYS5oCmlu ZGV4IGJlNzI2Yjk0MzUzMC4uODVjYzZiNWRmOGM5IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5j bHVkZS9hc20vZG1hLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2RtYS5oCkBAIC0xNTcs MjAgKzE1NywyMCBAQAogCiBleHRlcm4gc3BpbmxvY2tfdCAgZG1hX3NwaW5fbG9jazsKIAotc3Rh dGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBjbGFpbV9kbWFfbG9jayh2b2lkKQorc3RhdGlj IGlubGluZSB1bnNpZ25lZCBsb25nIGNsYWltX2RtYV9sb2NrKHZvaWQpCiB7CiAJdW5zaWduZWQg bG9uZyBmbGFnczsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZG1hX3NwaW5fbG9jaywgZmxhZ3MpOwog CXJldHVybiBmbGFnczsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCByZWxlYXNlX2RtYV9s b2NrKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCitzdGF0aWMgaW5saW5lIHZvaWQgcmVsZWFzZV9kbWFf bG9jayh1bnNpZ25lZCBsb25nIGZsYWdzKQogewogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRt YV9zcGluX2xvY2ssIGZsYWdzKTsKIH0KIAogLyogZW5hYmxlL2Rpc2FibGUgYSBzcGVjaWZpYyBE TUEgY2hhbm5lbCAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBlbmFibGVfZG1hKHVuc2lnbmVk IGludCBkbWFucikKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmFibGVfZG1hKHVuc2lnbmVkIGludCBk bWFucikKIHsKIAlpZiAoZG1hbnI8PTMpCiAJCWRtYV9vdXRiKGRtYW5yLAkgRE1BMV9NQVNLX1JF Ryk7CkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBlbmFibGVfZG1h KHVuc2lnbmVkIGludCBkbWFucikKIAkJZG1hX291dGIoZG1hbnIgJiAzLCAgRE1BMl9NQVNLX1JF Ryk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgZGlzYWJsZV9kbWEodW5zaWduZWQgaW50 IGRtYW5yKQorc3RhdGljIGlubGluZSB2b2lkIGRpc2FibGVfZG1hKHVuc2lnbmVkIGludCBkbWFu cikKIHsKIAlpZiAoZG1hbnI8PTMpCiAJCWRtYV9vdXRiKGRtYW5yIHwgNCwgIERNQTFfTUFTS19S RUcpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgZGlzYWJsZV9k bWEodW5zaWduZWQgaW50IGRtYW5yKQogICogLS0tIEluIG9yZGVyIHRvIGRvIHRoYXQsIHRoZSBE TUEgcm91dGluZXMgYmVsb3cgc2hvdWxkIC0tLQogICogLS0tIG9ubHkgYmUgdXNlZCB3aGlsZSBo b2xkaW5nIHRoZSBETUEgbG9jayAhIC0tLQogICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGNs ZWFyX2RtYV9mZih1bnNpZ25lZCBpbnQgZG1hbnIpCitzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJf ZG1hX2ZmKHVuc2lnbmVkIGludCBkbWFucikKIHsKIAlpZiAoZG1hbnI8PTMpCiAJCWRtYV9vdXRi KDAsICBETUExX0NMRUFSX0ZGX1JFRyk7CkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIF9faW5s aW5lX18gdm9pZCBjbGVhcl9kbWFfZmYodW5zaWduZWQgaW50IGRtYW5yKQogfQogCiAvKiBzZXQg bW9kZSAoYWJvdmUpIGZvciBhIHNwZWNpZmljIERNQSBjaGFubmVsICovCi1zdGF0aWMgX19pbmxp bmVfXyB2b2lkIHNldF9kbWFfbW9kZSh1bnNpZ25lZCBpbnQgZG1hbnIsIGNoYXIgbW9kZSkKK3N0 YXRpYyBpbmxpbmUgdm9pZCBzZXRfZG1hX21vZGUodW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIG1v ZGUpCiB7CiAJaWYgKGRtYW5yPD0zKQogCQlkbWFfb3V0Yihtb2RlIHwgZG1hbnIsCURNQTFfTU9E RV9SRUcpOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2Rt YV9tb2RlKHVuc2lnbmVkIGludCBkbWFuciwgY2hhciBtb2RlKQogICogdGhlIGxvd2VyIDE2IGJp dHMgb2YgdGhlIERNQSBjdXJyZW50IGFkZHJlc3MgcmVnaXN0ZXIsIGJ1dCBhIDY0ayBib3VuZGFy eQogICogbWF5IGhhdmUgYmVlbiBjcm9zc2VkLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lk IHNldF9kbWFfcGFnZSh1bnNpZ25lZCBpbnQgZG1hbnIsIGNoYXIgcGFnZW5yKQorc3RhdGljIGlu bGluZSB2b2lkIHNldF9kbWFfcGFnZSh1bnNpZ25lZCBpbnQgZG1hbnIsIGNoYXIgcGFnZW5yKQog ewogCXN3aXRjaChkbWFucikgewogCQljYXNlIDA6CkBAIC0yNDYsNyArMjQ2LDcgQEAgc3RhdGlj IF9faW5saW5lX18gdm9pZCBzZXRfZG1hX3BhZ2UodW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIHBh Z2VucikKIC8qIFNldCB0cmFuc2ZlciBhZGRyZXNzICYgcGFnZSBiaXRzIGZvciBzcGVjaWZpYyBE TUEgY2hhbm5lbC4KICAqIEFzc3VtZXMgZG1hIGZsaXBmbG9wIGlzIGNsZWFyLgogICovCi1zdGF0 aWMgX19pbmxpbmVfXyB2b2lkIHNldF9kbWFfYWRkcih1bnNpZ25lZCBpbnQgZG1hbnIsIHVuc2ln bmVkIGludCBhKQorc3RhdGljIGlubGluZSB2b2lkIHNldF9kbWFfYWRkcih1bnNpZ25lZCBpbnQg ZG1hbnIsIHVuc2lnbmVkIGludCBhKQogewogCXNldF9kbWFfcGFnZShkbWFuciwgYT4+MTYpOwog CWlmIChkbWFuciA8PSAzKQkgewpAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRpYyBfX2lubGluZV9f IHZvaWQgc2V0X2RtYV9hZGRyKHVuc2lnbmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGEpCiAg KiBBc3N1bWVzIGRtYSBmbGlwLWZsb3AgaXMgY2xlYXIuCiAgKiBOT1RFIDI6ICJjb3VudCIgcmVw cmVzZW50cyBfYnl0ZXNfIGFuZCBtdXN0IGJlIGV2ZW4gZm9yIGNoYW5uZWxzIDUtNy4KICAqLwot c3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX2NvdW50KHVuc2lnbmVkIGludCBkbWFuciwg dW5zaWduZWQgaW50IGNvdW50KQorc3RhdGljIGlubGluZSB2b2lkIHNldF9kbWFfY291bnQodW5z aWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBpbnQgY291bnQpCiB7CiAJY291bnQtLTsKIAlpZiAo ZG1hbnIgPD0gMykJIHsKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lk IHNldF9kbWFfY291bnQodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBpbnQgY291bnQpCiAg KgogICogQXNzdW1lcyBETUEgZmxpcC1mbG9wIGlzIGNsZWFyLgogICovCi1zdGF0aWMgX19pbmxp bmVfXyBpbnQgZ2V0X2RtYV9yZXNpZHVlKHVuc2lnbmVkIGludCBkbWFucikKK3N0YXRpYyBpbmxp bmUgaW50IGdldF9kbWFfcmVzaWR1ZSh1bnNpZ25lZCBpbnQgZG1hbnIpCiB7CiAJdW5zaWduZWQg aW50IGlvX3BvcnQgPSAoZG1hbnI8PTMpPyAoKGRtYW5yJjMpPDwxKSArIDEgKyBJT19ETUExX0JB U0UKIAkJCQkJIDogKChkbWFuciYzKTw8MikgKyAyICsgSU9fRE1BMl9CQVNFOwpkaWZmIC0tZ2l0 IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2phenouaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9q YXp6LmgKaW5kZXggYTYxOTcwZDAxYTgxLi45NDAxNzgwNTE5ZWIgMTAwNjQ0Ci0tLSBhL2FyY2gv bWlwcy9pbmNsdWRlL2FzbS9qYXp6LmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2phenou aApAQCAtNzIsNyArNzIsNyBAQAogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogCi1zdGF0aWMgX19p bmxpbmVfXyB2b2lkIHBpY2Ffc2V0X2xlZCh1bnNpZ25lZCBpbnQgYml0cykKK3N0YXRpYyBpbmxp bmUgdm9pZCBwaWNhX3NldF9sZWQodW5zaWduZWQgaW50IGJpdHMpCiB7CiAJdm9sYXRpbGUgdW5z aWduZWQgaW50ICpsZWRfcmVnaXN0ZXIgPSAodW5zaWduZWQgaW50ICopIFBJQ0FfTEVEOwogCmRp ZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbG9jYWwuaCBiL2FyY2gvbWlwcy9pbmNs dWRlL2FzbS9sb2NhbC5oCmluZGV4IGFjODI2NGVjYTFlOS4uMDU2YjRhNWUwMGY0IDEwMDY0NAot LS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbG9jYWwuaAorKysgYi9hcmNoL21pcHMvaW5jbHVk ZS9hc20vbG9jYWwuaApAQCAtMjcsNyArMjcsNyBAQCB0eXBlZGVmIHN0cnVjdAogLyoKICAqIFNh bWUgYXMgYWJvdmUsIGJ1dCByZXR1cm4gdGhlIHJlc3VsdCB2YWx1ZQogICovCi1zdGF0aWMgX19p bmxpbmVfXyBsb25nIGxvY2FsX2FkZF9yZXR1cm4obG9uZyBpLCBsb2NhbF90ICogbCkKK3N0YXRp YyBpbmxpbmUgbG9uZyBsb2NhbF9hZGRfcmV0dXJuKGxvbmcgaSwgbG9jYWxfdCAqIGwpCiB7CiAJ dW5zaWduZWQgbG9uZyByZXN1bHQ7CiAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIF9faW5saW5l X18gbG9uZyBsb2NhbF9hZGRfcmV0dXJuKGxvbmcgaSwgbG9jYWxfdCAqIGwpCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gbG9uZyBsb2NhbF9zdWJfcmV0dXJuKGxvbmcg aSwgbG9jYWxfdCAqIGwpCitzdGF0aWMgaW5saW5lIGxvbmcgbG9jYWxfc3ViX3JldHVybihsb25n IGksIGxvY2FsX3QgKiBsKQogewogCXVuc2lnbmVkIGxvbmcgcmVzdWx0OwogCmRpZmYgLS1naXQg YS9hcmNoL21pcHMvaW5jbHVkZS9hc20vc3RyaW5nLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20v c3RyaW5nLmgKaW5kZXggMjkwMzBjYjM5OGVlLi44NzY0Y2JhMzBlNTAgMTAwNjQ0Ci0tLSBhL2Fy Y2gvbWlwcy9pbmNsdWRlL2FzbS9zdHJpbmcuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20v c3RyaW5nLmgKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgSU5fU1RSSU5HX0MKIAogI2RlZmlu ZSBfX0hBVkVfQVJDSF9TVFJDUFkKLXN0YXRpYyBfX2lubGluZV9fIGNoYXIgKnN0cmNweShjaGFy ICpfX2Rlc3QsIF9fY29uc3RfXyBjaGFyICpfX3NyYykKK3N0YXRpYyBpbmxpbmUgY2hhciAqc3Ry Y3B5KGNoYXIgKl9fZGVzdCwgX19jb25zdF9fIGNoYXIgKl9fc3JjKQogewogICBjaGFyICpfX3hk ZXN0ID0gX19kZXN0OwogCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGNoYXIg KnN0cmNweShjaGFyICpfX2Rlc3QsIF9fY29uc3RfXyBjaGFyICpfX3NyYykKIH0KIAogI2RlZmlu ZSBfX0hBVkVfQVJDSF9TVFJOQ1BZCi1zdGF0aWMgX19pbmxpbmVfXyBjaGFyICpzdHJuY3B5KGNo YXIgKl9fZGVzdCwgX19jb25zdF9fIGNoYXIgKl9fc3JjLCBzaXplX3QgX19uKQorc3RhdGljIGlu bGluZSBjaGFyICpzdHJuY3B5KGNoYXIgKl9fZGVzdCwgX19jb25zdF9fIGNoYXIgKl9fc3JjLCBz aXplX3QgX19uKQogewogICBjaGFyICpfX3hkZXN0ID0gX19kZXN0OwogCkBAIC03MCw3ICs3MCw3 IEBAIHN0YXRpYyBfX2lubGluZV9fIGNoYXIgKnN0cm5jcHkoY2hhciAqX19kZXN0LCBfX2NvbnN0 X18gY2hhciAqX19zcmMsIHNpemVfdCBfX24pCiB9CiAKICNkZWZpbmUgX19IQVZFX0FSQ0hfU1RS Q01QCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgc3RyY21wKF9fY29uc3RfXyBjaGFyICpfX2NzLCBf X2NvbnN0X18gY2hhciAqX19jdCkKK3N0YXRpYyBpbmxpbmUgaW50IHN0cmNtcChfX2NvbnN0X18g Y2hhciAqX19jcywgX19jb25zdF9fIGNoYXIgKl9fY3QpCiB7CiAgIGludCBfX3JlczsKIApAQCAt MTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBzdHJjbXAoX19jb25zdF9fIGNo YXIgKl9fY3MsIF9fY29uc3RfXyBjaGFyICpfX2N0KQogI2VuZGlmIC8qICFkZWZpbmVkKElOX1NU UklOR19DKSAqLwogCiAjZGVmaW5lIF9fSEFWRV9BUkNIX1NUUk5DTVAKLXN0YXRpYyBfX2lubGlu ZV9fIGludAorc3RhdGljIGlubGluZSBpbnQKIHN0cm5jbXAoX19jb25zdF9fIGNoYXIgKl9fY3Ms IF9fY29uc3RfXyBjaGFyICpfX2N0LCBzaXplX3QgX19jb3VudCkKIHsKIAlpbnQgX19yZXM7CmRp ZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL2JpbmZtdF9lbGZuMzIuYyBiL2FyY2gvbWlwcy9r ZXJuZWwvYmluZm10X2VsZm4zMi5jCmluZGV4IDdhMTI3NjNkNTUzYS4uYzg0YjBkNzE4ZGQ0IDEw MDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL2JpbmZtdF9lbGZuMzIuYworKysgYi9hcmNoL21p cHMva2VybmVsL2JpbmZtdF9lbGZuMzIuYwpAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgZWxmX3By cHNpbmZvMzIKICNkZWZpbmUgaW5pdF9lbGZfYmluZm10IGluaXRfZWxmbjMyX2JpbmZtdAogCiAj ZGVmaW5lIGppZmZpZXNfdG9fdGltZXZhbCBqaWZmaWVzX3RvX29sZF90aW1ldmFsMzIKLXN0YXRp YyBfX2lubGluZV9fIHZvaWQKK3N0YXRpYyBpbmxpbmUgdm9pZAogamlmZmllc190b19vbGRfdGlt ZXZhbDMyKHVuc2lnbmVkIGxvbmcgamlmZmllcywgc3RydWN0IG9sZF90aW1ldmFsMzIgKnZhbHVl KQogewogCS8qCmRpZmYgLS1naXQgYS9hcmNoL25kczMyL2luY2x1ZGUvYXNtL3N3YWIuaCBiL2Fy Y2gvbmRzMzIvaW5jbHVkZS9hc20vc3dhYi5oCmluZGV4IGUwMWE3NTVhMzdkMi4uOGU4Nzk0OWU1 OWZkIDEwMDY0NAotLS0gYS9hcmNoL25kczMyL2luY2x1ZGUvYXNtL3N3YWIuaAorKysgYi9hcmNo L25kczMyL2luY2x1ZGUvYXNtL3N3YWIuaApAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlIDxsaW51 eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CiAKLXN0YXRpYyBfX2lubGlu ZV9fIF9fYXR0cmlidXRlX2NvbnN0X18gX191MzIgX19fYXJjaF9fc3dhYjMyKF9fdTMyIHgpCitz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX2NvbnN0X18gX191MzIgX19fYXJjaF9fc3dhYjMyKF9f dTMyIHgpCiB7CiAJX19hc21fXygid3NiaCAgICUwLCAlMFxuXHQiCS8qIHdvcmQgc3dhcCBieXRl IHdpdGhpbiBoYWxmd29yZCAqLwogCQkicm90cmkgICUwLCAlMCwgIzE2XG4iCkBAIC0xNiw3ICsx Niw3IEBAIHN0YXRpYyBfX2lubGluZV9fIF9fYXR0cmlidXRlX2NvbnN0X18gX191MzIgX19fYXJj aF9fc3dhYjMyKF9fdTMyIHgpCiAJcmV0dXJuIHg7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIF9f YXR0cmlidXRlX2NvbnN0X18gX191MTYgX19fYXJjaF9fc3dhYjE2KF9fdTE2IHgpCitzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX2NvbnN0X18gX191MTYgX19fYXJjaF9fc3dhYjE2KF9fdTE2IHgp CiB7CiAJX19hc21fXygid3NiaCAgICUwLCAlMFxuIgkvKiB3b3JkIHN3YXAgYnl0ZSB3aXRoaW4g aGFsZndvcmQgKi8KIAkJOiI9ciIoeCkKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2luY2x1ZGUv YXNtL2F0b21pYy5oIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vYXRvbWljLmgKaW5kZXggMTE4 OTUzZDQxNzYzLi42MGVmYzE4OTZiNWUgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL2luY2x1ZGUv YXNtL2F0b21pYy5oCisrKyBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2F0b21pYy5oCkBAIC01 Niw3ICs1Niw3IEBAIGV4dGVybiBhcmNoX3NwaW5sb2NrX3QgX19hdG9taWNfaGFzaFtBVE9NSUNf SEFTSF9TSVpFXSBfX2xvY2tfYWxpZ25lZDsKICAqIGFyZSBhdG9taWMsIHNvIGEgcmVhZGVyIG5l dmVyIHNlZXMgaW5jb25zaXN0ZW50IHZhbHVlcy4KICAqLwogCi1zdGF0aWMgX19pbmxpbmVfXyB2 b2lkIGF0b21pY19zZXQoYXRvbWljX3QgKnYsIGludCBpKQorc3RhdGljIGlubGluZSB2b2lkIGF0 b21pY19zZXQoYXRvbWljX3QgKnYsIGludCBpKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJ X2F0b21pY19zcGluX2xvY2tfaXJxc2F2ZSh2LCBmbGFncyk7CkBAIC02OCw3ICs2OCw3IEBAIHN0 YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX3NldChhdG9taWNfdCAqdiwgaW50IGkpCiAKICNk ZWZpbmUgYXRvbWljX3NldF9yZWxlYXNlKHYsIGkpCWF0b21pY19zZXQoKHYpLCAoaSkpCiAKLXN0 YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfcmVhZChjb25zdCBhdG9taWNfdCAqdikKK3N0YXRp YyBpbmxpbmUgaW50IGF0b21pY19yZWFkKGNvbnN0IGF0b21pY190ICp2KQogewogCXJldHVybiBS RUFEX09OQ0UoKHYpLT5jb3VudGVyKTsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIF9faW5s aW5lX18gaW50IGF0b21pY19yZWFkKGNvbnN0IGF0b21pY190ICp2KQogI2RlZmluZSBhdG9taWNf eGNoZyh2LCBuZXcpICh4Y2hnKCYoKHYpLT5jb3VudGVyKSwgbmV3KSkKIAogI2RlZmluZSBBVE9N SUNfT1Aob3AsIGNfb3ApCQkJCQkJXAotc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfIyNv cChpbnQgaSwgYXRvbWljX3QgKnYpCQkJXAorc3RhdGljIGlubGluZSB2b2lkIGF0b21pY18jI29w KGludCBpLCBhdG9taWNfdCAqdikJCQlcCiB7CQkJCQkJCQkJXAogCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CQkJCQkJXAogCQkJCQkJCQkJXApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgX19pbmxpbmVf XyB2b2lkIGF0b21pY18jI29wKGludCBpLCBhdG9taWNfdCAqdikJCQlcCiB9CQkJCQkJCQkJXAog CiAjZGVmaW5lIEFUT01JQ19PUF9SRVRVUk4ob3AsIGNfb3ApCQkJCQlcCi1zdGF0aWMgX19pbmxp bmVfXyBpbnQgYXRvbWljXyMjb3AjI19yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQkJXAorc3Rh dGljIGlubGluZSBpbnQgYXRvbWljXyMjb3AjI19yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQkJ XAogewkJCQkJCQkJCVwKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwkJCQkJCVwKIAlpbnQgcmV0OwkJ CQkJCQlcCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY18j I29wIyNfcmV0dXJuKGludCBpLCBhdG9taWNfdCAqdikJCVwKIH0KIAogI2RlZmluZSBBVE9NSUNf RkVUQ0hfT1Aob3AsIGNfb3ApCQkJCQlcCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2Zl dGNoXyMjb3AoaW50IGksIGF0b21pY190ICp2KQkJXAorc3RhdGljIGlubGluZSBpbnQgYXRvbWlj X2ZldGNoXyMjb3AoaW50IGksIGF0b21pY190ICp2KQkJXAogewkJCQkJCQkJCVwKIAl1bnNpZ25l ZCBsb25nIGZsYWdzOwkJCQkJCVwKIAlpbnQgcmV0OwkJCQkJCQlcCkBAIC0xNDMsNyArMTQzLDcg QEAgQVRPTUlDX09QUyh4b3IsIF49KQogI2RlZmluZSBBVE9NSUM2NF9JTklUKGkpIHsgKGkpIH0K IAogI2RlZmluZSBBVE9NSUM2NF9PUChvcCwgY19vcCkJCQkJCQlcCi1zdGF0aWMgX19pbmxpbmVf XyB2b2lkIGF0b21pYzY0XyMjb3AoczY0IGksIGF0b21pYzY0X3QgKnYpCQlcCitzdGF0aWMgaW5s aW5lIHZvaWQgYXRvbWljNjRfIyNvcChzNjQgaSwgYXRvbWljNjRfdCAqdikJCVwKIHsJCQkJCQkJ CQlcCiAJdW5zaWduZWQgbG9uZyBmbGFnczsJCQkJCQlcCiAJCQkJCQkJCQlcCkBAIC0xNTMsNyAr MTUzLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWM2NF8jI29wKHM2NCBpLCBhdG9t aWM2NF90ICp2KQkJXAogfQkJCQkJCQkJCVwKIAogI2RlZmluZSBBVE9NSUM2NF9PUF9SRVRVUk4o b3AsIGNfb3ApCQkJCQlcCi1zdGF0aWMgX19pbmxpbmVfXyBzNjQgYXRvbWljNjRfIyNvcCMjX3Jl dHVybihzNjQgaSwgYXRvbWljNjRfdCAqdikJXAorc3RhdGljIGlubGluZSBzNjQgYXRvbWljNjRf IyNvcCMjX3JldHVybihzNjQgaSwgYXRvbWljNjRfdCAqdikJXAogewkJCQkJCQkJCVwKIAl1bnNp Z25lZCBsb25nIGZsYWdzOwkJCQkJCVwKIAlzNjQgcmV0OwkJCQkJCQlcCkBAIC0xNjYsNyArMTY2 LDcgQEAgc3RhdGljIF9faW5saW5lX18gczY0IGF0b21pYzY0XyMjb3AjI19yZXR1cm4oczY0IGks IGF0b21pYzY0X3QgKnYpCVwKIH0KIAogI2RlZmluZSBBVE9NSUM2NF9GRVRDSF9PUChvcCwgY19v cCkJCQkJCVwKLXN0YXRpYyBfX2lubGluZV9fIHM2NCBhdG9taWM2NF9mZXRjaF8jI29wKHM2NCBp LCBhdG9taWM2NF90ICp2KQkJXAorc3RhdGljIGlubGluZSBzNjQgYXRvbWljNjRfZmV0Y2hfIyNv cChzNjQgaSwgYXRvbWljNjRfdCAqdikJCVwKIHsJCQkJCQkJCQlcCiAJdW5zaWduZWQgbG9uZyBm bGFnczsJCQkJCQlcCiAJczY0IHJldDsJCQkJCQkJXApAQCAtMjAxLDcgKzIwMSw3IEBAIEFUT01J QzY0X09QUyh4b3IsIF49KQogI3VuZGVmIEFUT01JQzY0X09QX1JFVFVSTgogI3VuZGVmIEFUT01J QzY0X09QCiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQKK3N0YXRpYyBpbmxpbmUgdm9pZAogYXRv bWljNjRfc2V0KGF0b21pYzY0X3QgKnYsIHM2NCBpKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 CkBAIC0yMTIsNyArMjEyLDcgQEAgYXRvbWljNjRfc2V0KGF0b21pYzY0X3QgKnYsIHM2NCBpKQog CV9hdG9taWNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSh2LCBmbGFncyk7CiB9CiAKLXN0YXRpYyBf X2lubGluZV9fIHM2NAorc3RhdGljIGlubGluZSBzNjQKIGF0b21pYzY0X3JlYWQoY29uc3QgYXRv bWljNjRfdCAqdikKIHsKIAlyZXR1cm4gUkVBRF9PTkNFKCh2KS0+Y291bnRlcik7CmRpZmYgLS1n aXQgYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9iaXRvcHMuaCBiL2FyY2gvcGFyaXNjL2luY2x1 ZGUvYXNtL2JpdG9wcy5oCmluZGV4IDUzMjUyZDRmOWE1Ny4uNThkNGRjM2M2ZGRmIDEwMDY0NAot LS0gYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9iaXRvcHMuaAorKysgYi9hcmNoL3BhcmlzYy9p bmNsdWRlL2FzbS9iaXRvcHMuaApAQCAtMzMsNyArMzMsNyBAQAogICoJX18qX2JpdCgpIGFyZSAi cmVsYXhlZCIgYW5kIGRvbid0IHVzZSBzcGlubG9jayBvciB2b2xhdGlsZS4KICAqLwogCi1zdGF0 aWMgX19pbmxpbmVfXyB2b2lkIHNldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25n ICogYWRkcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYml0KGludCBuciwgdm9sYXRpbGUgdW5z aWduZWQgbG9uZyAqIGFkZHIpCiB7CiAJdW5zaWduZWQgbG9uZyBtYXNrID0gMVVMIDw8IENIT1Bf U0hJRlRDT1VOVChucik7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTQ0LDcgKzQ0LDcgQEAg c3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqIGFkZHIpCiAJX2F0b21pY19zcGluX3VubG9ja19pcnFyZXN0b3JlKGFkZHIsIGZsYWdz KTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xhdGls ZSB1bnNpZ25lZCBsb25nICogYWRkcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9iaXQoaW50 IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogYWRkcikKIHsKIAl1bnNpZ25lZCBsb25nIG1h c2sgPSB+KDFVTCA8PCBDSE9QX1NISUZUQ09VTlQobnIpKTsKIAl1bnNpZ25lZCBsb25nIGZsYWdz OwpAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGNsZWFyX2JpdChpbnQg bnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBhZGRyKQogCV9hdG9taWNfc3Bpbl91bmxvY2tf aXJxcmVzdG9yZShhZGRyLCBmbGFncyk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hh bmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBhZGRyKQorc3RhdGljIGlu bGluZSB2b2lkIGNoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogYWRk cikKIHsKIAl1bnNpZ25lZCBsb25nIG1hc2sgPSAxVUwgPDwgQ0hPUF9TSElGVENPVU5UKG5yKTsK IAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgX19pbmxpbmVf XyB2b2lkIGNoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogYWRkcikK IAlfYXRvbWljX3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoYWRkciwgZmxhZ3MpOwogfQogCi1zdGF0 aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2ln bmVkIGxvbmcgKiBhZGRyKQorc3RhdGljIGlubGluZSBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQg bnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBhZGRyKQogewogCXVuc2lnbmVkIGxvbmcgbWFz ayA9IDFVTCA8PCBDSE9QX1NISUZUQ09VTlQobnIpOwogCXVuc2lnbmVkIGxvbmcgb2xkOwpAQCAt ODQsNyArODQsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQg bnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBhZGRyKQogCXJldHVybiBzZXQ7CiB9CiAKLXN0 YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB1 bnNpZ25lZCBsb25nICogYWRkcikKK3N0YXRpYyBpbmxpbmUgaW50IHRlc3RfYW5kX2NsZWFyX2Jp dChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBhZGRyKQogewogCXVuc2lnbmVkIGxv bmcgbWFzayA9IDFVTCA8PCBDSE9QX1NISUZUQ09VTlQobnIpOwogCXVuc2lnbmVkIGxvbmcgb2xk OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jbGVh cl9iaXQoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogYWRkcikKIAlyZXR1cm4gc2V0 OwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIs IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBhZGRyKQorc3RhdGljIGlubGluZSBpbnQgdGVzdF9h bmRfY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiBhZGRyKQogewog CXVuc2lnbmVkIGxvbmcgbWFzayA9IDFVTCA8PCBDSE9QX1NISUZUQ09VTlQobnIpOwogCXVuc2ln bmVkIGxvbmcgb2xkYml0OwpAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGlu dCB0ZXN0X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqIGFk ZHIpCiAgKiBjeWNsZXMgZm9yIGVhY2ggbWlzcHJlZGljdGVkIGJyYW5jaC4KICAqLwogCi1zdGF0 aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIF9fZmZzKHVuc2lnbmVkIGxvbmcgeCkKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2Zmcyh1bnNpZ25lZCBsb25nIHgpCiB7CiAJdW5zaWdu ZWQgbG9uZyByZXQ7CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB1bnNp Z25lZCBsb25nIF9fZmZzKHVuc2lnbmVkIGxvbmcgeCkKICAqIFRoaXMgaXMgZGVmaW5lZCB0aGUg c2FtZSB3YXkgYXMgdGhlIGxpYmMgYW5kIGNvbXBpbGVyIGJ1aWx0aW4KICAqIGZmcyByb3V0aW5l cywgdGhlcmVmb3JlIGRpZmZlcnMgaW4gc3Bpcml0IGZyb20gdGhlIGFib3ZlIGZmeiAobWFuIGZm cykuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIGludCBmZnMoaW50IHgpCitzdGF0aWMgaW5saW5l IGludCBmZnMoaW50IHgpCiB7CiAJcmV0dXJuIHggPyAoX19mZnMoKHVuc2lnbmVkIGxvbmcpeCkg KyAxKSA6IDA7CiB9CkBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIF9faW5saW5lX18gaW50IGZm cyhpbnQgeCkKICAqIGZscygwKSA9IDAsIGZscygxKSA9IDEsIGZscygweDgwMDAwMDAwKSA9IDMy LgogICovCiAKLXN0YXRpYyBfX2lubGluZV9fIGludCBmbHMoaW50IHgpCitzdGF0aWMgaW5saW5l IGludCBmbHMoaW50IHgpCiB7CiAJaW50IHJldDsKIAlpZiAoIXgpCmRpZmYgLS1naXQgYS9hcmNo L3BhcmlzYy9pbmNsdWRlL2FzbS9jaGVja3N1bS5oIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20v Y2hlY2tzdW0uaAppbmRleCAzY2JmMWYxYzExODguLjJlNDQxYTU1YWRjOSAxMDA2NDQKLS0tIGEv YXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vY2hlY2tzdW0uaAorKysgYi9hcmNoL3BhcmlzYy9pbmNs dWRlL2FzbS9jaGVja3N1bS5oCkBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIGlubGluZSBfX3N1 bTE2IGlwX2NvbXB1dGVfY3N1bShjb25zdCB2b2lkICpidWYsIGludCBsZW4pCiAKIAogI2RlZmlu ZSBfSEFWRV9BUkNIX0lQVjZfQ1NVTQotc3RhdGljIF9faW5saW5lX18gX19zdW0xNiBjc3VtX2lw djZfbWFnaWMoY29uc3Qgc3RydWN0IGluNl9hZGRyICpzYWRkciwKK3N0YXRpYyBpbmxpbmUgX19z dW0xNiBjc3VtX2lwdjZfbWFnaWMoY29uc3Qgc3RydWN0IGluNl9hZGRyICpzYWRkciwKIAkJCQkJ ICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLAogCQkJCQkgIF9fdTMyIGxlbiwgX191OCBw cm90bywKIAkJCQkJICBfX3dzdW0gc3VtKQpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBfX2lu bGluZV9fIF9fc3VtMTYgY3N1bV9pcHY2X21hZ2ljKGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2Fk ZHIsCiAgKglDb3B5IGFuZCBjaGVja3N1bSB0byB1c2VyCiAgKi8KICNkZWZpbmUgSEFWRV9DU1VN X0NPUFlfVVNFUgotc3RhdGljIF9faW5saW5lX18gX193c3VtIGNzdW1fYW5kX2NvcHlfdG9fdXNl cihjb25zdCB2b2lkICpzcmMsCitzdGF0aWMgaW5saW5lIF9fd3N1bSBjc3VtX2FuZF9jb3B5X3Rv X3VzZXIoY29uc3Qgdm9pZCAqc3JjLAogCQkJCQkJICAgICAgdm9pZCBfX3VzZXIgKmRzdCwKIAkJ CQkJCSAgICAgIGludCBsZW4sIF9fd3N1bSBzdW0sCiAJCQkJCQkgICAgICBpbnQgKmVycl9wdHIp CmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9jb21wYXQuaCBiL2FyY2gvcGFy aXNjL2luY2x1ZGUvYXNtL2NvbXBhdC5oCmluZGV4IGUwM2UzYzg0OWY0MC4uZTIyNjlhY2YzZDJi IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9jb21wYXQuaAorKysgYi9hcmNo L3BhcmlzYy9pbmNsdWRlL2FzbS9jb21wYXQuaApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBp bmxpbmUgY29tcGF0X3VwdHJfdCBwdHJfdG9fY29tcGF0KHZvaWQgX191c2VyICp1cHRyKQogCXJl dHVybiAodTMyKSh1bnNpZ25lZCBsb25nKXVwdHI7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZv aWQgX191c2VyICphcmNoX2NvbXBhdF9hbGxvY191c2VyX3NwYWNlKGxvbmcgbGVuKQorc3RhdGlj IGlubGluZSB2b2lkIF9fdXNlciAqYXJjaF9jb21wYXRfYWxsb2NfdXNlcl9zcGFjZShsb25nIGxl bikKIHsKIAlzdHJ1Y3QgcHRfcmVncyAqcmVncyA9ICZjdXJyZW50LT50aHJlYWQucmVnczsKIAly ZXR1cm4gKHZvaWQgX191c2VyICopcmVncy0+Z3JbMzBdOwpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJp c2MvaW5jbHVkZS9hc20vZGVsYXkuaCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2RlbGF5LmgK aW5kZXggODQxYjUwNmI3MDJhLi5lOGYzNWQ2MDViYjIgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNj L2luY2x1ZGUvYXNtL2RlbGF5LmgKKysrIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vZGVsYXku aApAQCAtMiw3ICsyLDcgQEAKICNpZm5kZWYgX0FTTV9QQVJJU0NfREVMQVlfSAogI2RlZmluZSBf QVNNX1BBUklTQ19ERUxBWV9ICiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19kZWxheSh1bnNp Z25lZCBsb25nIGxvb3BzKSB7CitzdGF0aWMgaW5saW5lIHZvaWQgX19kZWxheSh1bnNpZ25lZCBs b25nIGxvb3BzKSB7CiAJYXNtIHZvbGF0aWxlKAogCSIJLmJhbGlnbmwJNjQsMHgzNDAwMDAzNFxu IgogCSIJYWRkaWIsVVYgLTEsJTAsLlxuIgpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvaW5jbHVk ZS9hc20vZG1hLmggYi9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9kbWEuaAppbmRleCBlZWE4MGVk MzRlNmQuLjU1MTcwY2ExOWFjOSAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20v ZG1hLmgKKysrIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vZG1hLmgKQEAgLTcxLDEyICs3MSwx MiBAQAogI2RlZmluZSBETUEyX01BU0tfQUxMX1JFRyAgICAgICAweERFICAgIC8qIGFsbC1jaGFu bmVscyBtYXNrICh3KSAqLwogI2RlZmluZSBETUEyX0VYVF9NT0RFX1JFRwkoMHg0MDAgfCBETUEy X01PREVfUkVHKQogCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGNsYWltX2RtYV9s b2NrKHZvaWQpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY2xhaW1fZG1hX2xvY2sodm9p ZCkKIHsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCByZWxlYXNlX2Rt YV9sb2NrKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCitzdGF0aWMgaW5saW5lIHZvaWQgcmVsZWFzZV9k bWFfbG9jayh1bnNpZ25lZCBsb25nIGZsYWdzKQogewogfQogCkBAIC04OSw3ICs4OSw3IEBAIHN0 YXRpYyBfX2lubGluZV9fIHZvaWQgcmVsZWFzZV9kbWFfbG9jayh1bnNpZ25lZCBsb25nIGZsYWdz KQogICoKICAqIEFzc3VtZXMgRE1BIGZsaXAtZmxvcCBpcyBjbGVhci4KICAqLwotc3RhdGljIF9f aW5saW5lX18gaW50IGdldF9kbWFfcmVzaWR1ZSh1bnNpZ25lZCBpbnQgZG1hbnIpCitzdGF0aWMg aW5saW5lIGludCBnZXRfZG1hX3Jlc2lkdWUodW5zaWduZWQgaW50IGRtYW5yKQogewogCXVuc2ln bmVkIGludCBpb19wb3J0ID0gKGRtYW5yPD0zKT8gKChkbWFuciYzKTw8MSkgKyAxICsgSU9fRE1B MV9CQVNFCiAJCQkJCSA6ICgoZG1hbnImMyk8PDIpICsgMiArIElPX0RNQTJfQkFTRTsKQEAgLTEw NCw3ICsxMDQsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgZ2V0X2RtYV9yZXNpZHVlKHVuc2ln bmVkIGludCBkbWFucikKIH0KIAogLyogZW5hYmxlL2Rpc2FibGUgYSBzcGVjaWZpYyBETUEgY2hh bm5lbCAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBlbmFibGVfZG1hKHVuc2lnbmVkIGludCBk bWFucikKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmFibGVfZG1hKHVuc2lnbmVkIGludCBkbWFucikK IHsKICNpZmRlZiBDT05GSUdfU1VQRVJJTwogCWlmIChkbWFucjw9MykKQEAgLTExNCw3ICsxMTQs NyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGVuYWJsZV9kbWEodW5zaWduZWQgaW50IGRtYW5y KQogI2VuZGlmCiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgZGlzYWJsZV9kbWEodW5zaWdu ZWQgaW50IGRtYW5yKQorc3RhdGljIGlubGluZSB2b2lkIGRpc2FibGVfZG1hKHVuc2lnbmVkIGlu dCBkbWFucikKIHsKICNpZmRlZiBDT05GSUdfU1VQRVJJTwogCWlmIChkbWFucjw9MykKQEAgLTEz NCwxMiArMTM0LDEyIEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgZGlzYWJsZV9kbWEodW5zaWdu ZWQgaW50IGRtYW5yKQogICogLS0tIEluIG9yZGVyIHRvIGRvIHRoYXQsIHRoZSBETUEgcm91dGlu ZXMgYmVsb3cgc2hvdWxkIC0tLQogICogLS0tIG9ubHkgYmUgdXNlZCB3aGlsZSBob2xkaW5nIHRo ZSBETUEgbG9jayAhIC0tLQogICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGNsZWFyX2RtYV9m Zih1bnNpZ25lZCBpbnQgZG1hbnIpCitzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfZG1hX2ZmKHVu c2lnbmVkIGludCBkbWFucikKIHsKIH0KIAogLyogc2V0IG1vZGUgKGFib3ZlKSBmb3IgYSBzcGVj aWZpYyBETUEgY2hhbm5lbCAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX21vZGUo dW5zaWduZWQgaW50IGRtYW5yLCBjaGFyIG1vZGUpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2Rt YV9tb2RlKHVuc2lnbmVkIGludCBkbWFuciwgY2hhciBtb2RlKQogewogfQogCkBAIC0xNDgsNyAr MTQ4LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfZG1hX21vZGUodW5zaWduZWQgaW50 IGRtYW5yLCBjaGFyIG1vZGUpCiAgKiB0aGUgbG93ZXIgMTYgYml0cyBvZiB0aGUgRE1BIGN1cnJl bnQgYWRkcmVzcyByZWdpc3RlciwgYnV0IGEgNjRrIGJvdW5kYXJ5CiAgKiBtYXkgaGF2ZSBiZWVu IGNyb3NzZWQuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9wYWdlKHVuc2ln bmVkIGludCBkbWFuciwgY2hhciBwYWdlbnIpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RtYV9w YWdlKHVuc2lnbmVkIGludCBkbWFuciwgY2hhciBwYWdlbnIpCiB7CiB9CiAKQEAgLTE1Niw3ICsx NTYsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF9kbWFfcGFnZSh1bnNpZ25lZCBpbnQg ZG1hbnIsIGNoYXIgcGFnZW5yKQogLyogU2V0IHRyYW5zZmVyIGFkZHJlc3MgJiBwYWdlIGJpdHMg Zm9yIHNwZWNpZmljIERNQSBjaGFubmVsLgogICogQXNzdW1lcyBkbWEgZmxpcGZsb3AgaXMgY2xl YXIuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9hZGRyKHVuc2lnbmVkIGlu dCBkbWFuciwgdW5zaWduZWQgaW50IGEpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RtYV9hZGRy KHVuc2lnbmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGEpCiB7CiB9CiAKQEAgLTE2OSw3ICsx NjksNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF9kbWFfYWRkcih1bnNpZ25lZCBpbnQg ZG1hbnIsIHVuc2lnbmVkIGludCBhKQogICogQXNzdW1lcyBkbWEgZmxpcC1mbG9wIGlzIGNsZWFy LgogICogTk9URSAyOiAiY291bnQiIHJlcHJlc2VudHMgX2J5dGVzXyBhbmQgbXVzdCBiZSBldmVu IGZvciBjaGFubmVscyA1LTcuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9j b3VudCh1bnNpZ25lZCBpbnQgZG1hbnIsIHVuc2lnbmVkIGludCBjb3VudCkKK3N0YXRpYyBpbmxp bmUgdm9pZCBzZXRfZG1hX2NvdW50KHVuc2lnbmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGNv dW50KQogewogfQogCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9pZGUuaCBi L2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2lkZS5oCmluZGV4IDM0Y2RhYzAxZWQzNS4uZWRkN2Zl MDNiOTBhIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9pZGUuaAorKysgYi9h cmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9pZGUuaApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBf X2lkZV9vdXRzdwlvdXRzdwogI2RlZmluZSBfX2lkZV9vdXRzbAlvdXRzbAogCi1zdGF0aWMgX19p bmxpbmVfXyB2b2lkIF9faWRlX21tX2luc3codm9pZCBfX2lvbWVtICpwb3J0LCB2b2lkICphZGRy LCB1MzIgY291bnQpCitzdGF0aWMgaW5saW5lIHZvaWQgX19pZGVfbW1faW5zdyh2b2lkIF9faW9t ZW0gKnBvcnQsIHZvaWQgKmFkZHIsIHUzMiBjb3VudCkKIHsKIAl3aGlsZSAoY291bnQtLSkgewog CQkqKHUxNiAqKWFkZHIgPSBfX3Jhd19yZWFkdyhwb3J0KTsKQEAgLTI5LDcgKzI5LDcgQEAgc3Rh dGljIF9faW5saW5lX18gdm9pZCBfX2lkZV9tbV9pbnN3KHZvaWQgX19pb21lbSAqcG9ydCwgdm9p ZCAqYWRkciwgdTMyIGNvdW50KQogCX0KIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2lk ZV9tbV9pbnNsKHZvaWQgX19pb21lbSAqcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KQorc3Rh dGljIGlubGluZSB2b2lkIF9faWRlX21tX2luc2wodm9pZCBfX2lvbWVtICpwb3J0LCB2b2lkICph ZGRyLCB1MzIgY291bnQpCiB7CiAJd2hpbGUgKGNvdW50LS0pIHsKIAkJKih1MzIgKilhZGRyID0g X19yYXdfcmVhZGwocG9ydCk7CkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZv aWQgX19pZGVfbW1faW5zbCh2b2lkIF9faW9tZW0gKnBvcnQsIHZvaWQgKmFkZHIsIHUzMiBjb3Vu dCkKIAl9CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19pZGVfbW1fb3V0c3codm9pZCBf X2lvbWVtICpwb3J0LCB2b2lkICphZGRyLCB1MzIgY291bnQpCitzdGF0aWMgaW5saW5lIHZvaWQg X19pZGVfbW1fb3V0c3codm9pZCBfX2lvbWVtICpwb3J0LCB2b2lkICphZGRyLCB1MzIgY291bnQp CiB7CiAJd2hpbGUgKGNvdW50LS0pIHsKIAkJX19yYXdfd3JpdGV3KCoodTE2ICopYWRkciwgcG9y dCk7CkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19pZGVfbW1fb3V0 c3codm9pZCBfX2lvbWVtICpwb3J0LCB2b2lkICphZGRyLCB1MzIgY291bnQpCiAJfQogfQogCi1z dGF0aWMgX19pbmxpbmVfXyB2b2lkIF9faWRlX21tX291dHNsKHZvaWQgX19pb21lbSAqcG9ydCwg dm9pZCAqYWRkciwgdTMyIGNvdW50KQorc3RhdGljIGlubGluZSB2b2lkIF9faWRlX21tX291dHNs KHZvaWQgX19pb21lbSAqcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KQogewogCXdoaWxlIChj b3VudC0tKSB7CiAJCV9fcmF3X3dyaXRlbCgqKHUzMiAqKWFkZHIsIHBvcnQpOwpkaWZmIC0tZ2l0 IGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vaXJxLmggYi9hcmNoL3BhcmlzYy9pbmNsdWRlL2Fz bS9pcnEuaAppbmRleCA5NTllNzljZDJjMTQuLmIxYzIzYTE2MzExNCAxMDA2NDQKLS0tIGEvYXJj aC9wYXJpc2MvaW5jbHVkZS9hc20vaXJxLmgKKysrIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20v aXJxLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2RlZmluZSBOUl9JUlFTCQkoQ1BVX0lSUV9NQVgg KyAxKQogCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgaXJxX2Nhbm9uaWNhbGl6ZShpbnQgaXJxKQor c3RhdGljIGlubGluZSBpbnQgaXJxX2Nhbm9uaWNhbGl6ZShpbnQgaXJxKQogewogCXJldHVybiAo aXJxID09IDIpID8gOSA6IGlycTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2luY2x1ZGUv YXNtL3NwaW5sb2NrLmggYi9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9zcGlubG9jay5oCmluZGV4 IDhhNjM1MTVmMDNiZi4uMGQ0NjIwYTFmODFiIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9pbmNs dWRlL2FzbS9zcGlubG9jay5oCisrKyBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3NwaW5sb2Nr LmgKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYXJjaF9zcGluX3RyeWxvY2so YXJjaF9zcGlubG9ja190ICp4KQogCiAvKiBOb3RlIHRoYXQgd2UgaGF2ZSB0byBlbnN1cmUgaW50 ZXJydXB0cyBhcmUgZGlzYWJsZWQgaW4gY2FzZSB3ZSdyZQogICogaW50ZXJydXB0ZWQgYnkgc29t ZSBvdGhlciBjb2RlIHRoYXQgd2FudHMgdG8gZ3JhYiB0aGUgc2FtZSByZWFkIGxvY2sgKi8KLXN0 YXRpYyAgX19pbmxpbmVfXyB2b2lkIGFyY2hfcmVhZF9sb2NrKGFyY2hfcndsb2NrX3QgKnJ3KQor c3RhdGljICBpbmxpbmUgdm9pZCBhcmNoX3JlYWRfbG9jayhhcmNoX3J3bG9ja190ICpydykKIHsK IAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKQEAgLTc4LDcg Kzc4LDcgQEAgc3RhdGljICBfX2lubGluZV9fIHZvaWQgYXJjaF9yZWFkX2xvY2soYXJjaF9yd2xv Y2tfdCAqcncpCiAKIC8qIE5vdGUgdGhhdCB3ZSBoYXZlIHRvIGVuc3VyZSBpbnRlcnJ1cHRzIGFy ZSBkaXNhYmxlZCBpbiBjYXNlIHdlJ3JlCiAgKiBpbnRlcnJ1cHRlZCBieSBzb21lIG90aGVyIGNv ZGUgdGhhdCB3YW50cyB0byBncmFiIHRoZSBzYW1lIHJlYWQgbG9jayAqLwotc3RhdGljICBfX2lu bGluZV9fIHZvaWQgYXJjaF9yZWFkX3VubG9jayhhcmNoX3J3bG9ja190ICpydykKK3N0YXRpYyAg aW5saW5lIHZvaWQgYXJjaF9yZWFkX3VubG9jayhhcmNoX3J3bG9ja190ICpydykKIHsKIAl1bnNp Z25lZCBsb25nIGZsYWdzOwogCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKQEAgLTkwLDcgKzkwLDcg QEAgc3RhdGljICBfX2lubGluZV9fIHZvaWQgYXJjaF9yZWFkX3VubG9jayhhcmNoX3J3bG9ja190 ICpydykKIAogLyogTm90ZSB0aGF0IHdlIGhhdmUgdG8gZW5zdXJlIGludGVycnVwdHMgYXJlIGRp c2FibGVkIGluIGNhc2Ugd2UncmUKICAqIGludGVycnVwdGVkIGJ5IHNvbWUgb3RoZXIgY29kZSB0 aGF0IHdhbnRzIHRvIGdyYWIgdGhlIHNhbWUgcmVhZCBsb2NrICovCi1zdGF0aWMgX19pbmxpbmVf XyBpbnQgYXJjaF9yZWFkX3RyeWxvY2soYXJjaF9yd2xvY2tfdCAqcncpCitzdGF0aWMgaW5saW5l IGludCBhcmNoX3JlYWRfdHJ5bG9jayhhcmNoX3J3bG9ja190ICpydykKIHsKIAl1bnNpZ25lZCBs b25nIGZsYWdzOwogIHJldHJ5OgpAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBfX2lubGluZV9f IGludCBhcmNoX3JlYWRfdHJ5bG9jayhhcmNoX3J3bG9ja190ICpydykKIAogLyogTm90ZSB0aGF0 IHdlIGhhdmUgdG8gZW5zdXJlIGludGVycnVwdHMgYXJlIGRpc2FibGVkIGluIGNhc2Ugd2UncmUK ICAqIGludGVycnVwdGVkIGJ5IHNvbWUgb3RoZXIgY29kZSB0aGF0IHdhbnRzIHRvIHJlYWRfdHJ5 bG9jaygpIHRoaXMgbG9jayAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBhcmNoX3dyaXRlX2xv Y2soYXJjaF9yd2xvY2tfdCAqcncpCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF93cml0ZV9sb2Nr KGFyY2hfcndsb2NrX3QgKnJ3KQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiByZXRyeToKQEAg LTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGFyY2hfd3JpdGVfbG9jayhh cmNoX3J3bG9ja190ICpydykKIAlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiB9CiAKLXN0YXRp YyBfX2lubGluZV9fIHZvaWQgYXJjaF93cml0ZV91bmxvY2soYXJjaF9yd2xvY2tfdCAqcncpCitz dGF0aWMgaW5saW5lIHZvaWQgYXJjaF93cml0ZV91bmxvY2soYXJjaF9yd2xvY2tfdCAqcncpCiB7 CiAJcnctPmNvdW50ZXIgPSAwOwogCWFyY2hfc3Bpbl91bmxvY2soJnJ3LT5sb2NrKTsKQEAgLTE0 Niw3ICsxNDYsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGFyY2hfd3JpdGVfdW5sb2NrKGFy Y2hfcndsb2NrX3QgKnJ3KQogCiAvKiBOb3RlIHRoYXQgd2UgaGF2ZSB0byBlbnN1cmUgaW50ZXJy dXB0cyBhcmUgZGlzYWJsZWQgaW4gY2FzZSB3ZSdyZQogICogaW50ZXJydXB0ZWQgYnkgc29tZSBv dGhlciBjb2RlIHRoYXQgd2FudHMgdG8gcmVhZF90cnlsb2NrKCkgdGhpcyBsb2NrICovCi1zdGF0 aWMgX19pbmxpbmVfXyBpbnQgYXJjaF93cml0ZV90cnlsb2NrKGFyY2hfcndsb2NrX3QgKnJ3KQor c3RhdGljIGlubGluZSBpbnQgYXJjaF93cml0ZV90cnlsb2NrKGFyY2hfcndsb2NrX3QgKnJ3KQog ewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IHJlc3VsdCA9IDA7CmRpZmYgLS1naXQgYS9h cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYXRvbWljLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9h c20vYXRvbWljLmgKaW5kZXggNTJlYWZhZjc0MDU0Li40ZTMzODA3Yzc1Y2YgMTAwNjQ0Ci0tLSBh L2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9hdG9taWMuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5j bHVkZS9hc20vYXRvbWljLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNkZWZpbmUgX19hdG9taWNfcmVs ZWFzZV9mZW5jZSgpCQkJCQlcCiAJX19hc21fXyBfX3ZvbGF0aWxlX18oUFBDX1JFTEVBU0VfQkFS UklFUiAiIiA6IDogOiAibWVtb3J5IikKIAotc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19y ZWFkKGNvbnN0IGF0b21pY190ICp2KQorc3RhdGljIGlubGluZSBpbnQgYXRvbWljX3JlYWQoY29u c3QgYXRvbWljX3QgKnYpCiB7CiAJaW50IHQ7CiAKQEAgLTM0LDEzICszNCwxMyBAQCBzdGF0aWMg X19pbmxpbmVfXyBpbnQgYXRvbWljX3JlYWQoY29uc3QgYXRvbWljX3QgKnYpCiAJcmV0dXJuIHQ7 CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX3NldChhdG9taWNfdCAqdiwgaW50 IGkpCitzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWljX3NldChhdG9taWNfdCAqdiwgaW50IGkpCiB7 CiAJX19hc21fXyBfX3ZvbGF0aWxlX18oInN0dyVVMCVYMCAlMSwlMCIgOiAiPW0iKHYtPmNvdW50 ZXIpIDogInIiKGkpKTsKIH0KIAogI2RlZmluZSBBVE9NSUNfT1Aob3AsIGFzbV9vcCkJCQkJCQlc Ci1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY18jI29wKGludCBhLCBhdG9taWNfdCAqdikJ CQlcCitzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWljXyMjb3AoaW50IGEsIGF0b21pY190ICp2KQkJ CVwKIHsJCQkJCQkJCQlcCiAJaW50IHQ7CQkJCQkJCQlcCiAJCQkJCQkJCQlcCkBAIC0xMjMsNyAr MTIzLDcgQEAgQVRPTUlDX09QUyh4b3IsIHhvcikKICN1bmRlZiBBVE9NSUNfT1BfUkVUVVJOX1JF TEFYRUQKICN1bmRlZiBBVE9NSUNfT1AKIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNf aW5jKGF0b21pY190ICp2KQorc3RhdGljIGlubGluZSB2b2lkIGF0b21pY19pbmMoYXRvbWljX3Qg KnYpCiB7CiAJaW50IHQ7CiAKQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2 b2lkIGF0b21pY19pbmMoYXRvbWljX3QgKnYpCiB9CiAjZGVmaW5lIGF0b21pY19pbmMgYXRvbWlj X2luYwogCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2luY19yZXR1cm5fcmVsYXhlZChh dG9taWNfdCAqdikKK3N0YXRpYyBpbmxpbmUgaW50IGF0b21pY19pbmNfcmV0dXJuX3JlbGF4ZWQo YXRvbWljX3QgKnYpCiB7CiAJaW50IHQ7CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgX19p bmxpbmVfXyBpbnQgYXRvbWljX2luY19yZXR1cm5fcmVsYXhlZChhdG9taWNfdCAqdikKIAlyZXR1 cm4gdDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfZGVjKGF0b21pY190ICp2 KQorc3RhdGljIGlubGluZSB2b2lkIGF0b21pY19kZWMoYXRvbWljX3QgKnYpCiB7CiAJaW50IHQ7 CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19kZWMo YXRvbWljX3QgKnYpCiB9CiAjZGVmaW5lIGF0b21pY19kZWMgYXRvbWljX2RlYwogCi1zdGF0aWMg X19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19yZXR1cm5fcmVsYXhlZChhdG9taWNfdCAqdikKK3N0 YXRpYyBpbmxpbmUgaW50IGF0b21pY19kZWNfcmV0dXJuX3JlbGF4ZWQoYXRvbWljX3QgKnYpCiB7 CiAJaW50IHQ7CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRv bWljX2RlY19yZXR1cm5fcmVsYXhlZChhdG9taWNfdCAqdikKICAqIEF0b21pY2FsbHkgYWRkcyBA YSB0byBAdiwgc28gbG9uZyBhcyBpdCB3YXMgbm90IEB1LgogICogUmV0dXJucyB0aGUgb2xkIHZh bHVlIG9mIEB2LgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2ZldGNoX2FkZF91 bmxlc3MoYXRvbWljX3QgKnYsIGludCBhLCBpbnQgdSkKK3N0YXRpYyBpbmxpbmUgaW50IGF0b21p Y19mZXRjaF9hZGRfdW5sZXNzKGF0b21pY190ICp2LCBpbnQgYSwgaW50IHUpCiB7CiAJaW50IHQ7 CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2ZldGNo X2FkZF91bmxlc3MoYXRvbWljX3QgKnYsIGludCBhLCBpbnQgdSkKICAqIEF0b21pY2FsbHkgaW5j cmVtZW50cyBAdiBieSAxLCBzbyBsb25nIGFzIEB2IGlzIG5vbi16ZXJvLgogICogUmV0dXJucyBu b24temVybyBpZiBAdiB3YXMgbm9uLXplcm8sIGFuZCB6ZXJvIG90aGVyd2lzZS4KICAqLwotc3Rh dGljIF9faW5saW5lX18gaW50IGF0b21pY19pbmNfbm90X3plcm8oYXRvbWljX3QgKnYpCitzdGF0 aWMgaW5saW5lIGludCBhdG9taWNfaW5jX25vdF96ZXJvKGF0b21pY190ICp2KQogewogCWludCB0 MSwgdDI7CiAKQEAgLTI3MCw3ICsyNzAsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWlj X2luY19ub3RfemVybyhhdG9taWNfdCAqdikKICAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBv bGQgdmFsdWUgb2YgKnYgbWludXMgMSwgZXZlbiBpZgogICogdGhlIGF0b21pYyB2YXJpYWJsZSwg diwgd2FzIG5vdCBkZWNyZW1lbnRlZC4KICAqLwotc3RhdGljIF9faW5saW5lX18gaW50IGF0b21p Y19kZWNfaWZfcG9zaXRpdmUoYXRvbWljX3QgKnYpCitzdGF0aWMgaW5saW5lIGludCBhdG9taWNf ZGVjX2lmX3Bvc2l0aXZlKGF0b21pY190ICp2KQogewogCWludCB0OwogCkBAIC0yOTcsNyArMjk3 LDcgQEAgc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19kZWNfaWZfcG9zaXRpdmUoYXRvbWlj X3QgKnYpCiAKICNkZWZpbmUgQVRPTUlDNjRfSU5JVChpKQl7IChpKSB9CiAKLXN0YXRpYyBfX2lu bGluZV9fIGxvbmcgYXRvbWljNjRfcmVhZChjb25zdCBhdG9taWM2NF90ICp2KQorc3RhdGljIGlu bGluZSBsb25nIGF0b21pYzY0X3JlYWQoY29uc3QgYXRvbWljNjRfdCAqdikKIHsKIAlsb25nIHQ7 CiAKQEAgLTMwNiwxMyArMzA2LDEzIEBAIHN0YXRpYyBfX2lubGluZV9fIGxvbmcgYXRvbWljNjRf cmVhZChjb25zdCBhdG9taWM2NF90ICp2KQogCXJldHVybiB0OwogfQogCi1zdGF0aWMgX19pbmxp bmVfXyB2b2lkIGF0b21pYzY0X3NldChhdG9taWM2NF90ICp2LCBsb25nIGkpCitzdGF0aWMgaW5s aW5lIHZvaWQgYXRvbWljNjRfc2V0KGF0b21pYzY0X3QgKnYsIGxvbmcgaSkKIHsKIAlfX2FzbV9f IF9fdm9sYXRpbGVfXygic3RkJVUwJVgwICUxLCUwIiA6ICI9bSIodi0+Y291bnRlcikgOiAiciIo aSkpOwogfQogCiAjZGVmaW5lIEFUT01JQzY0X09QKG9wLCBhc21fb3ApCQkJCQkJXAotc3RhdGlj IF9faW5saW5lX18gdm9pZCBhdG9taWM2NF8jI29wKGxvbmcgYSwgYXRvbWljNjRfdCAqdikJCVwK K3N0YXRpYyBpbmxpbmUgdm9pZCBhdG9taWM2NF8jI29wKGxvbmcgYSwgYXRvbWljNjRfdCAqdikJ CVwKIHsJCQkJCQkJCQlcCiAJbG9uZyB0OwkJCQkJCQkJXAogCQkJCQkJCQkJXApAQCAtMzk0LDcg KzM5NCw3IEBAIEFUT01JQzY0X09QUyh4b3IsIHhvcikKICN1bmRlZiBBVE9NSUM2NF9PUF9SRVRV Uk5fUkVMQVhFRAogI3VuZGVmIEFUT01JQzY0X09QCiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQg YXRvbWljNjRfaW5jKGF0b21pYzY0X3QgKnYpCitzdGF0aWMgaW5saW5lIHZvaWQgYXRvbWljNjRf aW5jKGF0b21pYzY0X3QgKnYpCiB7CiAJbG9uZyB0OwogCkBAIC00MDksNyArNDA5LDcgQEAgc3Rh dGljIF9faW5saW5lX18gdm9pZCBhdG9taWM2NF9pbmMoYXRvbWljNjRfdCAqdikKIH0KICNkZWZp bmUgYXRvbWljNjRfaW5jIGF0b21pYzY0X2luYwogCi1zdGF0aWMgX19pbmxpbmVfXyBsb25nIGF0 b21pYzY0X2luY19yZXR1cm5fcmVsYXhlZChhdG9taWM2NF90ICp2KQorc3RhdGljIGlubGluZSBs b25nIGF0b21pYzY0X2luY19yZXR1cm5fcmVsYXhlZChhdG9taWM2NF90ICp2KQogewogCWxvbmcg dDsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGxvbmcgYXRvbWljNjRf aW5jX3JldHVybl9yZWxheGVkKGF0b21pYzY0X3QgKnYpCiAJcmV0dXJuIHQ7CiB9CiAKLXN0YXRp YyBfX2lubGluZV9fIHZvaWQgYXRvbWljNjRfZGVjKGF0b21pYzY0X3QgKnYpCitzdGF0aWMgaW5s aW5lIHZvaWQgYXRvbWljNjRfZGVjKGF0b21pYzY0X3QgKnYpCiB7CiAJbG9uZyB0OwogCkBAIC00 NDAsNyArNDQwLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWM2NF9kZWMoYXRvbWlj NjRfdCAqdikKIH0KICNkZWZpbmUgYXRvbWljNjRfZGVjIGF0b21pYzY0X2RlYwogCi1zdGF0aWMg X19pbmxpbmVfXyBsb25nIGF0b21pYzY0X2RlY19yZXR1cm5fcmVsYXhlZChhdG9taWM2NF90ICp2 KQorc3RhdGljIGlubGluZSBsb25nIGF0b21pYzY0X2RlY19yZXR1cm5fcmVsYXhlZChhdG9taWM2 NF90ICp2KQogewogCWxvbmcgdDsKIApAQCAtNDYzLDcgKzQ2Myw3IEBAIHN0YXRpYyBfX2lubGlu ZV9fIGxvbmcgYXRvbWljNjRfZGVjX3JldHVybl9yZWxheGVkKGF0b21pYzY0X3QgKnYpCiAgKiBB dG9taWNhbGx5IHRlc3QgKnYgYW5kIGRlY3JlbWVudCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMC4K ICAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBvbGQgdmFsdWUgb2YgKnYgbWludXMgMS4KICAq Lwotc3RhdGljIF9faW5saW5lX18gbG9uZyBhdG9taWM2NF9kZWNfaWZfcG9zaXRpdmUoYXRvbWlj NjRfdCAqdikKK3N0YXRpYyBpbmxpbmUgbG9uZyBhdG9taWM2NF9kZWNfaWZfcG9zaXRpdmUoYXRv bWljNjRfdCAqdikKIHsKIAlsb25nIHQ7CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgX19p bmxpbmVfXyBsb25nIGF0b21pYzY0X2RlY19pZl9wb3NpdGl2ZShhdG9taWM2NF90ICp2KQogICog QXRvbWljYWxseSBhZGRzIEBhIHRvIEB2LCBzbyBsb25nIGFzIGl0IHdhcyBub3QgQHUuCiAgKiBS ZXR1cm5zIHRoZSBvbGQgdmFsdWUgb2YgQHYuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIGxvbmcg YXRvbWljNjRfZmV0Y2hfYWRkX3VubGVzcyhhdG9taWM2NF90ICp2LCBsb25nIGEsIGxvbmcgdSkK K3N0YXRpYyBpbmxpbmUgbG9uZyBhdG9taWM2NF9mZXRjaF9hZGRfdW5sZXNzKGF0b21pYzY0X3Qg KnYsIGxvbmcgYSwgbG9uZyB1KQogewogCWxvbmcgdDsKIApAQCAtNTMyLDcgKzUzMiw3IEBAIHN0 YXRpYyBfX2lubGluZV9fIGxvbmcgYXRvbWljNjRfZmV0Y2hfYWRkX3VubGVzcyhhdG9taWM2NF90 ICp2LCBsb25nIGEsIGxvbmcgdSkKICAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyBAdiBieSAxLCBz byBsb25nIGFzIEB2IGlzIG5vbi16ZXJvLgogICogUmV0dXJucyBub24temVybyBpZiBAdiB3YXMg bm9uLXplcm8sIGFuZCB6ZXJvIG90aGVyd2lzZS4KICAqLwotc3RhdGljIF9faW5saW5lX18gaW50 IGF0b21pYzY0X2luY19ub3RfemVybyhhdG9taWM2NF90ICp2KQorc3RhdGljIGlubGluZSBpbnQg YXRvbWljNjRfaW5jX25vdF96ZXJvKGF0b21pYzY0X3QgKnYpCiB7CiAJbG9uZyB0MSwgdDI7CiAK ZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9iaXRvcHMuaCBiL2FyY2gvcG93 ZXJwYy9pbmNsdWRlL2FzbS9iaXRvcHMuaAppbmRleCBmZjcxNTY2ZGFkZWUuLjA4NThjOGRkZWE5 MiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2JpdG9wcy5oCisrKyBiL2Fy Y2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9iaXRvcHMuaApAQCAtNjgsNyArNjgsNyBAQAogCiAvKiBN YWNybyBmb3IgZ2VuZXJhdGluZyB0aGUgKioqX2JpdHMoKSBmdW5jdGlvbnMgKi8KICNkZWZpbmUg REVGSU5FX0JJVE9QKGZuLCBvcCwgcHJlZml4KQkJXAotc3RhdGljIF9faW5saW5lX18gdm9pZCBm bih1bnNpZ25lZCBsb25nIG1hc2ssCVwKK3N0YXRpYyBpbmxpbmUgdm9pZCBmbih1bnNpZ25lZCBs b25nIG1hc2ssCVwKIAkJdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqX3ApCVwKIHsJCQkJCQlcCiAJ dW5zaWduZWQgbG9uZyBvbGQ7CQkJXApAQCAtOTAsMjIgKzkwLDIyIEBAIERFRklORV9CSVRPUChj bGVhcl9iaXRzLCBhbmRjLCAiIikKIERFRklORV9CSVRPUChjbGVhcl9iaXRzX3VubG9jaywgYW5k YywgUFBDX1JFTEVBU0VfQkFSUklFUikKIERFRklORV9CSVRPUChjaGFuZ2VfYml0cywgeG9yLCAi IikKIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwgdm9sYXRpbGUgdW5z aWduZWQgbG9uZyAqYWRkcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYml0KGludCBuciwgdm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKIHsKIAlzZXRfYml0cyhCSVRfTUFTSyhuciksIGFk ZHIgKyBCSVRfV09SRChucikpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGNsZWFyX2Jp dChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCitzdGF0aWMgaW5saW5lIHZv aWQgY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKIHsKIAlj bGVhcl9iaXRzKEJJVF9NQVNLKG5yKSwgYWRkciArIEJJVF9XT1JEKG5yKSk7CiB9CiAKLXN0YXRp YyBfX2lubGluZV9fIHZvaWQgY2xlYXJfYml0X3VubG9jayhpbnQgbnIsIHZvbGF0aWxlIHVuc2ln bmVkIGxvbmcgKmFkZHIpCitzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfYml0X3VubG9jayhpbnQg bnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCiB7CiAJY2xlYXJfYml0c191bmxvY2so QklUX01BU0sobnIpLCBhZGRyICsgQklUX1dPUkQobnIpKTsKIH0KIAotc3RhdGljIF9faW5saW5l X18gdm9pZCBjaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikK K3N0YXRpYyBpbmxpbmUgdm9pZCBjaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKIHsKIAljaGFuZ2VfYml0cyhCSVRfTUFTSyhuciksIGFkZHIgKyBCSVRfV09S RChucikpOwogfQpAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hh bmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCiAvKiBMaWtlIERF RklORV9CSVRPUCgpLCB3aXRoIGNoYW5nZXMgdG8gdGhlIGFyZ3VtZW50cyB0byAnb3AnIGFuZCB0 aGUgb3V0cHV0CiAgKiBvcGVyYW5kcy4gKi8KICNkZWZpbmUgREVGSU5FX1RFU1RPUChmbiwgb3As IHByZWZpeCwgcG9zdGZpeCwgZWgpCVwKLXN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcg Zm4oCQkJXAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGZuKAkJCVwKIAkJdW5zaWduZWQg bG9uZyBtYXNrLAkJCVwKIAkJdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqX3ApCQlcCiB7CQkJCQkJ CVwKQEAgLTE0MiwzMyArMTQyLDMzIEBAIERFRklORV9URVNUT1AodGVzdF9hbmRfY2xlYXJfYml0 cywgYW5kYywgUFBDX0FUT01JQ19FTlRSWV9CQVJSSUVSLAogREVGSU5FX1RFU1RPUCh0ZXN0X2Fu ZF9jaGFuZ2VfYml0cywgeG9yLCBQUENfQVRPTUlDX0VOVFJZX0JBUlJJRVIsCiAJICAgICAgUFBD X0FUT01JQ19FWElUX0JBUlJJRVIsIDApCiAKLXN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2Fu ZF9zZXRfYml0KHVuc2lnbmVkIGxvbmcgbnIsCitzdGF0aWMgaW5saW5lIGludCB0ZXN0X2FuZF9z ZXRfYml0KHVuc2lnbmVkIGxvbmcgbnIsCiAJCQkJICAgICAgIHZvbGF0aWxlIHVuc2lnbmVkIGxv bmcgKmFkZHIpCiB7CiAJcmV0dXJuIHRlc3RfYW5kX3NldF9iaXRzKEJJVF9NQVNLKG5yKSwgYWRk ciArIEJJVF9XT1JEKG5yKSkgIT0gMDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gaW50IHRlc3Rf YW5kX3NldF9iaXRfbG9jayh1bnNpZ25lZCBsb25nIG5yLAorc3RhdGljIGlubGluZSBpbnQgdGVz dF9hbmRfc2V0X2JpdF9sb2NrKHVuc2lnbmVkIGxvbmcgbnIsCiAJCQkJICAgICAgIHZvbGF0aWxl IHVuc2lnbmVkIGxvbmcgKmFkZHIpCiB7CiAJcmV0dXJuIHRlc3RfYW5kX3NldF9iaXRzX2xvY2so QklUX01BU0sobnIpLAogCQkJCWFkZHIgKyBCSVRfV09SRChucikpICE9IDA7CiB9CiAKLXN0YXRp YyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jbGVhcl9iaXQodW5zaWduZWQgbG9uZyBuciwKK3N0 YXRpYyBpbmxpbmUgaW50IHRlc3RfYW5kX2NsZWFyX2JpdCh1bnNpZ25lZCBsb25nIG5yLAogCQkJ CQkgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKIHsKIAlyZXR1cm4gdGVzdF9hbmRfY2xl YXJfYml0cyhCSVRfTUFTSyhuciksIGFkZHIgKyBCSVRfV09SRChucikpICE9IDA7CiB9CiAKLXN0 YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0KHVuc2lnbmVkIGxvbmcgbnIs CitzdGF0aWMgaW5saW5lIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0KHVuc2lnbmVkIGxvbmcgbnIs CiAJCQkJCSAgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKIHsKIAlyZXR1cm4gdGVzdF9h bmRfY2hhbmdlX2JpdHMoQklUX01BU0sobnIpLCBhZGRyICsgQklUX1dPUkQobnIpKSAhPSAwOwog fQogCiAjaWZkZWYgQ09ORklHX1BQQzY0Ci1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25n IGNsZWFyX2JpdF91bmxvY2tfcmV0dXJuX3dvcmQoaW50IG5yLAorc3RhdGljIGlubGluZSB1bnNp Z25lZCBsb25nIGNsZWFyX2JpdF91bmxvY2tfcmV0dXJuX3dvcmQoaW50IG5yLAogCQkJCQkJdm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKIHsKIAl1bnNpZ25lZCBsb25nIG9sZCwgdDsKQEAg LTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGNsZWFyX2Jp dF91bmxvY2tfcmV0dXJuX3dvcmQoaW50IG5yLAogCiAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0 b3BzL25vbi1hdG9taWMuaD4KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2NsZWFyX2JpdF91 bmxvY2soaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQorc3RhdGljIGlubGlu ZSB2b2lkIF9fY2xlYXJfYml0X3VubG9jayhpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcg KmFkZHIpCiB7CiAJX19hc21fXyBfX3ZvbGF0aWxlX18oUFBDX1JFTEVBU0VfQkFSUklFUiAiIiA6 OjogIm1lbW9yeSIpOwogCV9fY2xlYXJfYml0KG5yLCBhZGRyKTsKQEAgLTIxOSwxNCArMjE5LDE0 IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19jbGVhcl9iaXRfdW5sb2NrKGludCBuciwgdm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKICAqIGZsczogZmluZCBsYXN0IChtb3N0LXNpZ25p ZmljYW50KSBiaXQgc2V0LgogICogTm90ZSBmbHMoMCkgPSAwLCBmbHMoMSkgPSAxLCBmbHMoMHg4 MDAwMDAwMCkgPSAzMi4KICAqLwotc3RhdGljIF9faW5saW5lX18gaW50IGZscyh1bnNpZ25lZCBp bnQgeCkKK3N0YXRpYyBpbmxpbmUgaW50IGZscyh1bnNpZ25lZCBpbnQgeCkKIHsKIAlyZXR1cm4g MzIgLSBfX2J1aWx0aW5fY2x6KHgpOwogfQogCiAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0b3Bz L2J1aWx0aW4tX19mbHMuaD4KIAotc3RhdGljIF9faW5saW5lX18gaW50IGZsczY0KF9fdTY0IHgp CitzdGF0aWMgaW5saW5lIGludCBmbHM2NChfX3U2NCB4KQogewogCXJldHVybiA2NCAtIF9fYnVp bHRpbl9jbHpsbCh4KTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9k bWEuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9kbWEuaAppbmRleCAxYjRmMDI1NDg2OGYu LmQ1YmU2OThiODMxYSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2RtYS5o CisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9kbWEuaApAQCAtMTY2LDIwICsxNjYsMjAg QEAKIAogZXh0ZXJuIHNwaW5sb2NrX3QgZG1hX3NwaW5fbG9jazsKIAotc3RhdGljIF9faW5saW5l X18gdW5zaWduZWQgbG9uZyBjbGFpbV9kbWFfbG9jayh2b2lkKQorc3RhdGljIGlubGluZSB1bnNp Z25lZCBsb25nIGNsYWltX2RtYV9sb2NrKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsK IAlzcGluX2xvY2tfaXJxc2F2ZSgmZG1hX3NwaW5fbG9jaywgZmxhZ3MpOwogCXJldHVybiBmbGFn czsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCByZWxlYXNlX2RtYV9sb2NrKHVuc2lnbmVk IGxvbmcgZmxhZ3MpCitzdGF0aWMgaW5saW5lIHZvaWQgcmVsZWFzZV9kbWFfbG9jayh1bnNpZ25l ZCBsb25nIGZsYWdzKQogewogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRtYV9zcGluX2xvY2ss IGZsYWdzKTsKIH0KIAogLyogZW5hYmxlL2Rpc2FibGUgYSBzcGVjaWZpYyBETUEgY2hhbm5lbCAq Lwotc3RhdGljIF9faW5saW5lX18gdm9pZCBlbmFibGVfZG1hKHVuc2lnbmVkIGludCBkbWFucikK K3N0YXRpYyBpbmxpbmUgdm9pZCBlbmFibGVfZG1hKHVuc2lnbmVkIGludCBkbWFucikKIHsKIAl1 bnNpZ25lZCBjaGFyIHVjRG1hQ21kID0gMHgwMDsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRp YyBfX2lubGluZV9fIHZvaWQgZW5hYmxlX2RtYSh1bnNpZ25lZCBpbnQgZG1hbnIpCiAJfQogfQog Ci1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRpc2FibGVfZG1hKHVuc2lnbmVkIGludCBkbWFucikK K3N0YXRpYyBpbmxpbmUgdm9pZCBkaXNhYmxlX2RtYSh1bnNpZ25lZCBpbnQgZG1hbnIpCiB7CiAJ aWYgKGRtYW5yIDw9IDMpCiAJCWRtYV9vdXRiKGRtYW5yIHwgNCwgRE1BMV9NQVNLX1JFRyk7CkBA IC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBkaXNhYmxlX2RtYSh1bnNp Z25lZCBpbnQgZG1hbnIpCiAgKiAtLS0gSW4gb3JkZXIgdG8gZG8gdGhhdCwgdGhlIERNQSByb3V0 aW5lcyBiZWxvdyBzaG91bGQgLS0tCiAgKiAtLS0gb25seSBiZSB1c2VkIHdoaWxlIGludGVycnVw dHMgYXJlIGRpc2FibGVkISAtLS0KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9k bWFfZmYodW5zaWduZWQgaW50IGRtYW5yKQorc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2RtYV9m Zih1bnNpZ25lZCBpbnQgZG1hbnIpCiB7CiAJaWYgKGRtYW5yIDw9IDMpCiAJCWRtYV9vdXRiKDAs IERNQTFfQ0xFQVJfRkZfUkVHKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgX19pbmxpbmVf XyB2b2lkIGNsZWFyX2RtYV9mZih1bnNpZ25lZCBpbnQgZG1hbnIpCiB9CiAKIC8qIHNldCBtb2Rl IChhYm92ZSkgZm9yIGEgc3BlY2lmaWMgRE1BIGNoYW5uZWwgKi8KLXN0YXRpYyBfX2lubGluZV9f IHZvaWQgc2V0X2RtYV9tb2RlKHVuc2lnbmVkIGludCBkbWFuciwgY2hhciBtb2RlKQorc3RhdGlj IGlubGluZSB2b2lkIHNldF9kbWFfbW9kZSh1bnNpZ25lZCBpbnQgZG1hbnIsIGNoYXIgbW9kZSkK IHsKIAlpZiAoZG1hbnIgPD0gMykKIAkJZG1hX291dGIobW9kZSB8IGRtYW5yLCBETUExX01PREVf UkVHKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF9kbWFf bW9kZSh1bnNpZ25lZCBpbnQgZG1hbnIsIGNoYXIgbW9kZSkKICAqIHRoZSBsb3dlciAxNiBiaXRz IG9mIHRoZSBETUEgY3VycmVudCBhZGRyZXNzIHJlZ2lzdGVyLCBidXQgYSA2NGsgYm91bmRhcnkK ICAqIG1heSBoYXZlIGJlZW4gY3Jvc3NlZC4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBz ZXRfZG1hX3BhZ2UodW5zaWduZWQgaW50IGRtYW5yLCBpbnQgcGFnZW5yKQorc3RhdGljIGlubGlu ZSB2b2lkIHNldF9kbWFfcGFnZSh1bnNpZ25lZCBpbnQgZG1hbnIsIGludCBwYWdlbnIpCiB7CiAJ c3dpdGNoIChkbWFucikgewogCWNhc2UgMDoKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgX19p bmxpbmVfXyB2b2lkIHNldF9kbWFfcGFnZSh1bnNpZ25lZCBpbnQgZG1hbnIsIGludCBwYWdlbnIp CiAvKiBTZXQgdHJhbnNmZXIgYWRkcmVzcyAmIHBhZ2UgYml0cyBmb3Igc3BlY2lmaWMgRE1BIGNo YW5uZWwuCiAgKiBBc3N1bWVzIGRtYSBmbGlwZmxvcCBpcyBjbGVhci4KICAqLwotc3RhdGljIF9f aW5saW5lX18gdm9pZCBzZXRfZG1hX2FkZHIodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBp bnQgcGh5cykKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZG1hX2FkZHIodW5zaWduZWQgaW50IGRt YW5yLCB1bnNpZ25lZCBpbnQgcGh5cykKIHsKIAlpZiAoZG1hbnIgPD0gMykgewogCQlkbWFfb3V0 YihwaHlzICYgMHhmZiwKQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lk IHNldF9kbWFfYWRkcih1bnNpZ25lZCBpbnQgZG1hbnIsIHVuc2lnbmVkIGludCBwaHlzKQogICog QXNzdW1lcyBkbWEgZmxpcC1mbG9wIGlzIGNsZWFyLgogICogTk9URSAyOiAiY291bnQiIHJlcHJl c2VudHMgX2J5dGVzXyBhbmQgbXVzdCBiZSBldmVuIGZvciBjaGFubmVscyA1LTcuCiAgKi8KLXN0 YXRpYyBfX2lubGluZV9fIHZvaWQgc2V0X2RtYV9jb3VudCh1bnNpZ25lZCBpbnQgZG1hbnIsIHVu c2lnbmVkIGludCBjb3VudCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZG1hX2NvdW50KHVuc2ln bmVkIGludCBkbWFuciwgdW5zaWduZWQgaW50IGNvdW50KQogewogCWNvdW50LS07CiAJaWYgKGRt YW5yIDw9IDMpIHsKQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNl dF9kbWFfY291bnQodW5zaWduZWQgaW50IGRtYW5yLCB1bnNpZ25lZCBpbnQgY291bnQpCiAgKgog ICogQXNzdW1lcyBETUEgZmxpcC1mbG9wIGlzIGNsZWFyLgogICovCi1zdGF0aWMgX19pbmxpbmVf XyBpbnQgZ2V0X2RtYV9yZXNpZHVlKHVuc2lnbmVkIGludCBkbWFucikKK3N0YXRpYyBpbmxpbmUg aW50IGdldF9kbWFfcmVzaWR1ZSh1bnNpZ25lZCBpbnQgZG1hbnIpCiB7CiAJdW5zaWduZWQgaW50 IGlvX3BvcnQgPSAoZG1hbnIgPD0gMykKIAkgICAgPyAoKGRtYW5yICYgMykgPDwgMSkgKyAxICsg SU9fRE1BMV9CQVNFCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZWRhYy5o IGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2VkYWMuaAppbmRleCA1NTcxZTIzZDI1M2UuLmYz MzFjN2Y4NTI1ZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2VkYWMuaAor KysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZWRhYy5oCkBAIC0xNiw3ICsxNiw3IEBACiAg KiBFQ0Mgc2NydWJiaW5nLiAgSXQgcmVhZHMgbWVtb3J5IGFuZCB0aGVuIHdyaXRlcyBiYWNrIHRo ZSBvcmlnaW5hbAogICogdmFsdWUsIGFsbG93aW5nIHRoZSBoYXJkd2FyZSB0byBkZXRlY3QgYW5k IGNvcnJlY3QgbWVtb3J5IGVycm9ycy4KICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBlZGFj X2F0b21pY19zY3J1Yih2b2lkICp2YSwgdTMyIHNpemUpCitzdGF0aWMgaW5saW5lIHZvaWQgZWRh Y19hdG9taWNfc2NydWIodm9pZCAqdmEsIHUzMiBzaXplKQogewogCXVuc2lnbmVkIGludCAqdmly dF9hZGRyID0gdmE7CiAJdW5zaWduZWQgaW50IHRlbXA7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2Vy cGMvaW5jbHVkZS9hc20vaXJxLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaXJxLmgKaW5k ZXggZWUzOWNlNTZiMmEyLi42NzZhN2U3YzY2ZTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9p bmNsdWRlL2FzbS9pcnEuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaXJxLmgKQEAg LTMxLDcgKzMxLDcgQEAgZXh0ZXJuIGF0b21pY190IHBwY19uX2xvc3RfaW50ZXJydXB0czsKIAog ZXh0ZXJuIGlycV9od19udW1iZXJfdCB2aXJxX3RvX2h3KHVuc2lnbmVkIGludCB2aXJxKTsKIAot c3RhdGljIF9faW5saW5lX18gaW50IGlycV9jYW5vbmljYWxpemUoaW50IGlycSkKK3N0YXRpYyBp bmxpbmUgaW50IGlycV9jYW5vbmljYWxpemUoaW50IGlycSkKIHsKIAlyZXR1cm4gaXJxOwogfQpk aWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2xvY2FsLmggYi9hcmNoL3Bvd2Vy cGMvaW5jbHVkZS9hc20vbG9jYWwuaAppbmRleCBmZGQwMDkzOTI3MGIuLjk1NzAyZTlkYzFkMCAx MDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2xvY2FsLmgKKysrIGIvYXJjaC9w b3dlcnBjL2luY2x1ZGUvYXNtL2xvY2FsLmgKQEAgLTE3LDE4ICsxNywxOCBAQCB0eXBlZGVmIHN0 cnVjdAogCiAjZGVmaW5lIExPQ0FMX0lOSVQoaSkJeyAoaSkgfQogCi1zdGF0aWMgX19pbmxpbmVf XyBsb25nIGxvY2FsX3JlYWQobG9jYWxfdCAqbCkKK3N0YXRpYyBpbmxpbmUgbG9uZyBsb2NhbF9y ZWFkKGxvY2FsX3QgKmwpCiB7CiAJcmV0dXJuIFJFQURfT05DRShsLT52KTsKIH0KIAotc3RhdGlj IF9faW5saW5lX18gdm9pZCBsb2NhbF9zZXQobG9jYWxfdCAqbCwgbG9uZyBpKQorc3RhdGljIGlu bGluZSB2b2lkIGxvY2FsX3NldChsb2NhbF90ICpsLCBsb25nIGkpCiB7CiAJV1JJVEVfT05DRShs LT52LCBpKTsKIH0KIAogI2RlZmluZSBMT0NBTF9PUChvcCwgY19vcCkJCQkJCQlcCi1zdGF0aWMg X19pbmxpbmVfXyB2b2lkIGxvY2FsXyMjb3AobG9uZyBpLCBsb2NhbF90ICpsKQkJCVwKK3N0YXRp YyBpbmxpbmUgdm9pZCBsb2NhbF8jI29wKGxvbmcgaSwgbG9jYWxfdCAqbCkJCQlcCiB7CQkJCQkJ CQkJXAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CQkJCQkJXAogCQkJCQkJCQkJXApAQCAtMzgsNyAr MzgsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxvY2FsXyMjb3AobG9uZyBpLCBsb2NhbF90 ICpsKQkJCVwKIH0KIAogI2RlZmluZSBMT0NBTF9PUF9SRVRVUk4ob3AsIGNfb3ApCQkJCQlcCi1z dGF0aWMgX19pbmxpbmVfXyBsb25nIGxvY2FsXyMjb3AjI19yZXR1cm4obG9uZyBhLCBsb2NhbF90 ICpsKQkJXAorc3RhdGljIGlubGluZSBsb25nIGxvY2FsXyMjb3AjI19yZXR1cm4obG9uZyBhLCBs b2NhbF90ICpsKQkJXAogewkJCQkJCQkJCVwKIAlsb25nIHQ7CQkJCQkJCQlcCiAJdW5zaWduZWQg bG9uZyBmbGFnczsJCQkJCQlcCkBAIC03Niw3ICs3Niw3IEBAIExPQ0FMX09QUyhzdWIsIC09KQog I2RlZmluZSBsb2NhbF9zdWJfYW5kX3Rlc3QoYSwgbCkJKGxvY2FsX3N1Yl9yZXR1cm4oKGEpLCAo bCkpID09IDApCiAjZGVmaW5lIGxvY2FsX2RlY19hbmRfdGVzdChsKQkJKGxvY2FsX2RlY19yZXR1 cm4oKGwpKSA9PSAwKQogCi1zdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvY2FsX2NtcHhjaGcobG9j YWxfdCAqbCwgbG9uZyBvLCBsb25nIG4pCitzdGF0aWMgaW5saW5lIGxvbmcgbG9jYWxfY21weGNo Zyhsb2NhbF90ICpsLCBsb25nIG8sIGxvbmcgbikKIHsKIAlsb25nIHQ7CiAJdW5zaWduZWQgbG9u ZyBmbGFnczsKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIF9faW5saW5lX18gbG9uZyBsb2NhbF9j bXB4Y2hnKGxvY2FsX3QgKmwsIGxvbmcgbywgbG9uZyBuKQogCXJldHVybiB0OwogfQogCi1zdGF0 aWMgX19pbmxpbmVfXyBsb25nIGxvY2FsX3hjaGcobG9jYWxfdCAqbCwgbG9uZyBuKQorc3RhdGlj IGlubGluZSBsb25nIGxvY2FsX3hjaGcobG9jYWxfdCAqbCwgbG9uZyBuKQogewogCWxvbmcgdDsK IAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBfX2lubGlu ZV9fIGxvbmcgbG9jYWxfeGNoZyhsb2NhbF90ICpsLCBsb25nIG4pCiAgKiBBdG9taWNhbGx5IGFk ZHMgQGEgdG8gQGwsIHNvIGxvbmcgYXMgaXQgd2FzIG5vdCBAdS4KICAqIFJldHVybnMgbm9uLXpl cm8gaWYgQGwgd2FzIG5vdCBAdSwgYW5kIHplcm8gb3RoZXJ3aXNlLgogICovCi1zdGF0aWMgX19p bmxpbmVfXyBpbnQgbG9jYWxfYWRkX3VubGVzcyhsb2NhbF90ICpsLCBsb25nIGEsIGxvbmcgdSkK K3N0YXRpYyBpbmxpbmUgaW50IGxvY2FsX2FkZF91bmxlc3MobG9jYWxfdCAqbCwgbG9uZyBhLCBs b25nIHUpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcmV0ID0gMDsKZGlmZiAtLWdp dCBhL2FyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV82NC5oIGIvYXJjaC9zaC9pbmNsdWRlL2Fz bS9wZ3RhYmxlXzY0LmgKaW5kZXggMDc0MjQ5NjhkZjYyLi4xMmNhMGQ5YmRlYmIgMTAwNjQ0Ci0t LSBhL2FyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV82NC5oCisrKyBiL2FyY2gvc2gvaW5jbHVk ZS9hc20vcGd0YWJsZV82NC5oCkBAIC0zMiw3ICszMiw3IEBACiAgKi8KICNkZWZpbmUgc2V0X3Bt ZChwbWRwdHIsIHBtZHZhbCkgKCoocG1kcHRyKSA9IHBtZHZhbCkKIAotc3RhdGljIF9faW5saW5l X18gdm9pZCBzZXRfcHRlKHB0ZV90ICpwdGVwdHIsIHB0ZV90IHB0ZXZhbCkKK3N0YXRpYyBpbmxp bmUgdm9pZCBzZXRfcHRlKHB0ZV90ICpwdGVwdHIsIHB0ZV90IHB0ZXZhbCkKIHsKIAl1bnNpZ25l ZCBsb25nIGxvbmcgeCA9ICgodW5zaWduZWQgbG9uZyBsb25nKSBwdGV2YWwucHRlX2xvdyk7CiAJ dW5zaWduZWQgbG9uZyBsb25nICp4cCA9ICh1bnNpZ25lZCBsb25nIGxvbmcgKikgcHRlcHRyOwpk aWZmIC0tZ2l0IGEvYXJjaC9zaC9pbmNsdWRlL2FzbS9wcm9jZXNzb3JfMzIuaCBiL2FyY2gvc2gv aW5jbHVkZS9hc20vcHJvY2Vzc29yXzMyLmgKaW5kZXggOTUxMDBkOGEwYjdiLi44N2FhOGNiMTZi NWEgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvaW5jbHVkZS9hc20vcHJvY2Vzc29yXzMyLmgKKysrIGIv YXJjaC9zaC9pbmNsdWRlL2FzbS9wcm9jZXNzb3JfMzIuaApAQCAtMTQxLDcgKzE0MSw3IEBAIGV4 dGVybiB2b2lkIHJlbGVhc2VfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKICAqIEZQVSBs YXp5IHN0YXRlIHNhdmUgaGFuZGxpbmcuCiAgKi8KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBk aXNhYmxlX2ZwdSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkIGRpc2FibGVfZnB1KHZvaWQpCiB7 CiAJdW5zaWduZWQgbG9uZyBfX2R1bW15OwogCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIF9f aW5saW5lX18gdm9pZCBkaXNhYmxlX2ZwdSh2b2lkKQogCQkJICAgICA6ICJyIiAoU1JfRkQpKTsK IH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBlbmFibGVfZnB1KHZvaWQpCitzdGF0aWMgaW5s aW5lIHZvaWQgZW5hYmxlX2ZwdSh2b2lkKQogewogCXVuc2lnbmVkIGxvbmcgX19kdW1teTsKIApk aWZmIC0tZ2l0IGEvYXJjaC9zaC9pbmNsdWRlL2NwdS1zaDMvY3B1L2RhYy5oIGIvYXJjaC9zaC9p bmNsdWRlL2NwdS1zaDMvY3B1L2RhYy5oCmluZGV4IGZkMDIzMzE2MDhhOC4uNjdhZTFhZTAzYzQ3 IDEwMDY0NAotLS0gYS9hcmNoL3NoL2luY2x1ZGUvY3B1LXNoMy9jcHUvZGFjLmgKKysrIGIvYXJj aC9zaC9pbmNsdWRlL2NwdS1zaDMvY3B1L2RhYy5oCkBAIC0xNSw3ICsxNSw3IEBACiAjZGVmaW5l IERBQ1JfREFFCTB4MjAKIAogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNoX2RhY19lbmFibGUo aW50IGNoYW5uZWwpCitzdGF0aWMgaW5saW5lIHZvaWQgc2hfZGFjX2VuYWJsZShpbnQgY2hhbm5l bCkKIHsKIAl1bnNpZ25lZCBjaGFyIHY7CiAJdiA9IF9fcmF3X3JlYWRiKERBQ1IpOwpAQCAtMjQs NyArMjQsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNoX2RhY19lbmFibGUoaW50IGNoYW5u ZWwpCiAJX19yYXdfd3JpdGViKHYsREFDUik7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQg c2hfZGFjX2Rpc2FibGUoaW50IGNoYW5uZWwpCitzdGF0aWMgaW5saW5lIHZvaWQgc2hfZGFjX2Rp c2FibGUoaW50IGNoYW5uZWwpCiB7CiAJdW5zaWduZWQgY2hhciB2OwogCXYgPSBfX3Jhd19yZWFk YihEQUNSKTsKQEAgLTMzLDcgKzMzLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBzaF9kYWNf ZGlzYWJsZShpbnQgY2hhbm5lbCkKIAlfX3Jhd193cml0ZWIodixEQUNSKTsKIH0KIAotc3RhdGlj IF9faW5saW5lX18gdm9pZCBzaF9kYWNfb3V0cHV0KHU4IHZhbHVlLCBpbnQgY2hhbm5lbCkKK3N0 YXRpYyBpbmxpbmUgdm9pZCBzaF9kYWNfb3V0cHV0KHU4IHZhbHVlLCBpbnQgY2hhbm5lbCkKIHsK IAlpZihjaGFubmVsKSBfX3Jhd193cml0ZWIodmFsdWUsREFEUjEpOwogCWVsc2UgX19yYXdfd3Jp dGViKHZhbHVlLERBRFIwKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVy bmF0aXZlLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hbHRlcm5hdGl2ZS5oCmluZGV4IGQ3ZmFh MTY2MjJkOC4uOGViMTYwYmIwOGViIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9h bHRlcm5hdGl2ZS5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgKQEAg LTE1OSwxMCArMTU5LDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGFsdGVybmF0aXZlc190ZXh0X3Jl c2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpCiAgKiB3aXRob3V0IHZvbGF0aWxlIGFuZCBt ZW1vcnkgY2xvYmJlci4KICAqLwogI2RlZmluZSBhbHRlcm5hdGl2ZShvbGRpbnN0ciwgbmV3aW5z dHIsIGZlYXR1cmUpCQkJXAotCWFzbSB2b2xhdGlsZSAoQUxURVJOQVRJVkUob2xkaW5zdHIsIG5l d2luc3RyLCBmZWF0dXJlKSA6IDogOiAibWVtb3J5IikKKwlhc21fdm9sYXRpbGUgKEFMVEVSTkFU SVZFKG9sZGluc3RyLCBuZXdpbnN0ciwgZmVhdHVyZSkgOiA6IDogIm1lbW9yeSIpCiAKICNkZWZp bmUgYWx0ZXJuYXRpdmVfMihvbGRpbnN0ciwgbmV3aW5zdHIxLCBmZWF0dXJlMSwgbmV3aW5zdHIy LCBmZWF0dXJlMikgXAotCWFzbSB2b2xhdGlsZShBTFRFUk5BVElWRV8yKG9sZGluc3RyLCBuZXdp bnN0cjEsIGZlYXR1cmUxLCBuZXdpbnN0cjIsIGZlYXR1cmUyKSA6OjogIm1lbW9yeSIpCisJYXNt X3ZvbGF0aWxlKEFMVEVSTkFUSVZFXzIob2xkaW5zdHIsIG5ld2luc3RyMSwgZmVhdHVyZTEsIG5l d2luc3RyMiwgZmVhdHVyZTIpIDo6OiAibWVtb3J5IikKIAogLyoKICAqIEFsdGVybmF0aXZlIGlu bGluZSBhc3NlbWJseSB3aXRoIGlucHV0LgpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBpbmxp bmUgaW50IGFsdGVybmF0aXZlc190ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQp CiAgKiBMZWF2aW5nIGFuIHVudXNlZCBhcmd1bWVudCAwIHRvIGtlZXAgQVBJIGNvbXBhdGliaWxp dHkuCiAgKi8KICNkZWZpbmUgYWx0ZXJuYXRpdmVfaW5wdXQob2xkaW5zdHIsIG5ld2luc3RyLCBm ZWF0dXJlLCBpbnB1dC4uLikJXAotCWFzbSB2b2xhdGlsZSAoQUxURVJOQVRJVkUob2xkaW5zdHIs IG5ld2luc3RyLCBmZWF0dXJlKQkJXAorCWFzbV92b2xhdGlsZSAoQUxURVJOQVRJVkUob2xkaW5z dHIsIG5ld2luc3RyLCBmZWF0dXJlKQkJXAogCQk6IDogImkiICgwKSwgIyMgaW5wdXQpCiAKIC8q CkBAIC0xODksMTggKzE4OSwxOCBAQCBzdGF0aWMgaW5saW5lIGludCBhbHRlcm5hdGl2ZXNfdGV4 dF9yZXNlcnZlZCh2b2lkICpzdGFydCwgdm9pZCAqZW5kKQogICovCiAjZGVmaW5lIGFsdGVybmF0 aXZlX2lucHV0XzIob2xkaW5zdHIsIG5ld2luc3RyMSwgZmVhdHVyZTEsIG5ld2luc3RyMiwJICAg ICBcCiAJCQkgICBmZWF0dXJlMiwgaW5wdXQuLi4pCQkJCSAgICAgXAotCWFzbSB2b2xhdGlsZShB TFRFUk5BVElWRV8yKG9sZGluc3RyLCBuZXdpbnN0cjEsIGZlYXR1cmUxLAkgICAgIFwKKwlhc21f dm9sYXRpbGUoQUxURVJOQVRJVkVfMihvbGRpbnN0ciwgbmV3aW5zdHIxLCBmZWF0dXJlMSwJICAg ICBcCiAJCW5ld2luc3RyMiwgZmVhdHVyZTIpCQkJCQkgICAgIFwKIAkJOiA6ICJpIiAoMCksICMj IGlucHV0KQogCiAvKiBMaWtlIGFsdGVybmF0aXZlX2lucHV0LCBidXQgd2l0aCBhIHNpbmdsZSBv dXRwdXQgYXJndW1lbnQgKi8KICNkZWZpbmUgYWx0ZXJuYXRpdmVfaW8ob2xkaW5zdHIsIG5ld2lu c3RyLCBmZWF0dXJlLCBvdXRwdXQsIGlucHV0Li4uKQlcCi0JYXNtIHZvbGF0aWxlIChBTFRFUk5B VElWRShvbGRpbnN0ciwgbmV3aW5zdHIsIGZlYXR1cmUpCQlcCisJYXNtX3ZvbGF0aWxlIChBTFRF Uk5BVElWRShvbGRpbnN0ciwgbmV3aW5zdHIsIGZlYXR1cmUpCQlcCiAJCTogb3V0cHV0IDogImki ICgwKSwgIyMgaW5wdXQpCiAKIC8qIExpa2UgYWx0ZXJuYXRpdmVfaW8sIGJ1dCBmb3IgcmVwbGFj aW5nIGEgZGlyZWN0IGNhbGwgd2l0aCBhbm90aGVyIG9uZS4gKi8KICNkZWZpbmUgYWx0ZXJuYXRp dmVfY2FsbChvbGRmdW5jLCBuZXdmdW5jLCBmZWF0dXJlLCBvdXRwdXQsIGlucHV0Li4uKQlcCi0J YXNtIHZvbGF0aWxlIChBTFRFUk5BVElWRSgiY2FsbCAlUFtvbGRdIiwgImNhbGwgJVBbbmV3XSIs IGZlYXR1cmUpIFwKKwlhc21fdm9sYXRpbGUgKEFMVEVSTkFUSVZFKCJjYWxsICVQW29sZF0iLCAi Y2FsbCAlUFtuZXddIiwgZmVhdHVyZSkgXAogCQk6IG91dHB1dCA6IFtvbGRdICJpIiAob2xkZnVu YyksIFtuZXddICJpIiAobmV3ZnVuYyksICMjIGlucHV0KQogCiAvKgpAQCAtMjExLDcgKzIxMSw3 IEBAIHN0YXRpYyBpbmxpbmUgaW50IGFsdGVybmF0aXZlc190ZXh0X3Jlc2VydmVkKHZvaWQgKnN0 YXJ0LCB2b2lkICplbmQpCiAgKi8KICNkZWZpbmUgYWx0ZXJuYXRpdmVfY2FsbF8yKG9sZGZ1bmMs IG5ld2Z1bmMxLCBmZWF0dXJlMSwgbmV3ZnVuYzIsIGZlYXR1cmUyLCAgIFwKIAkJCSAgIG91dHB1 dCwgaW5wdXQuLi4pCQkJCSAgICAgIFwKLQlhc20gdm9sYXRpbGUgKEFMVEVSTkFUSVZFXzIoImNh bGwgJVBbb2xkXSIsICJjYWxsICVQW25ldzFdIiwgZmVhdHVyZTEsXAorCWFzbV92b2xhdGlsZSAo QUxURVJOQVRJVkVfMigiY2FsbCAlUFtvbGRdIiwgImNhbGwgJVBbbmV3MV0iLCBmZWF0dXJlMSxc CiAJCSJjYWxsICVQW25ldzJdIiwgZmVhdHVyZTIpCQkJCSAgICAgIFwKIAkJOiBvdXRwdXQsIEFT TV9DQUxMX0NPTlNUUkFJTlQJCQkJICAgICAgXAogCQk6IFtvbGRdICJpIiAob2xkZnVuYyksIFtu ZXcxXSAiaSIgKG5ld2Z1bmMxKSwJCSAgICAgIFwKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3VtL2Fz bS9jaGVja3N1bS5oIGIvYXJjaC94ODYvdW0vYXNtL2NoZWNrc3VtLmgKaW5kZXggMmE1NmNhYzY0 Njg3Li44ZjFjN2YzMmQ0MjAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3VtL2FzbS9jaGVja3N1bS5o CisrKyBiL2FyY2gveDg2L3VtL2FzbS9jaGVja3N1bS5oCkBAIC0yOCw3ICsyOCw3IEBAIGV4dGVy biBfX3dzdW0gY3N1bV9wYXJ0aWFsKGNvbnN0IHZvaWQgKmJ1ZmYsIGludCBsZW4sIF9fd3N1bSBz dW0pOwogICoJYWNjZXNzX29rKCkuCiAgKi8KIAotc3RhdGljIF9faW5saW5lX18KK3N0YXRpYyBp bmxpbmUKIF9fd3N1bSBjc3VtX3BhcnRpYWxfY29weV9ub2NoZWNrKGNvbnN0IHZvaWQgKnNyYywg dm9pZCAqZHN0LAogCQkJCSAgICAgICBpbnQgbGVuLCBfX3dzdW0gc3VtKQogewpAQCAtNDQsNyAr NDQsNyBAQCBfX3dzdW0gY3N1bV9wYXJ0aWFsX2NvcHlfbm9jaGVjayhjb25zdCB2b2lkICpzcmMs IHZvaWQgKmRzdCwKICAqIGJldHRlciA2NC1iaXQpIGJvdW5kYXJ5CiAgKi8KIAotc3RhdGljIF9f aW5saW5lX18KK3N0YXRpYyBpbmxpbmUKIF9fd3N1bSBjc3VtX3BhcnRpYWxfY29weV9mcm9tX3Vz ZXIoY29uc3Qgdm9pZCBfX3VzZXIgKnNyYywgdm9pZCAqZHN0LAogCQkJCQkgaW50IGxlbiwgX193 c3VtIHN1bSwgaW50ICplcnJfcHRyKQogewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvdW0vYXNtL2No ZWNrc3VtXzMyLmggYi9hcmNoL3g4Ni91bS9hc20vY2hlY2tzdW1fMzIuaAppbmRleCA4M2E3NWY4 YTEyMzMuLjgzNjRhZjMwOWI4NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvdW0vYXNtL2NoZWNrc3Vt XzMyLmgKKysrIGIvYXJjaC94ODYvdW0vYXNtL2NoZWNrc3VtXzMyLmgKQEAgLTExLDcgKzExLDcg QEAgc3RhdGljIGlubGluZSBfX3N1bTE2IGlwX2NvbXB1dGVfY3N1bShjb25zdCB2b2lkICpidWZm LCBpbnQgbGVuKQogfQogCiAjZGVmaW5lIF9IQVZFX0FSQ0hfSVBWNl9DU1VNCi1zdGF0aWMgX19p bmxpbmVfXyBfX3N1bTE2IGNzdW1faXB2Nl9tYWdpYyhjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNh ZGRyLAorc3RhdGljIGlubGluZSBfX3N1bTE2IGNzdW1faXB2Nl9tYWdpYyhjb25zdCBzdHJ1Y3Qg aW42X2FkZHIgKnNhZGRyLAogCQkJCQkgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIsCiAJ CQkJCSAgX191MzIgbGVuLCBfX3U4IHByb3RvLAogCQkJCQkgIF9fd3N1bSBzdW0pCkBAIC0zOSw3 ICszOSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIF9fc3VtMTYgY3N1bV9pcHY2X21hZ2ljKGNvbnN0 IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsCiAgKglDb3B5IGFuZCBjaGVja3N1bSB0byB1c2VyCiAg Ki8KICNkZWZpbmUgSEFWRV9DU1VNX0NPUFlfVVNFUgotc3RhdGljIF9faW5saW5lX18gX193c3Vt IGNzdW1fYW5kX2NvcHlfdG9fdXNlcihjb25zdCB2b2lkICpzcmMsCitzdGF0aWMgaW5saW5lIF9f d3N1bSBjc3VtX2FuZF9jb3B5X3RvX3VzZXIoY29uc3Qgdm9pZCAqc3JjLAogCQkJCQkJICAgICB2 b2lkIF9fdXNlciAqZHN0LAogCQkJCQkJICAgICBpbnQgbGVuLCBfX3dzdW0gc3VtLCBpbnQgKmVy cl9wdHIpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9jaGVja3N1bS5o IGIvYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vY2hlY2tzdW0uaAppbmRleCAzYWU3NGQ3ZTA3NGIu LjRlZWIzNmQyMDgyYyAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vY2hlY2tz dW0uaAorKysgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9jaGVja3N1bS5oCkBAIC02Niw3ICs2 Niw3IEBAIF9fd3N1bSBjc3VtX3BhcnRpYWxfY29weV9mcm9tX3VzZXIoY29uc3Qgdm9pZCBfX3Vz ZXIgKnNyYywgdm9pZCAqZHN0LAogICoJRm9sZCBhIHBhcnRpYWwgY2hlY2tzdW0KICAqLwogCi1z dGF0aWMgX19pbmxpbmVfXyBfX3N1bTE2IGNzdW1fZm9sZChfX3dzdW0gc3VtKQorc3RhdGljIGlu bGluZSBfX3N1bTE2IGNzdW1fZm9sZChfX3dzdW0gc3VtKQogewogCXVuc2lnbmVkIGludCBfX2R1 bW15OwogCV9fYXNtX18oImV4dHVpCSUxLCAlMCwgMTYsIDE2XG5cdCIKQEAgLTg3LDcgKzg3LDcg QEAgc3RhdGljIF9faW5saW5lX18gX19zdW0xNiBjc3VtX2ZvbGQoX193c3VtIHN1bSkKICAqCVRo aXMgaXMgYSB2ZXJzaW9uIG9mIGlwX2NvbXB1dGVfY3N1bSgpIG9wdGltaXplZCBmb3IgSVAgaGVh ZGVycywKICAqCXdoaWNoIGFsd2F5cyBjaGVja3N1bSBvbiA0IG9jdGV0IGJvdW5kYXJpZXMuCiAg Ki8KLXN0YXRpYyBfX2lubGluZV9fIF9fc3VtMTYgaXBfZmFzdF9jc3VtKGNvbnN0IHZvaWQgKmlw aCwgdW5zaWduZWQgaW50IGlobCkKK3N0YXRpYyBpbmxpbmUgX19zdW0xNiBpcF9mYXN0X2NzdW0o Y29uc3Qgdm9pZCAqaXBoLCB1bnNpZ25lZCBpbnQgaWhsKQogewogCXVuc2lnbmVkIGludCBzdW0s IHRtcCwgZW5kYWRkcjsKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIF9f c3VtMTYgaXBfZmFzdF9jc3VtKGNvbnN0IHZvaWQgKmlwaCwgdW5zaWduZWQgaW50IGlobCkKIAly ZXR1cm4JY3N1bV9mb2xkKHN1bSk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIF9fd3N1bSBjc3Vt X3RjcHVkcF9ub2ZvbGQoX19iZTMyIHNhZGRyLCBfX2JlMzIgZGFkZHIsCitzdGF0aWMgaW5saW5l IF9fd3N1bSBjc3VtX3RjcHVkcF9ub2ZvbGQoX19iZTMyIHNhZGRyLCBfX2JlMzIgZGFkZHIsCiAJ CQkJCSAgICBfX3UzMiBsZW4sIF9fdTggcHJvdG8sCiAJCQkJCSAgICBfX3dzdW0gc3VtKQogewpA QCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIF9fd3N1bSBjc3VtX3RjcHVkcF9u b2ZvbGQoX19iZTMyIHNhZGRyLCBfX2JlMzIgZGFkZHIsCiAgKiBjb21wdXRlcyB0aGUgY2hlY2tz dW0gb2YgdGhlIFRDUC9VRFAgcHNldWRvLWhlYWRlcgogICogcmV0dXJucyBhIDE2LWJpdCBjaGVj a3N1bSwgYWxyZWFkeSBjb21wbGVtZW50ZWQKICAqLwotc3RhdGljIF9faW5saW5lX18gX19zdW0x NiBjc3VtX3RjcHVkcF9tYWdpYyhfX2JlMzIgc2FkZHIsIF9fYmUzMiBkYWRkciwKK3N0YXRpYyBp bmxpbmUgX19zdW0xNiBjc3VtX3RjcHVkcF9tYWdpYyhfX2JlMzIgc2FkZHIsIF9fYmUzMiBkYWRk ciwKIAkJCQkJICAgIF9fdTMyIGxlbiwgX191OCBwcm90bywKIAkJCQkJICAgIF9fd3N1bSBzdW0p CiB7CkBAIC0xNjcsMTMgKzE2NywxMyBAQCBzdGF0aWMgX19pbmxpbmVfXyBfX3N1bTE2IGNzdW1f dGNwdWRwX21hZ2ljKF9fYmUzMiBzYWRkciwgX19iZTMyIGRhZGRyLAogICogaW4gaWNtcC5jCiAg Ki8KIAotc3RhdGljIF9faW5saW5lX18gX19zdW0xNiBpcF9jb21wdXRlX2NzdW0oY29uc3Qgdm9p ZCAqYnVmZiwgaW50IGxlbikKK3N0YXRpYyBpbmxpbmUgX19zdW0xNiBpcF9jb21wdXRlX2NzdW0o Y29uc3Qgdm9pZCAqYnVmZiwgaW50IGxlbikKIHsKIAlyZXR1cm4gY3N1bV9mb2xkIChjc3VtX3Bh cnRpYWwoYnVmZiwgbGVuLCAwKSk7CiB9CiAKICNkZWZpbmUgX0hBVkVfQVJDSF9JUFY2X0NTVU0K LXN0YXRpYyBfX2lubGluZV9fIF9fc3VtMTYgY3N1bV9pcHY2X21hZ2ljKGNvbnN0IHN0cnVjdCBp bjZfYWRkciAqc2FkZHIsCitzdGF0aWMgaW5saW5lIF9fc3VtMTYgY3N1bV9pcHY2X21hZ2ljKGNv bnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsCiAJCQkJCSAgY29uc3Qgc3RydWN0IGluNl9hZGRy ICpkYWRkciwKIAkJCQkJICBfX3UzMiBsZW4sIF9fdTggcHJvdG8sCiAJCQkJCSAgX193c3VtIHN1 bSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBfX3N1bTE2IGNzdW1faXB2 Nl9tYWdpYyhjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyLAogICoJQ29weSBhbmQgY2hlY2tz dW0gdG8gdXNlcgogICovCiAjZGVmaW5lIEhBVkVfQ1NVTV9DT1BZX1VTRVIKLXN0YXRpYyBfX2lu bGluZV9fIF9fd3N1bSBjc3VtX2FuZF9jb3B5X3RvX3VzZXIoY29uc3Qgdm9pZCAqc3JjLAorc3Rh dGljIGlubGluZSBfX3dzdW0gY3N1bV9hbmRfY29weV90b191c2VyKGNvbnN0IHZvaWQgKnNyYywK IAkJCQkJICAgICAgIHZvaWQgX191c2VyICpkc3QsIGludCBsZW4sCiAJCQkJCSAgICAgICBfX3dz dW0gc3VtLCBpbnQgKmVycl9wdHIpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9pbmNsdWRl L2FzbS9jbXB4Y2hnLmggYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgKaW5kZXgg MjAxZTkwMDllZmQ4Li4xNWQ2MmMxNmRlN2EgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2luY2x1 ZGUvYXNtL2NtcHhjaGcuaAorKysgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgK QEAgLTUyLDcgKzUyLDcgQEAgX19jbXB4Y2hnX3UzMih2b2xhdGlsZSBpbnQgKnAsIGludCBvbGQs IGludCBuZXcpCiAKIGV4dGVybiB2b2lkIF9fY21weGNoZ19jYWxsZWRfd2l0aF9iYWRfcG9pbnRl cih2b2lkKTsKIAotc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZworc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBsb25nCiBfX2NtcHhjaGcodm9sYXRpbGUgdm9pZCAqcHRyLCB1bnNpZ25lZCBs b25nIG9sZCwgdW5zaWduZWQgbG9uZyBuZXcsIGludCBzaXplKQogewogCXN3aXRjaCAoc2l6ZSkg ewpAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB4Y2hnX3Uz Mih2b2xhdGlsZSBpbnQgKiBtLCB1bnNpZ25lZCBsb25nIHZhbCkKIAogZXh0ZXJuIHZvaWQgX194 Y2hnX2NhbGxlZF93aXRoX2JhZF9wb2ludGVyKHZvaWQpOwogCi1zdGF0aWMgX19pbmxpbmVfXyB1 bnNpZ25lZCBsb25nCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIF9feGNoZyh1bnNpZ25l ZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQgKiBwdHIsIGludCBzaXplKQogewogCXN3aXRjaCAoc2l6 ZSkgewpkaWZmIC0tZ2l0IGEvYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vaXJxLmggYi9hcmNoL3h0 ZW5zYS9pbmNsdWRlL2FzbS9pcnEuaAppbmRleCA2YzZlZDIzZTBjNzkuLmFlNTNlNTk5MjU1ZiAx MDA2NDQKLS0tIGEvYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vaXJxLmgKKysrIGIvYXJjaC94dGVu c2EvaW5jbHVkZS9hc20vaXJxLmgKQEAgLTIzLDcgKzIzLDcgQEAKICNkZWZpbmUgTlJfSVJRUyAo WFRFTlNBX05SX0lSUVMgKyBQTEFURk9STV9OUl9JUlFTICsgMSkKICNkZWZpbmUgWFRFTlNBX1BJ Q19MSU5VWF9JUlEoaHdpcnEpICgoaHdpcnEpICsgMSkKIAotc3RhdGljIF9faW5saW5lX18gaW50 IGlycV9jYW5vbmljYWxpemUoaW50IGlycSkKK3N0YXRpYyBpbmxpbmUgaW50IGlycV9jYW5vbmlj YWxpemUoaW50IGlycSkKIHsKIAlyZXR1cm4gKGlycSk7CiB9CmRpZmYgLS1naXQgYS9ibG9jay9w YXJ0aXRpb25zL2FtaWdhLmMgYi9ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMKaW5kZXggNTYwOTM2 NjE3ZDljLi43NDM0YjBhMGY4NmMgMTAwNjQ0Ci0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvYW1pZ2Eu YworKysgYi9ibG9jay9wYXJ0aXRpb25zL2FtaWdhLmMKQEAgLTE2LDcgKzE2LDcgQEAKICNpbmNs dWRlICJjaGVjay5oIgogI2luY2x1ZGUgImFtaWdhLmgiCiAKLXN0YXRpYyBfX2lubGluZV9fIHUz Mgorc3RhdGljIGlubGluZSB1MzIKIGNoZWNrc3VtX2Jsb2NrKF9fYmUzMiAqbSwgaW50IHNpemUp CiB7CiAJdTMyIHN1bSA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9oZS5jIGIvZHJpdmVy cy9hdG0vaGUuYwppbmRleCAyOWYxMDJkY2ZlYzQuLmFiYjY0MTVmOTU2NSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9hdG0vaGUuYworKysgYi9kcml2ZXJzL2F0bS9oZS5jCkBAIC0xNzgsNyArMTc4LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdG1kZXZfb3BzIGhlX29wcyA9CiAKIC8qIHNlY3Rpb24g Mi4xMiBjb25uZWN0aW9uIG1lbW9yeSBhY2Nlc3MgKi8KIAotc3RhdGljIF9faW5saW5lX18gdm9p ZAorc3RhdGljIGlubGluZSB2b2lkCiBoZV93cml0ZWxfaW50ZXJuYWwoc3RydWN0IGhlX2RldiAq aGVfZGV2LCB1bnNpZ25lZCB2YWwsIHVuc2lnbmVkIGFkZHIsCiAJCQkJCQkJCXVuc2lnbmVkIGZs YWdzKQogewpAQCAtMzI0LDcgKzMyNCw3IEBAIGhlX3JlYWRsX2ludGVybmFsKHN0cnVjdCBoZV9k ZXYgKmhlX2RldiwgdW5zaWduZWQgYWRkciwgdW5zaWduZWQgZmxhZ3MpCiAjZGVmaW5lIGhlX3dy aXRlbF9yc3I3KGRldiwgdmFsLCBjaWQpIFwKIAkJaGVfd3JpdGVsX3JjbShkZXYsIHZhbCwgMHgw MDAwMCB8IChjaWQgPDwgMykgfCA3KQogCi1zdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgYXRtX3Zj YyoKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGF0bV92Y2MqCiBfX2ZpbmRfdmNjKHN0cnVjdCBoZV9k ZXYgKmhlX2RldiwgdW5zaWduZWQgY2lkKQogewogCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkOwpA QCAtMjA1MCw3ICsyMDUwLDcgQEAgaGVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lk KQogCiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQKK3N0YXRpYyBpbmxpbmUgdm9pZAogX19l bnF1ZXVlX3RwZChzdHJ1Y3QgaGVfZGV2ICpoZV9kZXYsIHN0cnVjdCBoZV90cGQgKnRwZCwgdW5z aWduZWQgY2lkKQogewogCXN0cnVjdCBoZV90cGRycSAqbmV3X3RhaWw7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2F0bS9pZHQ3NzI1Mi5jIGIvZHJpdmVycy9hdG0vaWR0NzcyNTIuYwppbmRleCA2ZTcz NzE0MmNlYWEuLjIyNmE2NWEwM2I3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vaWR0NzcyNTIu YworKysgYi9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5jCkBAIC0xNzgzLDEzICsxNzgzLDEzIEBAIHNl dF90Y3Qoc3RydWN0IGlkdDc3MjUyX2RldiAqY2FyZCwgc3RydWN0IHZjX21hcCAqdmMpCiAvKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyBfX2lu bGluZV9fIGludAorc3RhdGljIGlubGluZSBpbnQKIGlkdDc3MjUyX2ZicV9sZXZlbChzdHJ1Y3Qg aWR0NzcyNTJfZGV2ICpjYXJkLCBpbnQgcXVldWUpCiB7CiAJcmV0dXJuIChyZWFkbChTQVJfUkVH X1NUQVQpID4+ICgxNiArIChxdWV1ZSA8PCAyKSkpICYgMHgwZjsKIH0KIAotc3RhdGljIF9faW5s aW5lX18gaW50CitzdGF0aWMgaW5saW5lIGludAogaWR0NzcyNTJfZmJxX2Z1bGwoc3RydWN0IGlk dDc3MjUyX2RldiAqY2FyZCwgaW50IHF1ZXVlKQogewogCXJldHVybiAocmVhZGwoU0FSX1JFR19T VEFUKSA+PiAoMTYgKyAocXVldWUgPDwgMikpKSA9PSAweDBmOwpAQCAtMjAxNiw3ICsyMDE2LDcg QEAgaWR0NzcyNTJfc2VuZF9vYW0oc3RydWN0IGF0bV92Y2MgKnZjYywgdm9pZCAqY2VsbCwgaW50 IGZsYWdzKQogCXJldHVybiBpZHQ3NzI1Ml9zZW5kX3NrYih2Y2MsIHNrYiwgMSk7CiB9CiAKLXN0 YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQK IGlkdDc3MjUyX2Zscyh1bnNpZ25lZCBpbnQgeCkKIHsKIAlpbnQgciA9IDE7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWdhL21nYV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdh X2Rydi5oCmluZGV4IGE0NWJiMjIyNzVhNy4uYTRiYjRlYWQ2NzdmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbWdhL21nYV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhL21nYV9k cnYuaApAQCAtNjYxLDcgKzY2MSw3IEBAIGRvIHsJCQkJCQkJCQlcCiAKIC8qIFNpbXBsZSBpZGxl IHRlc3QuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIGludCBtZ2FfaXNfaWRsZShkcm1fbWdhX3By aXZhdGVfdCAqZGV2X3ByaXYpCitzdGF0aWMgaW5saW5lIGludCBtZ2FfaXNfaWRsZShkcm1fbWdh X3ByaXZhdGVfdCAqZGV2X3ByaXYpCiB7CiAJdTMyIHN0YXR1cyA9IE1HQV9SRUFEKE1HQV9TVEFU VVMpICYgTUdBX0VOR0lORV9JRExFX01BU0s7CiAJcmV0dXJuIChzdGF0dXMgPT0gTUdBX0VORFBS RE1BU1RTKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX3N0YXRlLmMgYi9k cml2ZXJzL2dwdS9kcm0vbWdhL21nYV9zdGF0ZS5jCmluZGV4IGU1ZjZiNzM1ZjU3NS4uNjdmMjYx YzU5MTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhL21nYV9zdGF0ZS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX3N0YXRlLmMKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGlj IHZvaWQgbWdhX2VtaXRfY2xpcF9yZWN0KGRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdiwKIAlB RFZBTkNFX0RNQSgpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIG1nYV9nMjAwX2VtaXRf Y29udGV4dChkcm1fbWdhX3ByaXZhdGVfdCAqZGV2X3ByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQg bWdhX2cyMDBfZW1pdF9jb250ZXh0KGRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdikKIHsKIAlk cm1fbWdhX3NhcmVhX3QgKnNhcmVhX3ByaXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJpdjsKIAlkcm1f bWdhX2NvbnRleHRfcmVnc190ICpjdHggPSAmc2FyZWFfcHJpdi0+Y29udGV4dF9zdGF0ZTsKQEAg LTg4LDcgKzg4LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBtZ2FfZzIwMF9lbWl0X2NvbnRl eHQoZHJtX21nYV9wcml2YXRlX3QgKmRldl9wcml2KQogCUFEVkFOQ0VfRE1BKCk7CiB9CiAKLXN0 YXRpYyBfX2lubGluZV9fIHZvaWQgbWdhX2c0MDBfZW1pdF9jb250ZXh0KGRybV9tZ2FfcHJpdmF0 ZV90ICpkZXZfcHJpdikKK3N0YXRpYyBpbmxpbmUgdm9pZCBtZ2FfZzQwMF9lbWl0X2NvbnRleHQo ZHJtX21nYV9wcml2YXRlX3QgKmRldl9wcml2KQogewogCWRybV9tZ2Ffc2FyZWFfdCAqc2FyZWFf cHJpdiA9IGRldl9wcml2LT5zYXJlYV9wcml2OwogCWRybV9tZ2FfY29udGV4dF9yZWdzX3QgKmN0 eCA9ICZzYXJlYV9wcml2LT5jb250ZXh0X3N0YXRlOwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRp YyBfX2lubGluZV9fIHZvaWQgbWdhX2c0MDBfZW1pdF9jb250ZXh0KGRybV9tZ2FfcHJpdmF0ZV90 ICpkZXZfcHJpdikKIAlBRFZBTkNFX0RNQSgpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lk IG1nYV9nMjAwX2VtaXRfdGV4MChkcm1fbWdhX3ByaXZhdGVfdCAqZGV2X3ByaXYpCitzdGF0aWMg aW5saW5lIHZvaWQgbWdhX2cyMDBfZW1pdF90ZXgwKGRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJp dikKIHsKIAlkcm1fbWdhX3NhcmVhX3QgKnNhcmVhX3ByaXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJp djsKIAlkcm1fbWdhX3RleHR1cmVfcmVnc190ICp0ZXggPSAmc2FyZWFfcHJpdi0+dGV4X3N0YXRl WzBdOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgbWdhX2cyMDBf ZW1pdF90ZXgwKGRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdikKIAlBRFZBTkNFX0RNQSgpOwog fQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIG1nYV9nNDAwX2VtaXRfdGV4MChkcm1fbWdhX3By aXZhdGVfdCAqZGV2X3ByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQgbWdhX2c0MDBfZW1pdF90ZXgw KGRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdikKIHsKIAlkcm1fbWdhX3NhcmVhX3QgKnNhcmVh X3ByaXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJpdjsKIAlkcm1fbWdhX3RleHR1cmVfcmVnc190ICp0 ZXggPSAmc2FyZWFfcHJpdi0+dGV4X3N0YXRlWzBdOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRp YyBfX2lubGluZV9fIHZvaWQgbWdhX2c0MDBfZW1pdF90ZXgwKGRybV9tZ2FfcHJpdmF0ZV90ICpk ZXZfcHJpdikKIAlBRFZBTkNFX0RNQSgpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIG1n YV9nNDAwX2VtaXRfdGV4MShkcm1fbWdhX3ByaXZhdGVfdCAqZGV2X3ByaXYpCitzdGF0aWMgaW5s aW5lIHZvaWQgbWdhX2c0MDBfZW1pdF90ZXgxKGRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdikK IHsKIAlkcm1fbWdhX3NhcmVhX3QgKnNhcmVhX3ByaXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJpdjsK IAlkcm1fbWdhX3RleHR1cmVfcmVnc190ICp0ZXggPSAmc2FyZWFfcHJpdi0+dGV4X3N0YXRlWzFd OwpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgbWdhX2c0MDBfZW1p dF90ZXgxKGRybV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdikKIAlBRFZBTkNFX0RNQSgpOwogfQog Ci1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIG1nYV9nMjAwX2VtaXRfcGlwZShkcm1fbWdhX3ByaXZh dGVfdCAqZGV2X3ByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQgbWdhX2cyMDBfZW1pdF9waXBlKGRy bV9tZ2FfcHJpdmF0ZV90ICpkZXZfcHJpdikKIHsKIAlkcm1fbWdhX3NhcmVhX3QgKnNhcmVhX3By aXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJpdjsKIAl1bnNpZ25lZCBpbnQgcGlwZSA9IHNhcmVhX3By aXYtPndhcnBfcGlwZTsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lk IG1nYV9nMjAwX2VtaXRfcGlwZShkcm1fbWdhX3ByaXZhdGVfdCAqZGV2X3ByaXYpCiAJQURWQU5D RV9ETUEoKTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBtZ2FfZzQwMF9lbWl0X3BpcGUo ZHJtX21nYV9wcml2YXRlX3QgKmRldl9wcml2KQorc3RhdGljIGlubGluZSB2b2lkIG1nYV9nNDAw X2VtaXRfcGlwZShkcm1fbWdhX3ByaXZhdGVfdCAqZGV2X3ByaXYpCiB7CiAJZHJtX21nYV9zYXJl YV90ICpzYXJlYV9wcml2ID0gZGV2X3ByaXYtPnNhcmVhX3ByaXY7CiAJdW5zaWduZWQgaW50IHBp cGUgPSBzYXJlYV9wcml2LT53YXJwX3BpcGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cjEyOC9yMTI4X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9kcnYuaAppbmRleCAy ZGU0MGQyNzYxMTYuLmFlMzJhNjdkZWMxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ix MjgvcjEyOF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcjEyOC9yMTI4X2Rydi5oCkBAIC00 MTcsNyArNDE3LDcgQEAgZG8gewkJCQkJCQkJCVwKICNkZWZpbmUgQ0NFX1BBQ0tFVDMocGt0LCBu KQkJKFIxMjhfQ0NFX1BBQ0tFVDMgfAkJXAogCQkJCQkgKHBrdCkgfCAoKG4pIDw8IDE2KSkKIAot c3RhdGljIF9faW5saW5lX18gdm9pZCByMTI4X3VwZGF0ZV9yaW5nX3NuYXBzaG90KGRybV9yMTI4 X3ByaXZhdGVfdCAqZGV2X3ByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQgcjEyOF91cGRhdGVfcmlu Z19zbmFwc2hvdChkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2KQogewogCWRybV9yMTI4X3Jp bmdfYnVmZmVyX3QgKnJpbmcgPSAmZGV2X3ByaXYtPnJpbmc7CiAJcmluZy0+c3BhY2UgPSAoR0VU X1JJTkdfSEVBRChkZXZfcHJpdikgLSByaW5nLT50YWlsKSAqIHNpemVvZih1MzIpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3IxMjgvcjEyOF9zdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJt L3IxMjgvcjEyOF9zdGF0ZS5jCmluZGV4IGI5YmZhODA2ZDM0Ni4uMzZhNjY0MmY0ODVkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcjEyOC9yMTI4X3N0YXRlLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3IxMjgvcjEyOF9zdGF0ZS5jCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHIx MjhfZW1pdF9jbGlwX3JlY3RzKGRybV9yMTI4X3ByaXZhdGVfdCAqZGV2X3ByaXYsCiAJQURWQU5D RV9SSU5HKCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgcjEyOF9lbWl0X2NvcmUoZHJt X3IxMjhfcHJpdmF0ZV90ICpkZXZfcHJpdikKK3N0YXRpYyBpbmxpbmUgdm9pZCByMTI4X2VtaXRf Y29yZShkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2KQogewogCWRybV9yMTI4X3NhcmVhX3Qg KnNhcmVhX3ByaXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJpdjsKIAlkcm1fcjEyOF9jb250ZXh0X3Jl Z3NfdCAqY3R4ID0gJnNhcmVhX3ByaXYtPmNvbnRleHRfc3RhdGU7CkBAIC05NCw3ICs5NCw3IEBA IHN0YXRpYyBfX2lubGluZV9fIHZvaWQgcjEyOF9lbWl0X2NvcmUoZHJtX3IxMjhfcHJpdmF0ZV90 ICpkZXZfcHJpdikKIAlBRFZBTkNFX1JJTkcoKTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9p ZCByMTI4X2VtaXRfY29udGV4dChkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2KQorc3RhdGlj IGlubGluZSB2b2lkIHIxMjhfZW1pdF9jb250ZXh0KGRybV9yMTI4X3ByaXZhdGVfdCAqZGV2X3By aXYpCiB7CiAJZHJtX3IxMjhfc2FyZWFfdCAqc2FyZWFfcHJpdiA9IGRldl9wcml2LT5zYXJlYV9w cml2OwogCWRybV9yMTI4X2NvbnRleHRfcmVnc190ICpjdHggPSAmc2FyZWFfcHJpdi0+Y29udGV4 dF9zdGF0ZTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHIxMjhf ZW1pdF9jb250ZXh0KGRybV9yMTI4X3ByaXZhdGVfdCAqZGV2X3ByaXYpCiAJQURWQU5DRV9SSU5H KCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgcjEyOF9lbWl0X3NldHVwKGRybV9yMTI4 X3ByaXZhdGVfdCAqZGV2X3ByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQgcjEyOF9lbWl0X3NldHVw KGRybV9yMTI4X3ByaXZhdGVfdCAqZGV2X3ByaXYpCiB7CiAJZHJtX3IxMjhfc2FyZWFfdCAqc2Fy ZWFfcHJpdiA9IGRldl9wcml2LT5zYXJlYV9wcml2OwogCWRybV9yMTI4X2NvbnRleHRfcmVnc190 ICpjdHggPSAmc2FyZWFfcHJpdi0+Y29udGV4dF9zdGF0ZTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBz dGF0aWMgX19pbmxpbmVfXyB2b2lkIHIxMjhfZW1pdF9zZXR1cChkcm1fcjEyOF9wcml2YXRlX3Qg KmRldl9wcml2KQogCUFEVkFOQ0VfUklORygpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lk IHIxMjhfZW1pdF9tYXNrcyhkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2KQorc3RhdGljIGlu bGluZSB2b2lkIHIxMjhfZW1pdF9tYXNrcyhkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2KQog ewogCWRybV9yMTI4X3NhcmVhX3QgKnNhcmVhX3ByaXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJpdjsK IAlkcm1fcjEyOF9jb250ZXh0X3JlZ3NfdCAqY3R4ID0gJnNhcmVhX3ByaXYtPmNvbnRleHRfc3Rh dGU7CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCByMTI4X2VtaXRf bWFza3MoZHJtX3IxMjhfcHJpdmF0ZV90ICpkZXZfcHJpdikKIAlBRFZBTkNFX1JJTkcoKTsKIH0K IAotc3RhdGljIF9faW5saW5lX18gdm9pZCByMTI4X2VtaXRfd2luZG93KGRybV9yMTI4X3ByaXZh dGVfdCAqZGV2X3ByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQgcjEyOF9lbWl0X3dpbmRvdyhkcm1f cjEyOF9wcml2YXRlX3QgKmRldl9wcml2KQogewogCWRybV9yMTI4X3NhcmVhX3QgKnNhcmVhX3By aXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJpdjsKIAlkcm1fcjEyOF9jb250ZXh0X3JlZ3NfdCAqY3R4 ID0gJnNhcmVhX3ByaXYtPmNvbnRleHRfc3RhdGU7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGlj IF9faW5saW5lX18gdm9pZCByMTI4X2VtaXRfd2luZG93KGRybV9yMTI4X3ByaXZhdGVfdCAqZGV2 X3ByaXYpCiAJQURWQU5DRV9SSU5HKCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgcjEy OF9lbWl0X3RleDAoZHJtX3IxMjhfcHJpdmF0ZV90ICpkZXZfcHJpdikKK3N0YXRpYyBpbmxpbmUg dm9pZCByMTI4X2VtaXRfdGV4MChkcm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2KQogewogCWRy bV9yMTI4X3NhcmVhX3QgKnNhcmVhX3ByaXYgPSBkZXZfcHJpdi0+c2FyZWFfcHJpdjsKIAlkcm1f cjEyOF9jb250ZXh0X3JlZ3NfdCAqY3R4ID0gJnNhcmVhX3ByaXYtPmNvbnRleHRfc3RhdGU7CkBA IC0xOTYsNyArMTk2LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCByMTI4X2VtaXRfdGV4MChk cm1fcjEyOF9wcml2YXRlX3QgKmRldl9wcml2KQogCUFEVkFOQ0VfUklORygpOwogfQogCi1zdGF0 aWMgX19pbmxpbmVfXyB2b2lkIHIxMjhfZW1pdF90ZXgxKGRybV9yMTI4X3ByaXZhdGVfdCAqZGV2 X3ByaXYpCitzdGF0aWMgaW5saW5lIHZvaWQgcjEyOF9lbWl0X3RleDEoZHJtX3IxMjhfcHJpdmF0 ZV90ICpkZXZfcHJpdikKIHsKIAlkcm1fcjEyOF9zYXJlYV90ICpzYXJlYV9wcml2ID0gZGV2X3By aXYtPnNhcmVhX3ByaXY7CiAJZHJtX3IxMjhfdGV4dHVyZV9yZWdzX3QgKnRleCA9ICZzYXJlYV9w cml2LT50ZXhfc3RhdGVbMV07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9p cnEuYyBiL2RyaXZlcnMvZ3B1L2RybS92aWEvdmlhX2lycS5jCmluZGV4IGM5NjgzMGNjYzBlYy4u MDJmMmEzMDllYThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9pcnEuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV9pcnEuYwpAQCAtMTUyLDcgKzE1Miw3IEBAIGly cXJldHVybl90IHZpYV9kcml2ZXJfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCQly ZXR1cm4gSVJRX05PTkU7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgdmlhZHJ2X2Fja25v d2xlZGdlX2lycXMoZHJtX3ZpYV9wcml2YXRlX3QgKmRldl9wcml2KQorc3RhdGljIGlubGluZSB2 b2lkIHZpYWRydl9hY2tub3dsZWRnZV9pcnFzKGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdikK IHsKIAl1MzIgc3RhdHVzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV92 ZXJpZmllci5jIGIvZHJpdmVycy9ncHUvZHJtL3ZpYS92aWFfdmVyaWZpZXIuYwppbmRleCBmYjI2 MDk0MzRkZjcuLjQwMGZlMTFiMTI4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZpYS92 aWFfdmVyaWZpZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmlhL3ZpYV92ZXJpZmllci5jCkBA IC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIGhhemFyZF90IHRhYmxlMVsyNTZdOwogc3RhdGljIGhh emFyZF90IHRhYmxlMlsyNTZdOwogc3RhdGljIGhhemFyZF90IHRhYmxlM1syNTZdOwogCi1zdGF0 aWMgX19pbmxpbmVfXyBpbnQKK3N0YXRpYyBpbmxpbmUgaW50CiBlYXRfd29yZHMoY29uc3QgdWlu dDMyX3QgKipidWYsIGNvbnN0IHVpbnQzMl90ICpidWZfZW5kLCB1bnNpZ25lZCBudW1fd29yZHMp CiB7CiAJaWYgKChidWZfZW5kIC0gKmJ1ZikgPj0gbnVtX3dvcmRzKSB7CkBAIC0yNTAsNyArMjUw LDcgQEAgZWF0X3dvcmRzKGNvbnN0IHVpbnQzMl90ICoqYnVmLCBjb25zdCB1aW50MzJfdCAqYnVm X2VuZCwgdW5zaWduZWQgbnVtX3dvcmRzKQogICogUGFydGlhbGx5IHN0b2xlbiBmcm9tIGRybV9t ZW1vcnkuaAogICovCiAKLXN0YXRpYyBfX2lubGluZV9fIGRybV9sb2NhbF9tYXBfdCAqdmlhX2Ry bV9sb29rdXBfYWdwX21hcChkcm1fdmlhX3N0YXRlX3QgKnNlcSwKK3N0YXRpYyBpbmxpbmUgZHJt X2xvY2FsX21hcF90ICp2aWFfZHJtX2xvb2t1cF9hZ3BfbWFwKGRybV92aWFfc3RhdGVfdCAqc2Vx LAogCQkJCQkJICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAogCQkJCQkJICAgIHVuc2lnbmVkIGxv bmcgc2l6ZSwKIAkJCQkJCSAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQpAQCAtMjg3LDcgKzI4 Nyw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGRybV9sb2NhbF9tYXBfdCAqdmlhX2RybV9sb29rdXBf YWdwX21hcChkcm1fdmlhX3N0YXRlX3QgKnNlcSwKICAqIHZlcnkgbGl0dGxlIENQVSB0aW1lLgog ICovCiAKLXN0YXRpYyBfX2lubGluZV9fIGludCBmaW5pc2hfY3VycmVudF9zZXF1ZW5jZShkcm1f dmlhX3N0YXRlX3QgKiBjdXJfc2VxKQorc3RhdGljIGlubGluZSBpbnQgZmluaXNoX2N1cnJlbnRf c2VxdWVuY2UoZHJtX3ZpYV9zdGF0ZV90ICogY3VyX3NlcSkKIHsKIAlzd2l0Y2ggKGN1cl9zZXEt PnVuZmluaXNoZWQpIHsKIAljYXNlIHpfYWRkcmVzczoKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0 aWMgX19pbmxpbmVfXyBpbnQgZmluaXNoX2N1cnJlbnRfc2VxdWVuY2UoZHJtX3ZpYV9zdGF0ZV90 ICogY3VyX3NlcSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gaW50CitzdGF0 aWMgaW5saW5lIGludAogaW52ZXN0aWdhdGVfaGF6YXJkKHVpbnQzMl90IGNtZCwgaGF6YXJkX3Qg aHosIGRybV92aWFfc3RhdGVfdCAqY3VyX3NlcSkKIHsKIAlyZWdpc3RlciB1aW50MzJfdCB0bXAs ICp0bXBfYWRkcjsKQEAgLTUxNyw3ICs1MTcsNyBAQCBpbnZlc3RpZ2F0ZV9oYXphcmQodWludDMy X3QgY21kLCBoYXphcmRfdCBoeiwgZHJtX3ZpYV9zdGF0ZV90ICpjdXJfc2VxKQogCXJldHVybiAy OwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQKK3N0YXRpYyBpbmxpbmUgaW50CiB2aWFfY2hl Y2tfcHJpbV9saXN0KHVpbnQzMl90IGNvbnN0ICoqYnVmZmVyLCBjb25zdCB1aW50MzJfdCAqIGJ1 Zl9lbmQsCiAJCSAgICBkcm1fdmlhX3N0YXRlX3QgKmN1cl9zZXEpCiB7CkBAIC02MjEsNyArNjIx LDcgQEAgdmlhX2NoZWNrX3ByaW1fbGlzdCh1aW50MzJfdCBjb25zdCAqKmJ1ZmZlciwgY29uc3Qg dWludDMyX3QgKiBidWZfZW5kLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9f IHZlcmlmaWVyX3N0YXRlX3QKK3N0YXRpYyBpbmxpbmUgdmVyaWZpZXJfc3RhdGVfdAogdmlhX2No ZWNrX2hlYWRlcjIodWludDMyX3QgY29uc3QgKipidWZmZXIsIGNvbnN0IHVpbnQzMl90ICpidWZf ZW5kLAogCQkgIGRybV92aWFfc3RhdGVfdCAqaGNfc3RhdGUpCiB7CkBAIC03MTMsNyArNzEzLDcg QEAgdmlhX2NoZWNrX2hlYWRlcjIodWludDMyX3QgY29uc3QgKipidWZmZXIsIGNvbnN0IHVpbnQz Ml90ICpidWZfZW5kLAogCXJldHVybiBzdGF0ZV9jb21tYW5kOwogfQogCi1zdGF0aWMgX19pbmxp bmVfXyB2ZXJpZmllcl9zdGF0ZV90CitzdGF0aWMgaW5saW5lIHZlcmlmaWVyX3N0YXRlX3QKIHZp YV9wYXJzZV9oZWFkZXIyKGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwgdWludDMyX3QgY29u c3QgKipidWZmZXIsCiAJCSAgY29uc3QgdWludDMyX3QgKmJ1Zl9lbmQsIGludCAqZmlyZV9jb3Vu dCkKIHsKQEAgLTc2Miw3ICs3NjIsNyBAQCB2aWFfcGFyc2VfaGVhZGVyMihkcm1fdmlhX3ByaXZh dGVfdCAqZGV2X3ByaXYsIHVpbnQzMl90IGNvbnN0ICoqYnVmZmVyLAogCXJldHVybiBzdGF0ZV9j b21tYW5kOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgdmVyaWZ5X21taW9fYWRkcmVzcyh1 aW50MzJfdCBhZGRyZXNzKQorc3RhdGljIGlubGluZSBpbnQgdmVyaWZ5X21taW9fYWRkcmVzcyh1 aW50MzJfdCBhZGRyZXNzKQogewogCWlmICgoYWRkcmVzcyA+IDB4M0ZGKSAmJiAoYWRkcmVzcyA8 IDB4QzAwKSkgewogCQlEUk1fRVJST1IoIkludmFsaWQgVklERU8gRE1BIGNvbW1hbmQuICIKQEAg LTc4MCw3ICs3ODAsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgdmVyaWZ5X21taW9fYWRkcmVz cyh1aW50MzJfdCBhZGRyZXNzKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyBp bnQKK3N0YXRpYyBpbmxpbmUgaW50CiB2ZXJpZnlfdmlkZW9fdGFpbCh1aW50MzJfdCBjb25zdCAq KmJ1ZmZlciwgY29uc3QgdWludDMyX3QgKiBidWZfZW5kLAogCQkgIHVpbnQzMl90IGR3b3JkcykK IHsKQEAgLTgwMCw3ICs4MDAsNyBAQCB2ZXJpZnlfdmlkZW9fdGFpbCh1aW50MzJfdCBjb25zdCAq KmJ1ZmZlciwgY29uc3QgdWludDMyX3QgKiBidWZfZW5kLAogCXJldHVybiAwOwogfQogCi1zdGF0 aWMgX19pbmxpbmVfXyB2ZXJpZmllcl9zdGF0ZV90CitzdGF0aWMgaW5saW5lIHZlcmlmaWVyX3N0 YXRlX3QKIHZpYV9jaGVja19oZWFkZXIxKHVpbnQzMl90IGNvbnN0ICoqYnVmZmVyLCBjb25zdCB1 aW50MzJfdCAqIGJ1Zl9lbmQpCiB7CiAJdWludDMyX3QgY21kOwpAQCAtODMyLDcgKzgzMiw3IEBA IHZpYV9jaGVja19oZWFkZXIxKHVpbnQzMl90IGNvbnN0ICoqYnVmZmVyLCBjb25zdCB1aW50MzJf dCAqIGJ1Zl9lbmQpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdmVyaWZp ZXJfc3RhdGVfdAorc3RhdGljIGlubGluZSB2ZXJpZmllcl9zdGF0ZV90CiB2aWFfcGFyc2VfaGVh ZGVyMShkcm1fdmlhX3ByaXZhdGVfdCAqZGV2X3ByaXYsIHVpbnQzMl90IGNvbnN0ICoqYnVmZmVy LAogCQkgIGNvbnN0IHVpbnQzMl90ICpidWZfZW5kKQogewpAQCAtODUwLDcgKzg1MCw3IEBAIHZp YV9wYXJzZV9oZWFkZXIxKGRybV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwgdWludDMyX3QgY29u c3QgKipidWZmZXIsCiAJcmV0dXJuIHN0YXRlX2NvbW1hbmQ7CiB9CiAKLXN0YXRpYyBfX2lubGlu ZV9fIHZlcmlmaWVyX3N0YXRlX3QKK3N0YXRpYyBpbmxpbmUgdmVyaWZpZXJfc3RhdGVfdAogdmlh X2NoZWNrX3ZoZWFkZXI1KHVpbnQzMl90IGNvbnN0ICoqYnVmZmVyLCBjb25zdCB1aW50MzJfdCAq YnVmX2VuZCkKIHsKIAl1aW50MzJfdCBkYXRhOwpAQCAtODgzLDcgKzg4Myw3IEBAIHZpYV9jaGVj a192aGVhZGVyNSh1aW50MzJfdCBjb25zdCAqKmJ1ZmZlciwgY29uc3QgdWludDMyX3QgKmJ1Zl9l bmQpCiAKIH0KIAotc3RhdGljIF9faW5saW5lX18gdmVyaWZpZXJfc3RhdGVfdAorc3RhdGljIGlu bGluZSB2ZXJpZmllcl9zdGF0ZV90CiB2aWFfcGFyc2VfdmhlYWRlcjUoZHJtX3ZpYV9wcml2YXRl X3QgKmRldl9wcml2LCB1aW50MzJfdCBjb25zdCAqKmJ1ZmZlciwKIAkJICAgY29uc3QgdWludDMy X3QgKmJ1Zl9lbmQpCiB7CkBAIC05MDEsNyArOTAxLDcgQEAgdmlhX3BhcnNlX3ZoZWFkZXI1KGRy bV92aWFfcHJpdmF0ZV90ICpkZXZfcHJpdiwgdWludDMyX3QgY29uc3QgKipidWZmZXIsCiAJcmV0 dXJuIHN0YXRlX2NvbW1hbmQ7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZlcmlmaWVyX3N0YXRl X3QKK3N0YXRpYyBpbmxpbmUgdmVyaWZpZXJfc3RhdGVfdAogdmlhX2NoZWNrX3ZoZWFkZXI2KHVp bnQzMl90IGNvbnN0ICoqYnVmZmVyLCBjb25zdCB1aW50MzJfdCAqIGJ1Zl9lbmQpCiB7CiAJdWlu dDMyX3QgZGF0YTsKQEAgLTkzOCw3ICs5MzgsNyBAQCB2aWFfY2hlY2tfdmhlYWRlcjYodWludDMy X3QgY29uc3QgKipidWZmZXIsIGNvbnN0IHVpbnQzMl90ICogYnVmX2VuZCkKIAlyZXR1cm4gc3Rh dGVfY29tbWFuZDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdmVyaWZpZXJfc3RhdGVfdAorc3Rh dGljIGlubGluZSB2ZXJpZmllcl9zdGF0ZV90CiB2aWFfcGFyc2VfdmhlYWRlcjYoZHJtX3ZpYV9w cml2YXRlX3QgKmRldl9wcml2LCB1aW50MzJfdCBjb25zdCAqKmJ1ZmZlciwKIAkJICAgY29uc3Qg dWludDMyX3QgKmJ1Zl9lbmQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUv ZWljb24vcGxhdGZvcm0uaCBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9wbGF0Zm9ybS5o CmluZGV4IDYyZTIwNzNjMzY5MC4uZWE4NjFjOTA0Y2QyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lz ZG4vaGFyZHdhcmUvZWljb24vcGxhdGZvcm0uaAorKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUv ZWljb24vcGxhdGZvcm0uaApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgZGl2YV94ZGlfZGlkZF9y ZW1vdmVfYWRhcHRlcihpbnQgY2FyZCk7CiAvKgogKiogbWVtb3J5IGFsbG9jYXRpb24KICovCi1z dGF0aWMgX19pbmxpbmVfXyB2b2lkICpkaXZhX29zX21hbGxvYyh1bnNpZ25lZCBsb25nIGZsYWdz LCB1bnNpZ25lZCBsb25nIHNpemUpCitzdGF0aWMgaW5saW5lIHZvaWQgKmRpdmFfb3NfbWFsbG9j KHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAl2b2lkICpyZXQg PSBOVUxMOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCAqZGl2 YV9vc19tYWxsb2ModW5zaWduZWQgbG9uZyBmbGFncywgdW5zaWduZWQgbG9uZyBzaXplKQogCX0K IAlyZXR1cm4gKHJldCk7CiB9Ci1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRpdmFfb3NfZnJlZSh1 bnNpZ25lZCBsb25nIGZsYWdzLCB2b2lkICpwdHIpCitzdGF0aWMgaW5saW5lIHZvaWQgZGl2YV9v c19mcmVlKHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHZvaWQgKnB0cikKIHsKIAl2ZnJlZShwdHIpOwog fQpAQCAtMTg1LDExICsxODUsMTEgQEAgdm9pZCBkaXZhX29zX2ZyZWVfbWVzc2FnZV9idWZmZXIo ZGl2YV9vc19tZXNzYWdlX2J1ZmZlcl9zICpkbWIpOwogLyoKICoqIG1TZWNvbmRzIHdhaXRpbmcK ICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRpdmFfb3Nfc2xlZXAoZHdvcmQgbVNlYykKK3N0 YXRpYyBpbmxpbmUgdm9pZCBkaXZhX29zX3NsZWVwKGR3b3JkIG1TZWMpCiB7CiAJbXNsZWVwKG1T ZWMpOwogfQotc3RhdGljIF9faW5saW5lX18gdm9pZCBkaXZhX29zX3dhaXQoZHdvcmQgbVNlYykK K3N0YXRpYyBpbmxpbmUgdm9pZCBkaXZhX29zX3dhaXQoZHdvcmQgbVNlYykKIHsKIAltZGVsYXko bVNlYyk7CiB9CkBAIC0yMzMsMTIgKzIzMywxMiBAQCB2b2lkIGRpdmFfb3NfcmVtb3ZlX2lycSh2 b2lkICpjb250ZXh0LCBieXRlIGlycSk7CiAqLwogdHlwZWRlZiBsb25nIGRpdmFfb3Nfc3Bpbl9s b2NrX21hZ2ljX3Q7CiB0eXBlZGVmIHNwaW5sb2NrX3QgZGl2YV9vc19zcGluX2xvY2tfdDsKLXN0 YXRpYyBfX2lubGluZV9fIGludCBkaXZhX29zX2luaXRpYWxpemVfc3Bpbl9sb2NrKHNwaW5sb2Nr X3QgKmxvY2ssIHZvaWQgKnVudXNlZCkgeyBcCitzdGF0aWMgaW5saW5lIGludCBkaXZhX29zX2lu aXRpYWxpemVfc3Bpbl9sb2NrKHNwaW5sb2NrX3QgKmxvY2ssIHZvaWQgKnVudXNlZCkgeyBcCiAJ c3Bpbl9sb2NrX2luaXQobG9jayk7IHJldHVybiAoMCk7IH0KLXN0YXRpYyBfX2lubGluZV9fIHZv aWQgZGl2YV9vc19lbnRlcl9zcGluX2xvY2soZGl2YV9vc19zcGluX2xvY2tfdCAqYSwgXAorc3Rh dGljIGlubGluZSB2b2lkIGRpdmFfb3NfZW50ZXJfc3Bpbl9sb2NrKGRpdmFfb3Nfc3Bpbl9sb2Nr X3QgKmEsIFwKIAkJCQkJICAgICAgIGRpdmFfb3Nfc3Bpbl9sb2NrX21hZ2ljX3QgKm9sZF9pcnFs LCBcCiAJCQkJCSAgICAgICB2b2lkICpkYmcpIHsgc3Bpbl9sb2NrX2JoKGEpOyB9Ci1zdGF0aWMg X19pbmxpbmVfXyB2b2lkIGRpdmFfb3NfbGVhdmVfc3Bpbl9sb2NrKGRpdmFfb3Nfc3Bpbl9sb2Nr X3QgKmEsIFwKK3N0YXRpYyBpbmxpbmUgdm9pZCBkaXZhX29zX2xlYXZlX3NwaW5fbG9jayhkaXZh X29zX3NwaW5fbG9ja190ICphLCBcCiAJCQkJCSAgICAgICBkaXZhX29zX3NwaW5fbG9ja19tYWdp Y190ICpvbGRfaXJxbCwgXAogCQkJCQkgICAgICAgdm9pZCAqZGJnKSB7IHNwaW5fdW5sb2NrX2Jo KGEpOyB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXQuYyBiL2RyaXZl cnMvaXNkbi9pNGwvaXNkbl9uZXQuYwppbmRleCBjMTM4ZjY2ZjI2NTkuLjA5ZDRjYjEzNjM4MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldC5jCisrKyBiL2RyaXZlcnMvaXNk bi9pNGwvaXNkbl9uZXQuYwpAQCAtNzAsNyArNzAsNyBAQAogICogRmluZCBvdXQgaWYgdGhlIG5l dGRldmljZSBoYXMgYmVlbiBpZnVwLWVkIHlldC4KICAqIEZvciBzbGF2ZXMsIGxvb2sgYXQgdGhl IGNvcnJlc3BvbmRpbmcgbWFzdGVyLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgaXNkbl9u ZXRfZGV2aWNlX3N0YXJ0ZWQoaXNkbl9uZXRfZGV2ICpuKQorc3RhdGljIGlubGluZSBpbnQgaXNk bl9uZXRfZGV2aWNlX3N0YXJ0ZWQoaXNkbl9uZXRfZGV2ICpuKQogewogCWlzZG5fbmV0X2xvY2Fs ICpscCA9IG4tPmxvY2FsOwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CkBAIC04Niw3ICs4Niw3 IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBpc2RuX25ldF9kZXZpY2Vfc3RhcnRlZChpc2RuX25l dF9kZXYgKm4pCiAgKiB3YWtlIHVwIHRoZSBuZXR3b3JrIC0+IG5ldF9kZXZpY2UgcXVldWUuCiAg KiBGb3Igc2xhdmVzLCB3YWtlIHRoZSBjb3JyZXNwb25kaW5nIG1hc3RlciBpbnRlcmZhY2UuCiAg Ki8KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgaXNkbl9uZXRfZGV2aWNlX3dha2VfcXVldWUoaXNk bl9uZXRfbG9jYWwgKmxwKQorc3RhdGljIGlubGluZSB2b2lkIGlzZG5fbmV0X2RldmljZV93YWtl X3F1ZXVlKGlzZG5fbmV0X2xvY2FsICpscCkKIHsKIAlpZiAobHAtPm1hc3RlcikKIAkJbmV0aWZf d2FrZV9xdWV1ZShscC0+bWFzdGVyKTsKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIF9faW5saW5l X18gdm9pZCBpc2RuX25ldF9kZXZpY2Vfd2FrZV9xdWV1ZShpc2RuX25ldF9sb2NhbCAqbHApCiAg KiBzdG9wIHRoZSBuZXR3b3JrIC0+IG5ldF9kZXZpY2UgcXVldWUuCiAgKiBGb3Igc2xhdmVzLCBz dG9wIHRoZSBjb3JyZXNwb25kaW5nIG1hc3RlciBpbnRlcmZhY2UuCiAgKi8KLXN0YXRpYyBfX2lu bGluZV9fIHZvaWQgaXNkbl9uZXRfZGV2aWNlX3N0b3BfcXVldWUoaXNkbl9uZXRfbG9jYWwgKmxw KQorc3RhdGljIGlubGluZSB2b2lkIGlzZG5fbmV0X2RldmljZV9zdG9wX3F1ZXVlKGlzZG5fbmV0 X2xvY2FsICpscCkKIHsKIAlpZiAobHAtPm1hc3RlcikKIAkJbmV0aWZfc3RvcF9xdWV1ZShscC0+ bWFzdGVyKTsKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlzZG5f bmV0X2RldmljZV9zdG9wX3F1ZXVlKGlzZG5fbmV0X2xvY2FsICpscCkKICAqIG1hc3RlciBvciBz bGF2ZSkgaXMgYnVzeS4gSXQncyBidXN5IGlmZiBhbGwgKG1hc3RlciBhbmQgc2xhdmUpCiAgKiBx dWV1ZXMgYXJlIGJ1c3kKICAqLwotc3RhdGljIF9faW5saW5lX18gaW50IGlzZG5fbmV0X2Rldmlj ZV9idXN5KGlzZG5fbmV0X2xvY2FsICpscCkKK3N0YXRpYyBpbmxpbmUgaW50IGlzZG5fbmV0X2Rl dmljZV9idXN5KGlzZG5fbmV0X2xvY2FsICpscCkKIHsKIAlpc2RuX25ldF9sb2NhbCAqbmxwOwog CWlzZG5fbmV0X2RldiAqbmQ7CkBAIC0xMzgsMTQgKzEzOCwxNCBAQCBzdGF0aWMgX19pbmxpbmVf XyBpbnQgaXNkbl9uZXRfZGV2aWNlX2J1c3koaXNkbl9uZXRfbG9jYWwgKmxwKQogCXJldHVybiAx OwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlzZG5fbmV0X2luY19mcmFtZV9jbnQoaXNk bl9uZXRfbG9jYWwgKmxwKQorc3RhdGljIGlubGluZSB2b2lkIGlzZG5fbmV0X2luY19mcmFtZV9j bnQoaXNkbl9uZXRfbG9jYWwgKmxwKQogewogCWF0b21pY19pbmMoJmxwLT5mcmFtZV9jbnQpOwog CWlmIChpc2RuX25ldF9kZXZpY2VfYnVzeShscCkpCiAJCWlzZG5fbmV0X2RldmljZV9zdG9wX3F1 ZXVlKGxwKTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBpc2RuX25ldF9kZWNfZnJhbWVf Y250KGlzZG5fbmV0X2xvY2FsICpscCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBpc2RuX25ldF9kZWNf ZnJhbWVfY250KGlzZG5fbmV0X2xvY2FsICpscCkKIHsKIAlhdG9taWNfZGVjKCZscC0+ZnJhbWVf Y250KTsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgaXNkbl9u ZXRfZGVjX2ZyYW1lX2NudChpc2RuX25ldF9sb2NhbCAqbHApCiAJfQogfQogCi1zdGF0aWMgX19p bmxpbmVfXyB2b2lkIGlzZG5fbmV0X3plcm9fZnJhbWVfY250KGlzZG5fbmV0X2xvY2FsICpscCkK K3N0YXRpYyBpbmxpbmUgdm9pZCBpc2RuX25ldF96ZXJvX2ZyYW1lX2NudChpc2RuX25ldF9sb2Nh bCAqbHApCiB7CiAJYXRvbWljX3NldCgmbHAtPmZyYW1lX2NudCwgMCk7CiB9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmggYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0 LmgKaW5kZXggY2NhNmQ2OGRhMTcxLi41ZmRmZjhhMGFjOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv aXNkbi9pNGwvaXNkbl9uZXQuaAorKysgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmgKQEAg LTY0LDcgKzY0LDcgQEAgZXh0ZXJuIHZvaWQgaXNkbl9uZXRfd3JpdGVfc3VwZXIoaXNkbl9uZXRf bG9jYWwgKmxwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIC8qCiAgKiBpcyB0aGlzIHBhcnRpY3Vs YXIgY2hhbm5lbCBidXN5PwogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgaXNkbl9uZXRfbHBf YnVzeShpc2RuX25ldF9sb2NhbCAqbHApCitzdGF0aWMgaW5saW5lIGludCBpc2RuX25ldF9scF9i dXN5KGlzZG5fbmV0X2xvY2FsICpscCkKIHsKIAlpZiAoYXRvbWljX3JlYWQoJmxwLT5mcmFtZV9j bnQpIDwgSVNETl9ORVRfTUFYX1FVRVVFX0xFTkdUSCkKIAkJcmV0dXJuIDA7CkBAIC03Niw3ICs3 Niw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBpc2RuX25ldF9scF9idXN5KGlzZG5fbmV0X2xv Y2FsICpscCkKICAqIEZvciB0aGUgZ2l2ZW4gbmV0IGRldmljZSwgdGhpcyB3aWxsIGdldCBhIG5v bi1idXN5IGNoYW5uZWwgb3V0IG9mIHRoZQogICogY29ycmVzcG9uZGluZyBidW5kbGUuIFRoZSBy ZXR1cm5lZCBjaGFubmVsIGlzIGxvY2tlZC4KICAqLwotc3RhdGljIF9faW5saW5lX18gaXNkbl9u ZXRfbG9jYWwgKmlzZG5fbmV0X2dldF9sb2NrZWRfbHAoaXNkbl9uZXRfZGV2ICpuZCkKK3N0YXRp YyBpbmxpbmUgaXNkbl9uZXRfbG9jYWwgKmlzZG5fbmV0X2dldF9sb2NrZWRfbHAoaXNkbl9uZXRf ZGV2ICpuZCkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWlzZG5fbmV0X2xvY2FsICpscDsK QEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpc2RuX25ldF9sb2NhbCAqaXNk bl9uZXRfZ2V0X2xvY2tlZF9scChpc2RuX25ldF9kZXYgKm5kKQogLyoKICAqIGFkZCBhIGNoYW5u ZWwgdG8gYSBidW5kbGUKICAqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBpc2RuX25ldF9hZGRf dG9fYnVuZGxlKGlzZG5fbmV0X2RldiAqbmQsIGlzZG5fbmV0X2xvY2FsICpubHApCitzdGF0aWMg aW5saW5lIHZvaWQgaXNkbl9uZXRfYWRkX3RvX2J1bmRsZShpc2RuX25ldF9kZXYgKm5kLCBpc2Ru X25ldF9sb2NhbCAqbmxwKQogewogCWlzZG5fbmV0X2xvY2FsICpscDsKIAl1bnNpZ25lZCBsb25n IGZsYWdzOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgaXNkbl9u ZXRfYWRkX3RvX2J1bmRsZShpc2RuX25ldF9kZXYgKm5kLCBpc2RuX25ldF9sb2NhbCAqCiAvKgog ICogcmVtb3ZlIGEgY2hhbm5lbCBmcm9tIHRoZSBidW5kbGUgaXQgYmVsb25ncyB0bwogICovCi1z dGF0aWMgX19pbmxpbmVfXyB2b2lkIGlzZG5fbmV0X3JtX2Zyb21fYnVuZGxlKGlzZG5fbmV0X2xv Y2FsICpscCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBpc2RuX25ldF9ybV9mcm9tX2J1bmRsZShpc2Ru X25ldF9sb2NhbCAqbHApCiB7CiAJaXNkbl9uZXRfbG9jYWwgKm1hc3Rlcl9scCA9IGxwOwogCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BjaS9pdnR2L2l2 dHYtaW9jdGwuYyBiL2RyaXZlcnMvbWVkaWEvcGNpL2l2dHYvaXZ0di1pb2N0bC5jCmluZGV4IDRj ZGM2ZDJiZTg1ZC4uZTRlOGIzODM4N2VjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BjaS9p dnR2L2l2dHYtaW9jdGwuYworKysgYi9kcml2ZXJzL21lZGlhL3BjaS9pdnR2L2l2dHYtaW9jdGwu YwpAQCAtMTYyMiw3ICsxNjIyLDcgQEAgc3RhdGljIGludCBpdnR2X3RyeV9kZWNvZGVyX2NtZChz dHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2RlY29kZXIKIH0KIAogI2lm ZGVmIENPTkZJR19WSURFT19JVlRWX0RFUFJFQ0FURURfSU9DVExTCi1zdGF0aWMgX19pbmxpbmVf XyB2b2lkIHdhcm5fZGVwcmVjYXRlZF9pb2N0bChjb25zdCBjaGFyICpuYW1lKQorc3RhdGljIGlu bGluZSB2b2lkIHdhcm5fZGVwcmVjYXRlZF9pb2N0bChjb25zdCBjaGFyICpuYW1lKQogewogCXBy X3dhcm5fb25jZSgid2FybmluZzogdGhlICVzIGlvY3RsIGlzIGRlcHJlY2F0ZWQuIERvbid0IHVz ZSBpdCwgYXMgaXQgd2lsbCBiZSByZW1vdmVkIHNvb25cbiIsCiAJCSAgICAgbmFtZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdW4vc3VuZ2VtLmMgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9zdW4vc3VuZ2VtLmMKaW5kZXggYjkyMjFmYzE2NzRkLi40ZGE3YTNhYzNjODcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N1bi9zdW5nZW0uYworKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9zdW4vc3VuZ2VtLmMKQEAgLTY0MCw3ICs2NDAsNyBAQCBzdGF0aWMgaW50 IGdlbV9hYm5vcm1hbF9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGdlbSAqZ3As IHUzMiBnZW1fc3RhdAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGdl bV90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZ2VtICpncCwgdTMyIGdlbV9zdGF0 dXMpCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VtX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0 cnVjdCBnZW0gKmdwLCB1MzIgZ2VtX3N0YXR1cykKIHsKIAlpbnQgZW50cnksIGxpbWl0OwogCkBA IC03MTAsNyArNzEwLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBnZW1fdHgoc3RydWN0IG5l dF9kZXZpY2UgKmRldiwgc3RydWN0IGdlbSAqZ3AsIHUzMiBnZW1fc3QKIAl9CiB9CiAKLXN0YXRp YyBfX2lubGluZV9fIHZvaWQgZ2VtX3Bvc3RfcnhkcyhzdHJ1Y3QgZ2VtICpncCwgaW50IGxpbWl0 KQorc3RhdGljIGlubGluZSB2b2lkIGdlbV9wb3N0X3J4ZHMoc3RydWN0IGdlbSAqZ3AsIGludCBs aW1pdCkKIHsKIAlpbnQgY2x1c3Rlcl9zdGFydCwgY3VyciwgY291bnQsIGtpY2s7CiAKQEAgLTc0 Miw3ICs3NDIsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGdlbV9wb3N0X3J4ZHMoc3RydWN0 IGdlbSAqZ3AsIGludCBsaW1pdCkKIAogI2RlZmluZSBBTElHTkVEX1JYX1NLQl9BRERSKGFkZHIp IFwKICAgICAgICAgKCgoKHVuc2lnbmVkIGxvbmcpKGFkZHIpICsgKDY0VUwgLSAxVUwpKSAmIH4o NjRVTCAtIDFVTCkpIC0gKHVuc2lnbmVkIGxvbmcpKGFkZHIpKQotc3RhdGljIF9faW5saW5lX18g c3RydWN0IHNrX2J1ZmYgKmdlbV9hbGxvY19za2Ioc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50 IHNpemUsCitzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpnZW1fYWxsb2Nfc2tiKHN0cnVj dCBuZXRfZGV2aWNlICpkZXYsIGludCBzaXplLAogCQkJCQkJZ2ZwX3QgZ2ZwX2ZsYWdzKQogewog CXN0cnVjdCBza19idWZmICpza2IgPSBhbGxvY19za2Ioc2l6ZSArIDY0LCBnZnBfZmxhZ3MpOwpA QCAtOTg4LDcgKzk4OCw3IEBAIHN0YXRpYyB2b2lkIGdlbV90eF90aW1lb3V0KHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYpCiAJZ2VtX3NjaGVkdWxlX3Jlc2V0KGdwKTsKIH0KIAotc3RhdGljIF9faW5s aW5lX18gaW50IGdlbV9pbnRtZShpbnQgZW50cnkpCitzdGF0aWMgaW5saW5lIGludCBnZW1faW50 bWUoaW50IGVudHJ5KQogewogCS8qIEFsZ29yaXRobTogSVJRIGV2ZXJ5IDEvMiBvZiBkZXNjcmlw dG9ycy4gKi8KIAlpZiAoIShlbnRyeSAmICgoVFhfUklOR19TSVpFPj4xKS0xKSkpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdW4vc3VuaG1lLmMgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9zdW4vc3VuaG1lLmMKaW5kZXggMDZkYTJmNTlmY2JmLi4xYjdjOTVkMTdlNDYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N1bi9zdW5obWUuYworKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9zdW4vc3VuaG1lLmMKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgaG1lX3R4 X2xvZ2VudCB7CiAjZGVmaW5lIFRYX0xPR19MRU4JMTI4CiBzdGF0aWMgc3RydWN0IGhtZV90eF9s b2dlbnQgdHhfbG9nW1RYX0xPR19MRU5dOwogc3RhdGljIGludCB0eGxvZ19jdXJfZW50cnk7Ci1z dGF0aWMgX19pbmxpbmVfXyB2b2lkIHR4X2FkZF9sb2coc3RydWN0IGhhcHB5X21lYWwgKmhwLCB1 bnNpZ25lZCBpbnQgYSwgdW5zaWduZWQgaW50IHMpCitzdGF0aWMgaW5saW5lIHZvaWQgdHhfYWRk X2xvZyhzdHJ1Y3QgaGFwcHlfbWVhbCAqaHAsIHVuc2lnbmVkIGludCBhLCB1bnNpZ25lZCBpbnQg cykKIHsKIAlzdHJ1Y3QgaG1lX3R4X2xvZ2VudCAqdGxwOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCB0eF9hZGRfbG9nKHN0 cnVjdCBoYXBweV9tZWFsICpocCwgdW5zaWduZWQgaW50IGEsIHVuc2lnbmUKIAl0eGxvZ19jdXJf ZW50cnkgPSAodHhsb2dfY3VyX2VudHJ5ICsgMSkgJiAoVFhfTE9HX0xFTiAtIDEpOwogCWxvY2Fs X2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgdHhfZHVtcF9s b2codm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZCB0eF9kdW1wX2xvZyh2b2lkKQogewogCWludCBp LCB0aGlzOwogCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCB0eF9k dW1wX2xvZyh2b2lkKQogCQl0aGlzID0gKHRoaXMgKyAxKSAmIChUWF9MT0dfTEVOIC0gMSk7CiAJ fQogfQotc3RhdGljIF9faW5saW5lX18gdm9pZCB0eF9kdW1wX3Jpbmcoc3RydWN0IGhhcHB5X21l YWwgKmhwKQorc3RhdGljIGlubGluZSB2b2lkIHR4X2R1bXBfcmluZyhzdHJ1Y3QgaGFwcHlfbWVh bCAqaHApCiB7CiAJc3RydWN0IGhtZWFsX2luaXRfYmxvY2sgKmhiID0gaHAtPmhhcHB5X2Jsb2Nr OwogCXN0cnVjdCBoYXBweV9tZWFsX3R4ZCAqdHAgPSAmaGItPmhhcHB5X21lYWxfdHhkWzBdOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaGFtcmFkaW8vYmF5Y29tX3Nlcl9mZHguYyBiL2RyaXZl cnMvbmV0L2hhbXJhZGlvL2JheWNvbV9zZXJfZmR4LmMKaW5kZXggMTkwZjY2Yzg4NDc5Li5iZDkx ZmI1NzE5MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL2JheWNvbV9zZXJfZmR4 LmMKKysrIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8vYmF5Y29tX3Nlcl9mZHguYwpAQCAtMjI5LDcg KzIyOSw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGh3ZWlnaHQ4KHVuc2lnbmVkIGlu dCB3KQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXIx Ml9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgYmF5Y29tX3N0YXRlICpiYywgc3Ry dWN0IHRpbWVzcGVjNjQgKnRzLCB1bnNpZ25lZCBjaGFyIGN1cnMpCitzdGF0aWMgaW5saW5lIHZv aWQgc2VyMTJfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGJheWNvbV9zdGF0ZSAq YmMsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cywgdW5zaWduZWQgY2hhciBjdXJzKQogewogCWludCB0 aW1lZGlmZjsKIAlpbnQgYmR1czggPSBiYy0+YmF1ZF91cyA+PiAzOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2FuL2xhcGJldGhlci5jIGIvZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jCmlu ZGV4IDBlM2Y4ZWQ4NDY2MC4uODQxNDVlYzgyYTM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93 YW4vbGFwYmV0aGVyLmMKKysrIGIvZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jCkBAIC03Niw3 ICs3Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgbGFwYmV0aGRldiAqbGFwYmV0aF9nZXRfeDI1X2Rldihz dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgX19pbmxp bmVfXyBpbnQgZGV2X2lzX2V0aGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQorc3RhdGljIGlu bGluZSBpbnQgZGV2X2lzX2V0aGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXJldHVy biBkZXYtPnR5cGUgPT0gQVJQSFJEX0VUSEVSICYmIHN0cm5jbXAoZGV2LT5uYW1lLCAiZHVtbXki LCA1KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9uMi5jIGIvZHJpdmVycy9uZXQv d2FuL24yLmMKaW5kZXggYzhmNDUxN2RiM2EwLi40NWVhOGRhNzlmYTUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L3dhbi9uMi5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9uMi5jCkBAIC0xNDgsMTMg KzE0OCwxMyBAQCBzdGF0aWMgY2FyZF90ICoqbmV3X2NhcmQgPSAmZmlyc3RfY2FyZDsKIAkJCQkJ ICYoY2FyZCktPnBvcnRzW3BvcnRdIDogTlVMTCkKIAogCi1zdGF0aWMgX19pbmxpbmVfXyB1OCBz Y2FfZ2V0X3BhZ2UoY2FyZF90ICpjYXJkKQorc3RhdGljIGlubGluZSB1OCBzY2FfZ2V0X3BhZ2Uo Y2FyZF90ICpjYXJkKQogewogCXJldHVybiBpbmIoY2FyZC0+aW8gKyBOMl9QU1IpICYgUFNSX1BB R0VCSVRTOwogfQogCiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgb3BlbndpbihjYXJkX3QgKmNh cmQsIHU4IHBhZ2UpCitzdGF0aWMgaW5saW5lIHZvaWQgb3BlbndpbihjYXJkX3QgKmNhcmQsIHU4 IHBhZ2UpCiB7CiAJdTggcHNyID0gaW5iKGNhcmQtPmlvICsgTjJfUFNSKTsKIAlvdXRiKChwc3Ig JiB+UFNSX1BBR0VCSVRTKSB8IHBhZ2UsIGNhcmQtPmlvICsgTjJfUFNSKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGFyaXNjL2xlZC5jIGIvZHJpdmVycy9wYXJpc2MvbGVkLmMKaW5kZXggMGM2ZThi NDRiNGVkLi42NWJhYTg2ZGJhZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGFyaXNjL2xlZC5jCisr KyBiL2RyaXZlcnMvcGFyaXNjL2xlZC5jCkBAIC0zNDksNyArMzQ5LDcgQEAgc3RhdGljIHZvaWQg bGVkX0xDRF9kcml2ZXIodW5zaWduZWQgY2hhciBsZWRzKQogICAgKiogKGFuYWxvZyB0byBkZXZf Z2V0X2luZm8oKSBmcm9tIG5ldC9jb3JlL2Rldi5jKQogICAgKiogICAKICAqLwotc3RhdGljIF9f aW5saW5lX18gaW50IGxlZF9nZXRfbmV0X2FjdGl2aXR5KHZvaWQpCitzdGF0aWMgaW5saW5lIGlu dCBsZWRfZ2V0X25ldF9hY3Rpdml0eSh2b2lkKQogeyAKICNpZm5kZWYgQ09ORklHX05FVAogCXJl dHVybiAwOwpAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBsZWRfZ2V0 X25ldF9hY3Rpdml0eSh2b2lkKQogICAgKiogY2FsY3VsYXRlIGlmIHRoZXJlIHdhcyBkaXNrLWlv IGluIHRoZSBzeXN0ZW0KICAgICoqICAgCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIGludCBsZWRf Z2V0X2Rpc2tpb19hY3Rpdml0eSh2b2lkKQorc3RhdGljIGlubGluZSBpbnQgbGVkX2dldF9kaXNr aW9fYWN0aXZpdHkodm9pZCkKIHsJCiAJc3RhdGljIHVuc2lnbmVkIGxvbmcgbGFzdF9wZ3BnaW4s IGxhc3RfcGdwZ291dDsKIAl1bnNpZ25lZCBsb25nIGV2ZW50c1tOUl9WTV9FVkVOVF9JVEVNU107 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BhcmlzYy9zYmFfaW9tbXUuYyBiL2RyaXZlcnMvcGFyaXNj L3NiYV9pb21tdS5jCmluZGV4IDExZGUwZWNjZjk2OC4uYTdhNzlhZWJhZTE3IDEwMDY0NAotLS0g YS9kcml2ZXJzL3BhcmlzYy9zYmFfaW9tbXUuYworKysgYi9kcml2ZXJzL3BhcmlzYy9zYmFfaW9t bXUuYwpAQCAtODksNyArODksNyBAQAogI2RlZmluZSBEQkdfUkVTKHguLi4pCiAjZW5kaWYKIAot I2RlZmluZSBTQkFfSU5MSU5FCV9faW5saW5lX18KKyNkZWZpbmUgU0JBX0lOTElORQlpbmxpbmUK IAogI2RlZmluZSBERUZBVUxUX0RNQV9ISU5UX1JFRwkwCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGFycG9ydC9wYXJwb3J0X2dzYy5jIGIvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfZ3NjLmMKaW5k ZXggMTkwYzBhN2ExYzUyLi4yMGRhYjQ2M2U0MGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGFycG9y dC9wYXJwb3J0X2dzYy5jCisrKyBiL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X2dzYy5jCkBAIC03 Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgY2xlYXJfZXBwX3RpbWVvdXQoc3RydWN0IHBhcnBvcnQg KnBiKQogICogQWNjZXNzIGZ1bmN0aW9ucy4KICAqCiAgKiBNb3N0IG9mIHRoZXNlIGFyZW4ndCBz dGF0aWMgYmVjYXVzZSB0aGV5IG1heSBiZSB1c2VkIGJ5IHRoZQotICogcGFycG9ydF94eHhfeXl5 IG1hY3Jvcy4gIGV4dGVybiBfX2lubGluZV9fIHZlcnNpb25zIG9mIHNldmVyYWwKKyAqIHBhcnBv cnRfeHh4X3l5eSBtYWNyb3MuICBleHRlcm4gaW5saW5lIHZlcnNpb25zIG9mIHNldmVyYWwKICAq IG9mIHRoZXNlIGFyZSBpbiBwYXJwb3J0X2dzYy5oLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGFycG9ydC9wYXJwb3J0X2dzYy5oIGIvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfZ3NjLmgK aW5kZXggODEyMjE0NzY4ZDI3Li4yMWEzZjk2ODA2ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGFy cG9ydC9wYXJwb3J0X2dzYy5oCisrKyBiL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X2dzYy5oCkBA IC00MSwxMyArNDEsMTMgQEAKICNkZWZpbmUgcGFycG9ydF9yZWFkYglnc2NfcmVhZGIKICNkZWZp bmUgcGFycG9ydF93cml0ZWIJZ3NjX3dyaXRlYgogI2Vsc2UKLXN0YXRpYyBfX2lubGluZV9fIHVu c2lnbmVkIGNoYXIgcGFycG9ydF9yZWFkYiggdW5zaWduZWQgbG9uZyBwb3J0ICkKK3N0YXRpYyBp bmxpbmUgdW5zaWduZWQgY2hhciBwYXJwb3J0X3JlYWRiKCB1bnNpZ25lZCBsb25nIHBvcnQgKQog ewogICAgIHVkZWxheShERUxBWV9USU1FKTsKICAgICByZXR1cm4gZ3NjX3JlYWRiKHBvcnQpOwog fQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHBhcnBvcnRfd3JpdGViKCB1bnNpZ25lZCBjaGFy IHZhbHVlLCB1bnNpZ25lZCBsb25nIHBvcnQgKQorc3RhdGljIGlubGluZSB2b2lkIHBhcnBvcnRf d3JpdGViKCB1bnNpZ25lZCBjaGFyIHZhbHVlLCB1bnNpZ25lZCBsb25nIHBvcnQgKQogewogICAg IGdzY193cml0ZWIodmFsdWUscG9ydCk7CiAgICAgdWRlbGF5KERFTEFZX1RJTUUpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfcGMuYyBiL2RyaXZlcnMvcGFycG9ydC9wYXJw b3J0X3BjLmMKaW5kZXggMzgwOTE2YmZmOWUwLi5jNWQzYTEwNTNkZmYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvcGFycG9ydC9wYXJwb3J0X3BjLmMKKysrIGIvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRf cGMuYwpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBpbnQgY2xlYXJfZXBwX3RpbWVvdXQoc3Ry dWN0IHBhcnBvcnQgKnBiKQogICogQWNjZXNzIGZ1bmN0aW9ucy4KICAqCiAgKiBNb3N0IG9mIHRo ZXNlIGFyZW4ndCBzdGF0aWMgYmVjYXVzZSB0aGV5IG1heSBiZSB1c2VkIGJ5IHRoZQotICogcGFy cG9ydF94eHhfeXl5IG1hY3Jvcy4gIGV4dGVybiBfX2lubGluZV9fIHZlcnNpb25zIG9mIHNldmVy YWwKKyAqIHBhcnBvcnRfeHh4X3l5eSBtYWNyb3MuICBleHRlcm4gaW5saW5lIHZlcnNpb25zIG9m IHNldmVyYWwKICAqIG9mIHRoZXNlIGFyZSBpbiBwYXJwb3J0X3BjLmguCiAgKi8KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9s cGZjX3Njc2kuYwppbmRleCA1Yzc4NThlNzM1YzkuLmMyNzg3ODNhZDU5YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBm Y19zY3NpLmMKQEAgLTQ0ODEsNyArNDQ4MSw3IEBAIGxwZmNfaW5mbyhzdHJ1Y3QgU2NzaV9Ib3N0 ICpob3N0KQogICogVGhpcyByb3V0aW5lIG1vZGlmaWVzIGZjcF9wb2xsX3RpbWVyICBmaWVsZCBv ZiBAcGhiYSBieSBjZmdfcG9sbF90bW8uCiAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjZmdfcG9s bF90bW8gaXMgMTAgbWlsbGlzZWNvbmRzLgogICoqLwotc3RhdGljIF9faW5saW5lX18gdm9pZCBs cGZjX3BvbGxfcmVhcm1fdGltZXIoc3RydWN0IGxwZmNfaGJhICogcGhiYSkKK3N0YXRpYyBpbmxp bmUgdm9pZCBscGZjX3BvbGxfcmVhcm1fdGltZXIoc3RydWN0IGxwZmNfaGJhICogcGhiYSkKIHsK IAl1bnNpZ25lZCBsb25nICBwb2xsX3Rtb19leHBpcmVzID0KIAkJKGppZmZpZXMgKyBtc2Vjc190 b19qaWZmaWVzKHBoYmEtPmNmZ19wb2xsX3RtbykpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3Np L3BjbWNpYS9zeW01M2M1MDBfY3MuYyBiL2RyaXZlcnMvc2NzaS9wY21jaWEvc3ltNTNjNTAwX2Nz LmMKaW5kZXggMjAwMTFjOGFmYmI1Li4yOTk5NjNmOGQwYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv c2NzaS9wY21jaWEvc3ltNTNjNTAwX2NzLmMKKysrIGIvZHJpdmVycy9zY3NpL3BjbWNpYS9zeW01 M2M1MDBfY3MuYwpAQCAtMjQxLDcgKzI0MSw3IEBAIFNZTTUzQzUwMF9pbnRfaG9zdF9yZXNldChp bnQgaW9fcG9ydCkKIAljaGlwX2luaXQoaW9fcG9ydCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9f IGludAorc3RhdGljIGlubGluZSBpbnQKIFNZTTUzQzUwMF9waW9fcmVhZChpbnQgZmFzdF9waW8s IGludCBiYXNlLCB1bnNpZ25lZCBjaGFyICpyZXF1ZXN0LCB1bnNpZ25lZCBpbnQgcmVxbGVuKQog ewogCWludCBpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFNZTTUzQzUwMF9waW9fcmVhZChpbnQgZmFz dF9waW8sIGludCBiYXNlLCB1bnNpZ25lZCBjaGFyICpyZXF1ZXN0LCB1bnNpZ25lZCBpbnQKIAly ZXR1cm4gMDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gaW50CitzdGF0aWMgaW5saW5lIGludAog U1lNNTNDNTAwX3Bpb193cml0ZShpbnQgZmFzdF9waW8sIGludCBiYXNlLCB1bnNpZ25lZCBjaGFy ICpyZXF1ZXN0LCB1bnNpZ25lZCBpbnQgcmVxbGVuKQogewogCWludCBpID0gMDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pbmxpbmUuaCBiL2RyaXZlcnMvc2NzaS9xbGEy eHh4L3FsYV9pbmxpbmUuaAppbmRleCA0MzUxNzM2YjI0MjYuLmQ2ZGIyYWQ4YmY1NyAxMDA2NDQK LS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lubGluZS5oCisrKyBiL2RyaXZlcnMvc2Nz aS9xbGEyeHh4L3FsYV9pbmxpbmUuaApAQCAtMzksNyArMzksNyBAQCBxbGEyNHh4X2NhbGNfaW9j YnMoc2NzaV9xbGFfaG9zdF90ICp2aGEsIHVpbnQxNl90IGRzZHMpCiAgKiBSZXR1cm5zOgogICog ICAgICByZWdpc3RlciB2YWx1ZS4KICAqLwotc3RhdGljIF9faW5saW5lX18gdWludDE2X3QKK3N0 YXRpYyBpbmxpbmUgdWludDE2X3QKIHFsYTJ4MDBfZGVib3VuY2VfcmVnaXN0ZXIodm9sYXRpbGUg dWludDE2X3QgX19pb21lbSAqYWRkcikKIHsKIAl2b2xhdGlsZSB1aW50MTZfdCBmaXJzdDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jIGIvZHJpdmVycy9zY3NpL3Fs YTJ4eHgvcWxhX29zLmMKaW5kZXggNDJiOGYwZDNlNTgwLi5mNDhmMGI4ZDBiNjkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEy eHh4L3FsYV9vcy5jCkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RydWN0IHNjc2lfdHJhbnNwb3J0X3Rl bXBsYXRlICpxbGEyeHh4X3RyYW5zcG9ydF92cG9ydF90ZW1wbGF0ZSA9IE5VTEw7CiAgKiBUaW1l ciByb3V0aW5lcwogICovCiAKLV9faW5saW5lX18gdm9pZAoraW5saW5lIHZvaWQKIHFsYTJ4MDBf c3RhcnRfdGltZXIoc2NzaV9xbGFfaG9zdF90ICp2aGEsIHVuc2lnbmVkIGxvbmcgaW50ZXJ2YWwp CiB7CiAJdGltZXJfc2V0dXAoJnZoYS0+dGltZXIsIHFsYTJ4MDBfdGltZXIsIDApOwpAQCAtMzY2 LDcgKzM2Niw3IEBAIHFsYTJ4MDBfcmVzdGFydF90aW1lcihzY3NpX3FsYV9ob3N0X3QgKnZoYSwg dW5zaWduZWQgbG9uZyBpbnRlcnZhbCkKIAltb2RfdGltZXIoJnZoYS0+dGltZXIsIGppZmZpZXMg KyBpbnRlcnZhbCAqIEhaKTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZAorc3RhdGljIGlu bGluZSB2b2lkCiBxbGEyeDAwX3N0b3BfdGltZXIoc2NzaV9xbGFfaG9zdF90ICp2aGEpCiB7CiAJ ZGVsX3RpbWVyX3N5bmMoJnZoYS0+dGltZXIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L3J0bDg3MjNicy9jb3JlL3J0d19wd3JjdHJsLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2Jz L2NvcmUvcnR3X3B3cmN0cmwuYwppbmRleCAxMTBiYmUzNDBiNzguLjk2OWI5M2FkYzIxNCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19wd3JjdHJsLmMKKysr IGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9jb3JlL3J0d19wd3JjdHJsLmMKQEAgLTgzMSwx MiArODMxLDEyIEBAIHN0YXRpYyB2b2lkIHB3cl9ycHdtX3RpbWVvdXRfaGFuZGxlcihzdHJ1Y3Qg dGltZXJfbGlzdCAqdCkKIAlfc2V0X3dvcmtpdGVtKCZwd3Jwcml2LT5ycHdtdGltZW91dHdpKTsK IH0KIAotc3RhdGljIF9faW5saW5lIHZvaWQgcmVnaXN0ZXJfdGFza19hbGl2ZShzdHJ1Y3QgcHdy Y3RybF9wcml2ICpwd3JjdHJsLCB1MzIgdGFnKQorc3RhdGljIGlubGluZSB2b2lkIHJlZ2lzdGVy X3Rhc2tfYWxpdmUoc3RydWN0IHB3cmN0cmxfcHJpdiAqcHdyY3RybCwgdTMyIHRhZykKIHsKIAlw d3JjdHJsLT5hbGl2ZXMgfD0gdGFnOwogfQogCi1zdGF0aWMgX19pbmxpbmUgdm9pZCB1bnJlZ2lz dGVyX3Rhc2tfYWxpdmUoc3RydWN0IHB3cmN0cmxfcHJpdiAqcHdyY3RybCwgdTMyIHRhZykKK3N0 YXRpYyBpbmxpbmUgdm9pZCB1bnJlZ2lzdGVyX3Rhc2tfYWxpdmUoc3RydWN0IHB3cmN0cmxfcHJp diAqcHdyY3RybCwgdTMyIHRhZykKIHsKIAlwd3JjdHJsLT5hbGl2ZXMgJj0gfnRhZzsKIH0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvY29yZS9ydHdfd2xhbl91dGlsLmMg Yi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2NvcmUvcnR3X3dsYW5fdXRpbC5jCmluZGV4IDJj NjVhZjMxOWE2MC4uZGUwNDc2ZjFmMjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRs ODcyM2JzL2NvcmUvcnR3X3dsYW5fdXRpbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIz YnMvY29yZS9ydHdfd2xhbl91dGlsLmMKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIHNldF9jaGFu bmVsX2J3bW9kZShzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHVuc2lnbmVkIGNoYXIgY2hhbm5l bCwgdW5zaWduZQogCW11dGV4X3VubG9jaygmKGFkYXB0ZXJfdG9fZHZvYmoocGFkYXB0ZXIpLT5z ZXRjaF9tdXRleCkpOwogfQogCi1fX2lubGluZSB1OCAqZ2V0X215X2Jzc2lkKHN0cnVjdCB3bGFu X2Jzc2lkX2V4ICpwbmV0d29yaykKK2lubGluZSB1OCAqZ2V0X215X2Jzc2lkKHN0cnVjdCB3bGFu X2Jzc2lkX2V4ICpwbmV0d29yaykKIHsKIAlyZXR1cm4gcG5ldHdvcmstPk1hY0FkZHJlc3M7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvZHJ2X3R5cGVz LmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvZHJ2X3R5cGVzLmgKaW5kZXgg YzU3ZjI5MGY2MDVhLi45YTU2ZmM2YzJkMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9y dGw4NzIzYnMvaW5jbHVkZS9kcnZfdHlwZXMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcy M2JzL2luY2x1ZGUvZHJ2X3R5cGVzLmgKQEAgLTQ4NSw3ICs0ODUsNyBAQCBzdHJ1Y3QgZHZvYmpf cHJpdgogI2RlZmluZSBkdm9ial90b19wd3JjdGwoZHZvYmopICgmKGR2b2JqLT5wd3JjdGxfcHJp dikpCiAjZGVmaW5lIHB3cmN0bF90b19kdm9iaihwd3JjdGwpIGNvbnRhaW5lcl9vZihwd3JjdGws IHN0cnVjdCBkdm9ial9wcml2LCBwd3JjdGxfcHJpdikKIAotX19pbmxpbmUgc3RhdGljIHN0cnVj dCBkZXZpY2UgKmR2b2JqX3RvX2RldihzdHJ1Y3QgZHZvYmpfcHJpdiAqZHZvYmopCitpbmxpbmUg c3RhdGljIHN0cnVjdCBkZXZpY2UgKmR2b2JqX3RvX2RldihzdHJ1Y3QgZHZvYmpfcHJpdiAqZHZv YmopCiB7CiAJLyogdG9kbzogZ2V0IGludGVyZmFjZSB0eXBlIGZyb20gZHZvYmogYW5kIHRoZSBy ZXR1cm4gdGhlIGRldiBhY2NvcmRpbmdseSAqLwogI2lmZGVmIFJUV19EVk9CSl9DSElQX0hXX1RZ UEUKQEAgLTY0MywxNCArNjQzLDE0IEBAIHN0cnVjdCBhZGFwdGVyIHsKIAogLyogZGVmaW5lIFJU V19ESVNBQkxFX0ZVTkMocGFkYXB0ZXIsIGZ1bmMpIChhdG9taWNfYWRkKCZhZGFwdGVyX3RvX2R2 b2JqKHBhZGFwdGVyKS0+ZGlzYWJsZV9mdW5jLCAoZnVuYykpKSAqLwogLyogZGVmaW5lIFJUV19F TkFCTEVfRlVOQyhwYWRhcHRlciwgZnVuYykgKGF0b21pY19zdWIoJmFkYXB0ZXJfdG9fZHZvYmoo cGFkYXB0ZXIpLT5kaXNhYmxlX2Z1bmMsIChmdW5jKSkpICovCi1fX2lubGluZSBzdGF0aWMgdm9p ZCBSVFdfRElTQUJMRV9GVU5DKHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgaW50IGZ1bmNfYml0 KQoraW5saW5lIHN0YXRpYyB2b2lkIFJUV19ESVNBQkxFX0ZVTkMoc3RydWN0IGFkYXB0ZXIgKnBh ZGFwdGVyLCBpbnQgZnVuY19iaXQpCiB7CiAJaW50CWRmID0gYXRvbWljX3JlYWQoJmFkYXB0ZXJf dG9fZHZvYmoocGFkYXB0ZXIpLT5kaXNhYmxlX2Z1bmMpOwogCWRmIHw9IGZ1bmNfYml0OwogCWF0 b21pY19zZXQoJmFkYXB0ZXJfdG9fZHZvYmoocGFkYXB0ZXIpLT5kaXNhYmxlX2Z1bmMsIGRmKTsK IH0KIAotX19pbmxpbmUgc3RhdGljIHZvaWQgUlRXX0VOQUJMRV9GVU5DKHN0cnVjdCBhZGFwdGVy ICpwYWRhcHRlciwgaW50IGZ1bmNfYml0KQoraW5saW5lIHN0YXRpYyB2b2lkIFJUV19FTkFCTEVf RlVOQyhzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIGludCBmdW5jX2JpdCkKIHsKIAlpbnQJZGYg PSBhdG9taWNfcmVhZCgmYWRhcHRlcl90b19kdm9iaihwYWRhcHRlciktPmRpc2FibGVfZnVuYyk7 CiAJZGYgJj0gfihmdW5jX2JpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcy M2JzL2luY2x1ZGUvaWVlZTgwMjExLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1 ZGUvaWVlZTgwMjExLmgKaW5kZXggYmNjOGRmYThlNjcyLi5iOTViYTgxMDM2ZjQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9pZWVlODAyMTEuaAorKysgYi9k cml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvaWVlZTgwMjExLmgKQEAgLTg1MCwxOCAr ODUwLDE4IEBAIGVudW0gaWVlZTgwMjExX3N0YXRlIHsKICNkZWZpbmUgSVBfRk1UICIlcEk0Igog I2RlZmluZSBJUF9BUkcoeCkgKHgpCiAKLWV4dGVybiBfX2lubGluZSBpbnQgaXNfbXVsdGljYXN0 X21hY19hZGRyKGNvbnN0IHU4ICphZGRyKQorZXh0ZXJuIGlubGluZSBpbnQgaXNfbXVsdGljYXN0 X21hY19hZGRyKGNvbnN0IHU4ICphZGRyKQogewogICAgICAgICByZXR1cm4gKChhZGRyWzBdICE9 IDB4ZmYpICYmICgweDAxICYgYWRkclswXSkpOwogfQogCi1leHRlcm4gX19pbmxpbmUgaW50IGlz X2Jyb2FkY2FzdF9tYWNfYWRkcihjb25zdCB1OCAqYWRkcikKK2V4dGVybiBpbmxpbmUgaW50IGlz X2Jyb2FkY2FzdF9tYWNfYWRkcihjb25zdCB1OCAqYWRkcikKIHsKIAlyZXR1cm4gKChhZGRyWzBd ID09IDB4ZmYpICYmIChhZGRyWzFdID09IDB4ZmYpICYmIChhZGRyWzJdID09IDB4ZmYpICYmICAg XAogCQkoYWRkclszXSA9PSAweGZmKSAmJiAoYWRkcls0XSA9PSAweGZmKSAmJiAoYWRkcls1XSA9 PSAweGZmKSk7CiB9CiAKLWV4dGVybiBfX2lubGluZSBpbnQgaXNfemVyb19tYWNfYWRkcihjb25z dCB1OCAqYWRkcikKK2V4dGVybiBpbmxpbmUgaW50IGlzX3plcm9fbWFjX2FkZHIoY29uc3QgdTgg KmFkZHIpCiB7CiAJcmV0dXJuICgoYWRkclswXSA9PSAweDAwKSAmJiAoYWRkclsxXSA9PSAweDAw KSAmJiAoYWRkclsyXSA9PSAweDAwKSAmJiAgIFwKIAkJKGFkZHJbM10gPT0gMHgwMCkgJiYgKGFk ZHJbNF0gPT0gMHgwMCkgJiYgKGFkZHJbNV0gPT0gMHgwMCkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX3NlcnZpY2UuaCBiL2RyaXZlcnMvc3Rh Z2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9zZXJ2aWNlLmgKaW5kZXggNzZkNjE5NTg1MDQ2 Li4zYTJlYjNjYmMwZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5j bHVkZS9vc2RlcF9zZXJ2aWNlLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNs dWRlL29zZGVwX3NlcnZpY2UuaApAQCAtMTEwLDEyICsxMTAsMTIgQEAgaW50IF9ydHdfbmV0aWZf cngoX25pY19oZGwgbmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKIGV4dGVybiB2b2lkIF9y dHdfaW5pdF9xdWV1ZShzdHJ1Y3QgX19xdWV1ZQkqcHF1ZXVlKTsKIAotc3RhdGljIF9faW5saW5l IHZvaWQgdGhyZWFkX2VudGVyKGNoYXIgKm5hbWUpCitzdGF0aWMgaW5saW5lIHZvaWQgdGhyZWFk X2VudGVyKGNoYXIgKm5hbWUpCiB7CiAJYWxsb3dfc2lnbmFsKFNJR1RFUk0pOwogfQogCi1fX2lu bGluZSBzdGF0aWMgdm9pZCBmbHVzaF9zaWduYWxzX3RocmVhZCh2b2lkKQoraW5saW5lIHN0YXRp YyB2b2lkIGZsdXNoX3NpZ25hbHNfdGhyZWFkKHZvaWQpCiB7CiAJaWYgKHNpZ25hbF9wZW5kaW5n IChjdXJyZW50KSkKIAl7CkBAIC0xMjUsNyArMTI1LDcgQEAgX19pbmxpbmUgc3RhdGljIHZvaWQg Zmx1c2hfc2lnbmFsc190aHJlYWQodm9pZCkKIAogI2RlZmluZSBydHdfd2Fybl9vbihjb25kaXRp b24pIFdBUk5fT04oY29uZGl0aW9uKQogCi1fX2lubGluZSBzdGF0aWMgaW50IHJ0d19idWdfY2hl Y2sodm9pZCAqcGFyZzEsIHZvaWQgKnBhcmcyLCB2b2lkICpwYXJnMywgdm9pZCAqcGFyZzQpCitp bmxpbmUgc3RhdGljIGludCBydHdfYnVnX2NoZWNrKHZvaWQgKnBhcmcxLCB2b2lkICpwYXJnMiwg dm9pZCAqcGFyZzMsIHZvaWQgKnBhcmc0KQogewogCWludCByZXQgPSB0cnVlOwogCkBAIC0xMzYs NyArMTM2LDcgQEAgX19pbmxpbmUgc3RhdGljIGludCBydHdfYnVnX2NoZWNrKHZvaWQgKnBhcmcx LCB2b2lkICpwYXJnMiwgdm9pZCAqcGFyZzMsIHZvaWQgKnAKICNkZWZpbmUgX1JORChzeiwgcikg KCgoKHN6KSsoKHIpLTEpKS8ocikpKihyKSkKICNkZWZpbmUgUk5ENCh4KQkoKCh4ID4+IDIpICsg KCgoeCAmIDMpID09IDApID8gIDA6IDEpKSA8PCAyKQogCi1fX2lubGluZSBzdGF0aWMgdTMyIF9S TkQ0KHUzMiBzeikKK2lubGluZSBzdGF0aWMgdTMyIF9STkQ0KHUzMiBzeikKIHsKIAogCXUzMiB2 YWw7CkBAIC0xNDcsNyArMTQ3LDcgQEAgX19pbmxpbmUgc3RhdGljIHUzMiBfUk5ENCh1MzIgc3op CiAKIH0KIAotX19pbmxpbmUgc3RhdGljIHUzMiBfUk5EOCh1MzIgc3opCitpbmxpbmUgc3RhdGlj IHUzMiBfUk5EOCh1MzIgc3opCiB7CiAKIAl1MzIgdmFsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX3NlcnZpY2VfbGludXguaCBiL2RyaXZlcnMv c3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9vc2RlcF9zZXJ2aWNlX2xpbnV4LmgKaW5kZXggNThk MWUxMDE5MjQxLi5kNWNhODRiMzI2ZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4 NzIzYnMvaW5jbHVkZS9vc2RlcF9zZXJ2aWNlX2xpbnV4LmgKKysrIGIvZHJpdmVycy9zdGFnaW5n L3J0bDg3MjNicy9pbmNsdWRlL29zZGVwX3NlcnZpY2VfbGludXguaApAQCAtNjYsMTIgKzY2LDEy IEBACiAKIAl0eXBlZGVmIHN0cnVjdCB3b3JrX3N0cnVjdCBfd29ya2l0ZW07CiAKLV9faW5saW5l IHN0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkICpnZXRfbmV4dChzdHJ1Y3QgbGlzdF9oZWFkCSpsaXN0 KQoraW5saW5lIHN0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkICpnZXRfbmV4dChzdHJ1Y3QgbGlzdF9o ZWFkCSpsaXN0KQogewogCXJldHVybiBsaXN0LT5uZXh0OwogfQogCi1fX2lubGluZSBzdGF0aWMg c3RydWN0IGxpc3RfaGVhZAkqZ2V0X2xpc3RfaGVhZChzdHJ1Y3QgX19xdWV1ZQkqcXVldWUpCitp bmxpbmUgc3RhdGljIHN0cnVjdCBsaXN0X2hlYWQJKmdldF9saXN0X2hlYWQoc3RydWN0IF9fcXVl dWUJKnF1ZXVlKQogewogCXJldHVybiAoJihxdWV1ZS0+cXVldWUpKTsKIH0KQEAgLTgwLDI4ICs4 MCwyOCBAQCBfX2lubGluZSBzdGF0aWMgc3RydWN0IGxpc3RfaGVhZAkqZ2V0X2xpc3RfaGVhZChz dHJ1Y3QgX19xdWV1ZQkqcXVldWUpCiAjZGVmaW5lIExJU1RfQ09OVEFJTk9SKHB0ciwgdHlwZSwg bWVtYmVyKSBcCiAJY29udGFpbmVyX29mKHB0ciwgdHlwZSwgbWVtYmVyKQogCi1fX2lubGluZSBz dGF0aWMgdm9pZCBfc2V0X3RpbWVyKF90aW1lciAqcHRpbWVyLCB1MzIgZGVsYXlfdGltZSkKK2lu bGluZSBzdGF0aWMgdm9pZCBfc2V0X3RpbWVyKF90aW1lciAqcHRpbWVyLCB1MzIgZGVsYXlfdGlt ZSkKIHsKIAltb2RfdGltZXIocHRpbWVyICwgKGppZmZpZXMrKGRlbGF5X3RpbWUqSFovMTAwMCkp KTsKIH0KIAotX19pbmxpbmUgc3RhdGljIHZvaWQgX2NhbmNlbF90aW1lcihfdGltZXIgKnB0aW1l ciwgdTggKmJjYW5jZWxsZWQpCitpbmxpbmUgc3RhdGljIHZvaWQgX2NhbmNlbF90aW1lcihfdGlt ZXIgKnB0aW1lciwgdTggKmJjYW5jZWxsZWQpCiB7CiAJZGVsX3RpbWVyX3N5bmMocHRpbWVyKTsK IAkqYmNhbmNlbGxlZCA9ICB0cnVlOy8qIHRydWUgPT0gMTsgZmFsc2UgPT0gMCAqLwogfQogCi1f X2lubGluZSBzdGF0aWMgdm9pZCBfaW5pdF93b3JraXRlbShfd29ya2l0ZW0gKnB3b3JrLCB2b2lk ICpwZnVuYywgdm9pZCAqY250eCkKK2lubGluZSBzdGF0aWMgdm9pZCBfaW5pdF93b3JraXRlbShf d29ya2l0ZW0gKnB3b3JrLCB2b2lkICpwZnVuYywgdm9pZCAqY250eCkKIHsKIAlJTklUX1dPUkso cHdvcmssIHBmdW5jKTsKIH0KIAotX19pbmxpbmUgc3RhdGljIHZvaWQgX3NldF93b3JraXRlbShf d29ya2l0ZW0gKnB3b3JrKQoraW5saW5lIHN0YXRpYyB2b2lkIF9zZXRfd29ya2l0ZW0oX3dvcmtp dGVtICpwd29yaykKIHsKIAlzY2hlZHVsZV93b3JrKHB3b3JrKTsKIH0KIAotX19pbmxpbmUgc3Rh dGljIHZvaWQgX2NhbmNlbF93b3JraXRlbV9zeW5jKF93b3JraXRlbSAqcHdvcmspCitpbmxpbmUg c3RhdGljIHZvaWQgX2NhbmNlbF93b3JraXRlbV9zeW5jKF93b3JraXRlbSAqcHdvcmspCiB7CiAJ Y2FuY2VsX3dvcmtfc3luYyhwd29yayk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcv cnRsODcyM2JzL2luY2x1ZGUvcnR3X21sbWUuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMv aW5jbHVkZS9ydHdfbWxtZS5oCmluZGV4IDFlYTllYTBlOGQyZS4uODA4ODJhMDViNmZiIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X21sbWUuaAorKysg Yi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvcnR3X21sbWUuaApAQCAtNTI1LDEz ICs1MjUsMTMgQEAgZXh0ZXJuIHNpbnQgcnR3X3NlbGVjdF9hbmRfam9pbl9mcm9tX3NjYW5uZWRf cXVldWUoc3RydWN0IG1sbWVfcHJpdiAqcG1sbWVwcml2KTsKIGV4dGVybiBzaW50IHJ0d19zZXRf a2V5KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3Qgc2VjdXJpdHlfcHJpdiAqcHNlY3Vy aXR5cHJpdiwgc2ludCBrZXlpZCwgdTggc2V0X3R4LCBib29sIGVucXVldWUpOwogZXh0ZXJuIHNp bnQgcnR3X3NldF9hdXRoKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3Qgc2VjdXJpdHlf cHJpdiAqcHNlY3VyaXR5cHJpdik7CiAKLV9faW5saW5lIHN0YXRpYyB1OCAqZ2V0X2Jzc2lkKHN0 cnVjdCBtbG1lX3ByaXYgKnBtbG1lcHJpdikKK2lubGluZSBzdGF0aWMgdTggKmdldF9ic3NpZChz dHJ1Y3QgbWxtZV9wcml2ICpwbWxtZXByaXYpCiB7CS8qIGlmIHN0YV9tb2RlOnBtbG1lcHJpdi0+ Y3VyX25ldHdvcmsubmV0d29yay5NYWNBZGRyZXNzID0+IGJzc2lkICovCiAJLyogIGlmIGFkaG9j X21vZGU6cG1sbWVwcml2LT5jdXJfbmV0d29yay5uZXR3b3JrLk1hY0FkZHJlc3MgPT4gaWJzcyBt YWMgYWRkcmVzcyAqLwogCXJldHVybiBwbWxtZXByaXYtPmN1cl9uZXR3b3JrLm5ldHdvcmsuTWFj QWRkcmVzczsKIH0KIAotX19pbmxpbmUgc3RhdGljIHNpbnQgY2hlY2tfZndzdGF0ZShzdHJ1Y3Qg bWxtZV9wcml2ICpwbWxtZXByaXYsIHNpbnQgc3RhdGUpCitpbmxpbmUgc3RhdGljIHNpbnQgY2hl Y2tfZndzdGF0ZShzdHJ1Y3QgbWxtZV9wcml2ICpwbWxtZXByaXYsIHNpbnQgc3RhdGUpCiB7CiAJ aWYgKHBtbG1lcHJpdi0+Zndfc3RhdGUgJiBzdGF0ZSkKIAkJcmV0dXJuIHRydWU7CkBAIC01Mzks NyArNTM5LDcgQEAgX19pbmxpbmUgc3RhdGljIHNpbnQgY2hlY2tfZndzdGF0ZShzdHJ1Y3QgbWxt ZV9wcml2ICpwbWxtZXByaXYsIHNpbnQgc3RhdGUpCiAJcmV0dXJuIGZhbHNlOwogfQogCi1fX2lu bGluZSBzdGF0aWMgc2ludCBnZXRfZndzdGF0ZShzdHJ1Y3QgbWxtZV9wcml2ICpwbWxtZXByaXYp CitpbmxpbmUgc3RhdGljIHNpbnQgZ2V0X2Z3c3RhdGUoc3RydWN0IG1sbWVfcHJpdiAqcG1sbWVw cml2KQogewogCXJldHVybiBwbWxtZXByaXYtPmZ3X3N0YXRlOwogfQpAQCAtNTUxLDcgKzU1MSw3 IEBAIF9faW5saW5lIHN0YXRpYyBzaW50IGdldF9md3N0YXRlKHN0cnVjdCBtbG1lX3ByaXYgKnBt bG1lcHJpdikKICAqICMjIyBOT1RFOiMjIyMgKCEhISEpCiAgKiBNVVNUIFRBS0UgQ0FSRSBUSEFU IEJFRk9SRSBDQUxMSU5HIFRISVMgRlVOQywgWU9VIFNIT1VMRCBIQVZFIExPQ0tFRCBwbWxtZXBy aXYtPmxvY2sKICAqLwotX19pbmxpbmUgc3RhdGljIHZvaWQgc2V0X2Z3c3RhdGUoc3RydWN0IG1s bWVfcHJpdiAqcG1sbWVwcml2LCBzaW50IHN0YXRlKQoraW5saW5lIHN0YXRpYyB2b2lkIHNldF9m d3N0YXRlKHN0cnVjdCBtbG1lX3ByaXYgKnBtbG1lcHJpdiwgc2ludCBzdGF0ZSkKIHsKIAlwbWxt ZXByaXYtPmZ3X3N0YXRlIHw9IHN0YXRlOwogCS8qIEZPUiBIVyBpbnRlZ3JhdGlvbiAqLwpAQCAt NTYwLDcgKzU2MCw3IEBAIF9faW5saW5lIHN0YXRpYyB2b2lkIHNldF9md3N0YXRlKHN0cnVjdCBt bG1lX3ByaXYgKnBtbG1lcHJpdiwgc2ludCBzdGF0ZSkKIAl9CiB9CiAKLV9faW5saW5lIHN0YXRp YyB2b2lkIF9jbHJfZndzdGF0ZV8oc3RydWN0IG1sbWVfcHJpdiAqcG1sbWVwcml2LCBzaW50IHN0 YXRlKQoraW5saW5lIHN0YXRpYyB2b2lkIF9jbHJfZndzdGF0ZV8oc3RydWN0IG1sbWVfcHJpdiAq cG1sbWVwcml2LCBzaW50IHN0YXRlKQogewogCXBtbG1lcHJpdi0+Zndfc3RhdGUgJj0gfnN0YXRl OwogCS8qIEZPUiBIVyBpbnRlZ3JhdGlvbiAqLwpAQCAtNTczLDcgKzU3Myw3IEBAIF9faW5saW5l IHN0YXRpYyB2b2lkIF9jbHJfZndzdGF0ZV8oc3RydWN0IG1sbWVfcHJpdiAqcG1sbWVwcml2LCBz aW50IHN0YXRlKQogICogTm8gTGltaXQgb24gdGhlIGNhbGxpbmcgY29udGV4dCwKICAqIHRoZXJl Zm9yZSBzZXQgaXQgdG8gYmUgdGhlIGNyaXRpY2FsIHNlY3Rpb24uLi4KICAqLwotX19pbmxpbmUg c3RhdGljIHZvaWQgY2xyX2Z3c3RhdGUoc3RydWN0IG1sbWVfcHJpdiAqcG1sbWVwcml2LCBzaW50 IHN0YXRlKQoraW5saW5lIHN0YXRpYyB2b2lkIGNscl9md3N0YXRlKHN0cnVjdCBtbG1lX3ByaXYg KnBtbG1lcHJpdiwgc2ludCBzdGF0ZSkKIHsKIAlzcGluX2xvY2tfYmgoJnBtbG1lcHJpdi0+bG9j ayk7CiAJaWYgKGNoZWNrX2Z3c3RhdGUocG1sbWVwcml2LCBzdGF0ZSkgPT0gdHJ1ZSkKQEAgLTU4 MSw3ICs1ODEsNyBAQCBfX2lubGluZSBzdGF0aWMgdm9pZCBjbHJfZndzdGF0ZShzdHJ1Y3QgbWxt ZV9wcml2ICpwbWxtZXByaXYsIHNpbnQgc3RhdGUpCiAJc3Bpbl91bmxvY2tfYmgoJnBtbG1lcHJp di0+bG9jayk7CiB9CiAKLV9faW5saW5lIHN0YXRpYyB2b2lkIHNldF9zY2FubmVkX25ldHdvcmtf dmFsKHN0cnVjdCBtbG1lX3ByaXYgKnBtbG1lcHJpdiwgc2ludCB2YWwpCitpbmxpbmUgc3RhdGlj IHZvaWQgc2V0X3NjYW5uZWRfbmV0d29ya192YWwoc3RydWN0IG1sbWVfcHJpdiAqcG1sbWVwcml2 LCBzaW50IHZhbCkKIHsKIAlzcGluX2xvY2tfYmgoJnBtbG1lcHJpdi0+bG9jayk7CiAJcG1sbWVw cml2LT5udW1fb2Zfc2Nhbm5lZCA9IHZhbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9y dGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9p bmNsdWRlL3J0d19yZWN2LmgKaW5kZXggMWY1M2MxYzdiMGRhLi5jYTE0NTMyZGYwOWYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oCisrKyBi L2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS9ydHdfcmVjdi5oCkBAIC00MDUsNyAr NDA1LDcgQEAgc3RydWN0IHJlY3ZfYnVmICpydHdfZGVxdWV1ZV9yZWN2YnVmIChzdHJ1Y3QgX19x dWV1ZSAqcXVldWUpOwogCiB2b2lkIHJ0d19yZW9yZGVyaW5nX2N0cmxfdGltZW91dF9oYW5kbGVy KHN0cnVjdCB0aW1lcl9saXN0ICp0KTsKIAotX19pbmxpbmUgc3RhdGljIHU4ICpnZXRfcnhtZW0o dW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSkKK2lubGluZSBzdGF0aWMgdTggKmdldF9yeG1l bSh1bmlvbiByZWN2X2ZyYW1lICpwcmVjdmZyYW1lKQogewogCS8qIGFsd2F5cyByZXR1cm4gcnhf aGVhZC4uLiAqLwogCWlmIChwcmVjdmZyYW1lID09IE5VTEwpCkBAIC00MTQsNyArNDE0LDcgQEAg X19pbmxpbmUgc3RhdGljIHU4ICpnZXRfcnhtZW0odW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFt ZSkKIAlyZXR1cm4gcHJlY3ZmcmFtZS0+dS5oZHIucnhfaGVhZDsKIH0KIAotX19pbmxpbmUgc3Rh dGljIHU4ICpnZXRfcmVjdmZyYW1lX2RhdGEodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSkK K2lubGluZSBzdGF0aWMgdTggKmdldF9yZWN2ZnJhbWVfZGF0YSh1bmlvbiByZWN2X2ZyYW1lICpw cmVjdmZyYW1lKQogewogCiAJLyogYWx3YXN5IHJldHVybiByeF9kYXRhICovCkBAIC00MjUsNyAr NDI1LDcgQEAgX19pbmxpbmUgc3RhdGljIHU4ICpnZXRfcmVjdmZyYW1lX2RhdGEodW5pb24gcmVj dl9mcmFtZSAqcHJlY3ZmcmFtZSkKIAogfQogCi1fX2lubGluZSBzdGF0aWMgdTggKnJlY3ZmcmFt ZV9wdWxsKHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2ZnJhbWUsIHNpbnQgc3opCitpbmxpbmUgc3Rh dGljIHU4ICpyZWN2ZnJhbWVfcHVsbCh1bmlvbiByZWN2X2ZyYW1lICpwcmVjdmZyYW1lLCBzaW50 IHN6KQogewogCS8qICByeF9kYXRhICs9IHN6OyBtb3ZlIHJ4X2RhdGEgc3ogYnl0ZXMgIGhlcmVh ZnRlciAqLwogCkBAIC00NTAsNyArNDUwLDcgQEAgX19pbmxpbmUgc3RhdGljIHU4ICpyZWN2ZnJh bWVfcHVsbCh1bmlvbiByZWN2X2ZyYW1lICpwcmVjdmZyYW1lLCBzaW50IHN6KQogCiB9CiAKLV9f aW5saW5lIHN0YXRpYyB1OCAqcmVjdmZyYW1lX3B1dCh1bmlvbiByZWN2X2ZyYW1lICpwcmVjdmZy YW1lLCBzaW50IHN6KQoraW5saW5lIHN0YXRpYyB1OCAqcmVjdmZyYW1lX3B1dCh1bmlvbiByZWN2 X2ZyYW1lICpwcmVjdmZyYW1lLCBzaW50IHN6KQogewogCS8qICByeF90YWkgKz0gc3o7IG1vdmUg cnhfdGFpbCBzeiBieXRlcyAgaGVyZWFmdGVyICovCiAKQEAgLTQ3OSw3ICs0NzksNyBAQCBfX2lu bGluZSBzdGF0aWMgdTggKnJlY3ZmcmFtZV9wdXQodW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFt ZSwgc2ludCBzeikKIAogCiAKLV9faW5saW5lIHN0YXRpYyB1OCAqcmVjdmZyYW1lX3B1bGxfdGFp bCh1bmlvbiByZWN2X2ZyYW1lICpwcmVjdmZyYW1lLCBzaW50IHN6KQoraW5saW5lIHN0YXRpYyB1 OCAqcmVjdmZyYW1lX3B1bGxfdGFpbCh1bmlvbiByZWN2X2ZyYW1lICpwcmVjdmZyYW1lLCBzaW50 IHN6KQogewogCS8qICBybXYgZGF0YSBmcm9tIHJ4X3RhaWwgKGJ5IHlpdHNlbikgKi8KIApAQCAt NTAzLDcgKzUwMyw3IEBAIF9faW5saW5lIHN0YXRpYyB1OCAqcmVjdmZyYW1lX3B1bGxfdGFpbCh1 bmlvbiByZWN2X2ZyYW1lICpwcmVjdmZyYW1lLCBzaW50IHN6KQogCiB9CiAKLV9faW5saW5lIHN0 YXRpYyB1bmlvbiByZWN2X2ZyYW1lICpyeG1lbV90b19yZWN2ZnJhbWUodTggKnJ4bWVtKQoraW5s aW5lIHN0YXRpYyB1bmlvbiByZWN2X2ZyYW1lICpyeG1lbV90b19yZWN2ZnJhbWUodTggKnJ4bWVt KQogewogCS8qIGR1ZSB0byB0aGUgZGVzaWduIG9mIDIwNDggYnl0ZXMgYWxpZ25tZW50IG9mIHJl Y3ZfZnJhbWUsIHdlIGNhbiByZWZlcmVuY2UgdGhlIHVuaW9uIHJlY3ZfZnJhbWUgKi8KIAkvKiBm cm9tIGFueSBnaXZlbiBtZW1iZXIgb2YgcmVjdl9mcmFtZS4gKi8KQEAgLTUxMywxMyArNTEzLDEz IEBAIF9faW5saW5lIHN0YXRpYyB1bmlvbiByZWN2X2ZyYW1lICpyeG1lbV90b19yZWN2ZnJhbWUo dTggKnJ4bWVtKQogCiB9CiAKLV9faW5saW5lIHN0YXRpYyBzaW50IGdldF9yZWN2ZnJhbWVfbGVu KHVuaW9uIHJlY3ZfZnJhbWUgKnByZWN2ZnJhbWUpCitpbmxpbmUgc3RhdGljIHNpbnQgZ2V0X3Jl Y3ZmcmFtZV9sZW4odW5pb24gcmVjdl9mcmFtZSAqcHJlY3ZmcmFtZSkKIHsKIAlyZXR1cm4gcHJl Y3ZmcmFtZS0+dS5oZHIubGVuOwogfQogCiAKLV9faW5saW5lIHN0YXRpYyBzMzIgdHJhbnNsYXRl X3BlcmNlbnRhZ2VfdG9fZGJtKHUzMiBTaWduYWxTdHJlbmd0aEluZGV4KQoraW5saW5lIHN0YXRp YyBzMzIgdHJhbnNsYXRlX3BlcmNlbnRhZ2VfdG9fZGJtKHUzMiBTaWduYWxTdHJlbmd0aEluZGV4 KQogewogCXMzMglTaWduYWxQb3dlcjsgLyogIGluIGRCbS4gKi8KIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3N0YV9pbmZvLmggYi9kcml2ZXJzL3N0YWdp bmcvcnRsODcyM2JzL2luY2x1ZGUvc3RhX2luZm8uaAppbmRleCBiOWRmNDJkMDY3N2UuLmE0ODE3 ZWE5ZTRhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3N0 YV9pbmZvLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9pbmNsdWRlL3N0YV9pbmZv LmgKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QJc3RhX3ByaXYgewogfTsKIAogCi1fX2lubGlu ZSBzdGF0aWMgdTMyIHdpZmlfbWFjX2hhc2godTggKm1hYykKK2lubGluZSBzdGF0aWMgdTMyIHdp ZmlfbWFjX2hhc2godTggKm1hYykKIHsKICAgICAgICAgdTMyIHg7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS93aWZpLmggYi9kcml2ZXJzL3N0YWdpbmcv cnRsODcyM2JzL2luY2x1ZGUvd2lmaS5oCmluZGV4IDU1OWJmMjYwNmZiNy4uNzRkNWNmNDQyMzU0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvd2lmaS5oCisr KyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5jbHVkZS93aWZpLmgKQEAgLTM0Nyw3ICsz NDcsNyBAQCBlbnVtIFdJRklfUkVHX0RPTUFJTiB7CiAJKGFkZHJbNF0gPT0gMHhmZikgJiYgKGFk ZHJbNV0gPT0gMHhmZikpICA/IHRydWUgOiBmYWxzZSBcCiApCiAKLV9faW5saW5lIHN0YXRpYyBp bnQgSVNfTUNBU1QodW5zaWduZWQgY2hhciAqZGEpCitpbmxpbmUgc3RhdGljIGludCBJU19NQ0FT VCh1bnNpZ25lZCBjaGFyICpkYSkKIHsKIAlpZiAoKCpkYSkgJiAweDAxKQogCQlyZXR1cm4gdHJ1 ZTsKQEAgLTM1NSwyMCArMzU1LDIwIEBAIF9faW5saW5lIHN0YXRpYyBpbnQgSVNfTUNBU1QodW5z aWduZWQgY2hhciAqZGEpCiAJCXJldHVybiBmYWxzZTsKIH0KIAotX19pbmxpbmUgc3RhdGljIHVu c2lnbmVkIGNoYXIgKiBnZXRfcmEodW5zaWduZWQgY2hhciAqcGZyYW1lKQoraW5saW5lIHN0YXRp YyB1bnNpZ25lZCBjaGFyICogZ2V0X3JhKHVuc2lnbmVkIGNoYXIgKnBmcmFtZSkKIHsKIAl1bnNp Z25lZCBjaGFyICpyYTsKIAlyYSA9IEdldEFkZHIxUHRyKHBmcmFtZSk7CiAJcmV0dXJuIHJhOwog fQotX19pbmxpbmUgc3RhdGljIHVuc2lnbmVkIGNoYXIgKiBnZXRfdGEodW5zaWduZWQgY2hhciAq cGZyYW1lKQoraW5saW5lIHN0YXRpYyB1bnNpZ25lZCBjaGFyICogZ2V0X3RhKHVuc2lnbmVkIGNo YXIgKnBmcmFtZSkKIHsKIAl1bnNpZ25lZCBjaGFyICp0YTsKIAl0YSA9IEdldEFkZHIyUHRyKHBm cmFtZSk7CiAJcmV0dXJuIHRhOwogfQogCi1fX2lubGluZSBzdGF0aWMgdW5zaWduZWQgY2hhciAq IGdldF9kYSh1bnNpZ25lZCBjaGFyICpwZnJhbWUpCitpbmxpbmUgc3RhdGljIHVuc2lnbmVkIGNo YXIgKiBnZXRfZGEodW5zaWduZWQgY2hhciAqcGZyYW1lKQogewogCXVuc2lnbmVkIGNoYXIgKmRh OwogCXVuc2lnbmVkIGludAl0b19mcl9kcwk9IChHZXRUb0RzKHBmcmFtZSkgPDwgMSkgfCBHZXRG ckRzKHBmcmFtZSk7CkBAIC0zOTIsNyArMzkyLDcgQEAgX19pbmxpbmUgc3RhdGljIHVuc2lnbmVk IGNoYXIgKiBnZXRfZGEodW5zaWduZWQgY2hhciAqcGZyYW1lKQogfQogCiAKLV9faW5saW5lIHN0 YXRpYyB1bnNpZ25lZCBjaGFyICogZ2V0X3NhKHVuc2lnbmVkIGNoYXIgKnBmcmFtZSkKK2lubGlu ZSBzdGF0aWMgdW5zaWduZWQgY2hhciAqIGdldF9zYSh1bnNpZ25lZCBjaGFyICpwZnJhbWUpCiB7 CiAJdW5zaWduZWQgY2hhciAqc2E7CiAJdW5zaWduZWQgaW50CXRvX2ZyX2RzCT0gKEdldFRvRHMo cGZyYW1lKSA8PCAxKSB8IEdldEZyRHMocGZyYW1lKTsKQEAgLTQxNSw3ICs0MTUsNyBAQCBfX2lu bGluZSBzdGF0aWMgdW5zaWduZWQgY2hhciAqIGdldF9zYSh1bnNpZ25lZCBjaGFyICpwZnJhbWUp CiAJcmV0dXJuIHNhOwogfQogCi1fX2lubGluZSBzdGF0aWMgdW5zaWduZWQgY2hhciAqIGdldF9o ZHJfYnNzaWQodW5zaWduZWQgY2hhciAqcGZyYW1lKQoraW5saW5lIHN0YXRpYyB1bnNpZ25lZCBj aGFyICogZ2V0X2hkcl9ic3NpZCh1bnNpZ25lZCBjaGFyICpwZnJhbWUpCiB7CiAJdW5zaWduZWQg Y2hhciAqc2EgPSBOVUxMOwogCXVuc2lnbmVkIGludAl0b19mcl9kcwk9IChHZXRUb0RzKHBmcmFt ZSkgPDwgMSkgfCBHZXRGckRzKHBmcmFtZSk7CkBAIC00MzksNyArNDM5LDcgQEAgX19pbmxpbmUg c3RhdGljIHVuc2lnbmVkIGNoYXIgKiBnZXRfaGRyX2Jzc2lkKHVuc2lnbmVkIGNoYXIgKnBmcmFt ZSkKIH0KIAogCi1fX2lubGluZSBzdGF0aWMgaW50IElzRnJhbWVUeXBlQ3RybCh1bnNpZ25lZCBj aGFyICpwZnJhbWUpCitpbmxpbmUgc3RhdGljIGludCBJc0ZyYW1lVHlwZUN0cmwodW5zaWduZWQg Y2hhciAqcGZyYW1lKQogewogCWlmIChXSUZJX0NUUkxfVFlQRSA9PSBHZXRGcmFtZVR5cGUocGZy YW1lKSkKIAkJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcy M2JzL2luY2x1ZGUvd2xhbl9ic3NkZWYuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvaW5j bHVkZS93bGFuX2Jzc2RlZi5oCmluZGV4IGJkYjE0YTg0ZTVhNS4uOTRjYjMyNDhiYzcxIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvd2xhbl9ic3NkZWYuaAor KysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL2luY2x1ZGUvd2xhbl9ic3NkZWYuaApAQCAt MjIzLDcgKzIyMyw3IEBAIHN0cnVjdCB3bGFuX2Jzc2lkX2V4IHsKIAl1OCAgSUVzW01BWF9JRV9T Wl07CS8qIHRpbWVzdGFtcCwgYmVhY29uIGludGVydmFsLCBhbmQgY2FwYWJpbGl0eSBpbmZvcm1h dGlvbikgKi8KIH0gX19wYWNrZWQ7CiAKLV9faW5saW5lICBzdGF0aWMgdWludCBnZXRfd2xhbl9i c3NpZF9leF9zeihzdHJ1Y3Qgd2xhbl9ic3NpZF9leCAqYnNzKQoraW5saW5lICBzdGF0aWMgdWlu dCBnZXRfd2xhbl9ic3NpZF9leF9zeihzdHJ1Y3Qgd2xhbl9ic3NpZF9leCAqYnNzKQogewogCXJl dHVybiAoc2l6ZW9mKHN0cnVjdCB3bGFuX2Jzc2lkX2V4KSAtIE1BWF9JRV9TWiArIGJzcy0+SUVM ZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvYW1pc2VyaWFsLmMgYi9kcml2ZXJz L3R0eS9hbWlzZXJpYWwuYwppbmRleCAzNGRlYWQ2MTQxNDkuLmMxYmQ5Yjc0ZjRkNSAxMDA2NDQK LS0tIGEvZHJpdmVycy90dHkvYW1pc2VyaWFsLmMKKysrIGIvZHJpdmVycy90dHkvYW1pc2VyaWFs LmMKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBzZXJpYWxfcGFyYW5vaWFf Y2hlY2soc3RydWN0IHNlcmlhbF9zdGF0ZSAqaW5mbywKICNkZWZpbmUgU0VSX0NUUyAgICAgKDE8 PDQpCiAjZGVmaW5lIFNFUl9EU1IgICAgICgxPDwzKQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lk IHJ0c2R0cl9jdHJsKGludCBiaXRzKQorc3RhdGljIGlubGluZSB2b2lkIHJ0c2R0cl9jdHJsKGlu dCBiaXRzKQogewogICAgIGNpYWIucHJhID0gKChiaXRzICYgKFNFUl9SVFMgfCBTRVJfRFRSKSkg XiAoU0VSX1JUUyB8IFNFUl9EVFIpKSB8IChjaWFiLnByYSAmIH4oU0VSX1JUUyB8IFNFUl9EVFIp KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pcDIyemlsb2cuYyBiL2RyaXZl cnMvdHR5L3NlcmlhbC9pcDIyemlsb2cuYwppbmRleCA4YzgxMDczM2RmM2QuLjhjY2Y4YjdlZThi YiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL2lwMjJ6aWxvZy5jCisrKyBiL2RyaXZl cnMvdHR5L3NlcmlhbC9pcDIyemlsb2cuYwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0YXRpYyBpcnFy ZXR1cm5fdCBpcDIyemlsb2dfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKIC8qIEEg Y29udmVuaWVudCB3YXkgdG8gcXVpY2tseSBnZXQgUjAgc3RhdHVzLiAgVGhlIGNhbGxlciBtdXN0 IF9ub3RfIGhvbGQgdGhlCiAgKiBwb3J0IGxvY2ssIGl0IGlzIGFjcXVpcmVkIGhlcmUuCiAgKi8K LXN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgaXAyMnppbG9nX3JlYWRfY2hhbm5lbF9z dGF0dXMoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hh ciBpcDIyemlsb2dfcmVhZF9jaGFubmVsX3N0YXR1cyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQog ewogCXN0cnVjdCB6aWxvZ19jaGFubmVsICpjaGFubmVsOwogCXVuc2lnbmVkIGNoYXIgc3RhdHVz OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3N1bnNhYi5jIGIvZHJpdmVycy90dHkv c2VyaWFsL3N1bnNhYi5jCmluZGV4IDcyMTMxYjVlMTMyZS4uZWM2Mjg0M2EzOWY0IDEwMDY0NAot LS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuc2FiLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFs L3N1bnNhYi5jCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBjaGFyICpzYWI4MjUzMl92ZXJzaW9u WzE2XSA9IHsKICNkZWZpbmUgU0FCODI1MzJfUkVDVl9GSUZPX1NJWkUJMzIgICAgICAvKiBTdGFu ZGFyZCBhc3luYyBmaWZvIHNpemVzICovCiAjZGVmaW5lIFNBQjgyNTMyX1hNSVRfRklGT19TSVpF CTMyCiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc3Vuc2FiX3RlY193YWl0KHN0cnVjdCB1YXJ0 X3N1bnNhYl9wb3J0ICp1cCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdW5zYWJfdGVjX3dhaXQoc3Ry dWN0IHVhcnRfc3Vuc2FiX3BvcnQgKnVwKQogewogCWludCB0aW1lb3V0ID0gdXAtPnRlY190aW1l b3V0OwogCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9pZCBzdW5zYWJf dGVjX3dhaXQoc3RydWN0IHVhcnRfc3Vuc2FiX3BvcnQgKnVwKQogCQl1ZGVsYXkoMSk7CiB9CiAK LXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc3Vuc2FiX2NlY193YWl0KHN0cnVjdCB1YXJ0X3N1bnNh Yl9wb3J0ICp1cCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdW5zYWJfY2VjX3dhaXQoc3RydWN0IHVh cnRfc3Vuc2FiX3BvcnQgKnVwKQogewogCWludCB0aW1lb3V0ID0gdXAtPmNlY190aW1lb3V0Owog CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYyBiL2RyaXZlcnMvdHR5 L3NlcmlhbC9zdW56aWxvZy5jCmluZGV4IGJjN2FmOGIwOGE3Mi4uNWM3ZjE2NDhmNTRkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYworKysgYi9kcml2ZXJzL3R0eS9z ZXJpYWwvc3Vuemlsb2cuYwpAQCAtNTkwLDcgKzU5MCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBz dW56aWxvZ19pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogLyogQSBjb252ZW5pZW50 IHdheSB0byBxdWlja2x5IGdldCBSMCBzdGF0dXMuICBUaGUgY2FsbGVyIG11c3QgX25vdF8gaG9s ZCB0aGUKICAqIHBvcnQgbG9jaywgaXQgaXMgYWNxdWlyZWQgaGVyZS4KICAqLwotc3RhdGljIF9f aW5saW5lX18gdW5zaWduZWQgY2hhciBzdW56aWxvZ19yZWFkX2NoYW5uZWxfc3RhdHVzKHN0cnVj dCB1YXJ0X3BvcnQgKnBvcnQpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgc3Vuemlsb2df cmVhZF9jaGFubmVsX3N0YXR1cyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogewogCXN0cnVjdCB6 aWxvZ19jaGFubmVsIF9faW9tZW0gKmNoYW5uZWw7CiAJdW5zaWduZWQgY2hhciBzdGF0dXM7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYyBiL2RyaXZlcnMvdmlk ZW8vZmJkZXYvY29yZS9mYmNvbi5jCmluZGV4IDc1ZWJiYmYwYTFmYi4uNTdmNzRiZjc3MzFmIDEw MDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYworKysgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYwpAQCAtMTgxLDEwICsxODEsMTAgQEAgc3RhdGljIHZv aWQgZmJjb25fc2V0X3BhbGV0dGUoc3RydWN0IHZjX2RhdGEgKnZjLCBjb25zdCB1bnNpZ25lZCBj aGFyICp0YWJsZSk7CiAvKgogICogIEludGVybmFsIHJvdXRpbmVzCiAgKi8KLXN0YXRpYyBfX2lu bGluZV9fIHZvaWQgeXdyYXBfdXAoc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgY291bnQpOwotc3Rh dGljIF9faW5saW5lX18gdm9pZCB5d3JhcF9kb3duKHN0cnVjdCB2Y19kYXRhICp2YywgaW50IGNv dW50KTsKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgeXBhbl91cChzdHJ1Y3QgdmNfZGF0YSAqdmMs IGludCBjb3VudCk7Ci1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHlwYW5fZG93bihzdHJ1Y3QgdmNf ZGF0YSAqdmMsIGludCBjb3VudCk7CitzdGF0aWMgaW5saW5lIHZvaWQgeXdyYXBfdXAoc3RydWN0 IHZjX2RhdGEgKnZjLCBpbnQgY291bnQpOworc3RhdGljIGlubGluZSB2b2lkIHl3cmFwX2Rvd24o c3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgY291bnQpOworc3RhdGljIGlubGluZSB2b2lkIHlwYW5f dXAoc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgY291bnQpOworc3RhdGljIGlubGluZSB2b2lkIHlw YW5fZG93bihzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBjb3VudCk7CiBzdGF0aWMgdm9pZCBmYmNv bl9ibW92ZV9yZWMoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZGlzcGxheSAqcCwgaW50IHN5 LCBpbnQgc3gsCiAJCQkgICAgaW50IGR5LCBpbnQgZHgsIGludCBoZWlnaHQsIGludCB3aWR0aCwg dV9pbnQgeV9icmVhayk7CiBzdGF0aWMgdm9pZCBmYmNvbl9zZXRfZGlzcChzdHJ1Y3QgZmJfaW5m byAqaW5mbywgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsCkBAIC0xNDQyLDcgKzE0NDIs NyBAQCBzdGF0aWMgdm9pZCBmYmNvbl9zZXRfZGlzcChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3Ry dWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsCiAJfQogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2 b2lkIHl3cmFwX3VwKHN0cnVjdCB2Y19kYXRhICp2YywgaW50IGNvdW50KQorc3RhdGljIGlubGlu ZSB2b2lkIHl3cmFwX3VwKHN0cnVjdCB2Y19kYXRhICp2YywgaW50IGNvdW50KQogewogCXN0cnVj dCBmYl9pbmZvICppbmZvID0gcmVnaXN0ZXJlZF9mYltjb24yZmJfbWFwW3ZjLT52Y19udW1dXTsK IAlzdHJ1Y3QgZmJjb25fb3BzICpvcHMgPSBpbmZvLT5mYmNvbl9wYXI7CkBAIC0xNDYxLDcgKzE0 NjEsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHl3cmFwX3VwKHN0cnVjdCB2Y19kYXRhICp2 YywgaW50IGNvdW50KQogCXNjcm9sbGJhY2tfY3VycmVudCA9IDA7CiB9CiAKLXN0YXRpYyBfX2lu bGluZV9fIHZvaWQgeXdyYXBfZG93bihzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBjb3VudCkKK3N0 YXRpYyBpbmxpbmUgdm9pZCB5d3JhcF9kb3duKHN0cnVjdCB2Y19kYXRhICp2YywgaW50IGNvdW50 KQogewogCXN0cnVjdCBmYl9pbmZvICppbmZvID0gcmVnaXN0ZXJlZF9mYltjb24yZmJfbWFwW3Zj LT52Y19udW1dXTsKIAlzdHJ1Y3QgZmJjb25fb3BzICpvcHMgPSBpbmZvLT5mYmNvbl9wYXI7CkBA IC0xNDgwLDcgKzE0ODAsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHl3cmFwX2Rvd24oc3Ry dWN0IHZjX2RhdGEgKnZjLCBpbnQgY291bnQpCiAJc2Nyb2xsYmFja19jdXJyZW50ID0gMDsKIH0K IAotc3RhdGljIF9faW5saW5lX18gdm9pZCB5cGFuX3VwKHN0cnVjdCB2Y19kYXRhICp2YywgaW50 IGNvdW50KQorc3RhdGljIGlubGluZSB2b2lkIHlwYW5fdXAoc3RydWN0IHZjX2RhdGEgKnZjLCBp bnQgY291bnQpCiB7CiAJc3RydWN0IGZiX2luZm8gKmluZm8gPSByZWdpc3RlcmVkX2ZiW2NvbjJm Yl9tYXBbdmMtPnZjX251bV1dOwogCXN0cnVjdCBkaXNwbGF5ICpwID0gJmZiX2Rpc3BsYXlbdmMt PnZjX251bV07CkBAIC0xNTA0LDcgKzE1MDQsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHlw YW5fdXAoc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgY291bnQpCiAJc2Nyb2xsYmFja19jdXJyZW50 ID0gMDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCB5cGFuX3VwX3JlZHJhdyhzdHJ1Y3Qg dmNfZGF0YSAqdmMsIGludCB0LCBpbnQgY291bnQpCitzdGF0aWMgaW5saW5lIHZvaWQgeXBhbl91 cF9yZWRyYXcoc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgdCwgaW50IGNvdW50KQogewogCXN0cnVj dCBmYl9pbmZvICppbmZvID0gcmVnaXN0ZXJlZF9mYltjb24yZmJfbWFwW3ZjLT52Y19udW1dXTsK IAlzdHJ1Y3QgZmJjb25fb3BzICpvcHMgPSBpbmZvLT5mYmNvbl9wYXI7CkBAIC0xNTI4LDcgKzE1 MjgsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHlwYW5fdXBfcmVkcmF3KHN0cnVjdCB2Y19k YXRhICp2YywgaW50IHQsIGludCBjb3VudCkKIAlzY3JvbGxiYWNrX2N1cnJlbnQgPSAwOwogfQog Ci1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHlwYW5fZG93bihzdHJ1Y3QgdmNfZGF0YSAqdmMsIGlu dCBjb3VudCkKK3N0YXRpYyBpbmxpbmUgdm9pZCB5cGFuX2Rvd24oc3RydWN0IHZjX2RhdGEgKnZj LCBpbnQgY291bnQpCiB7CiAJc3RydWN0IGZiX2luZm8gKmluZm8gPSByZWdpc3RlcmVkX2ZiW2Nv bjJmYl9tYXBbdmMtPnZjX251bV1dOwogCXN0cnVjdCBkaXNwbGF5ICpwID0gJmZiX2Rpc3BsYXlb dmMtPnZjX251bV07CkBAIC0xNTUyLDcgKzE1NTIsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lk IHlwYW5fZG93bihzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBjb3VudCkKIAlzY3JvbGxiYWNrX2N1 cnJlbnQgPSAwOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHlwYW5fZG93bl9yZWRyYXco c3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgdCwgaW50IGNvdW50KQorc3RhdGljIGlubGluZSB2b2lk IHlwYW5fZG93bl9yZWRyYXcoc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgdCwgaW50IGNvdW50KQog ewogCXN0cnVjdCBmYl9pbmZvICppbmZvID0gcmVnaXN0ZXJlZF9mYltjb24yZmJfbWFwW3ZjLT52 Y19udW1dXTsKIAlzdHJ1Y3QgZmJjb25fb3BzICpvcHMgPSBpbmZvLT5mYmNvbl9wYXI7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9m ZmIuYwppbmRleCA2YjE5MTU4NzJhZjEuLmQ4NjkxMTcwN2U1NCAxMDA2NDQKLS0tIGEvZHJpdmVy cy92aWRlby9mYmRldi9mZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jCkBAIC00 MTEsNyArNDExLDcgQEAgc3RhdGljIGludCBmZmJfc3luYyhzdHJ1Y3QgZmJfaW5mbyAqcCkKIAly ZXR1cm4gMDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBmZmJfcm9wKHN0cnVjdCBmZmJf cGFyICpwYXIsIHUzMiByb3ApCitzdGF0aWMgaW5saW5lIHZvaWQgZmZiX3JvcChzdHJ1Y3QgZmZi X3BhciAqcGFyLCB1MzIgcm9wKQogewogCWlmIChwYXItPnJvcF9jYWNoZSAhPSByb3ApIHsKIAkJ RkZCRmlmbyhwYXIsIDEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9pbnRlbGZi L2ludGVsZmJkcnYuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZiZHJ2LmMK aW5kZXggZDc0NjNhMmE1ZDgzLi5kZTFlZTBmNTQwNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlk ZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZiZHJ2LmMKKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9p bnRlbGZiL2ludGVsZmJkcnYuYwpAQCAtMjcwLDcgKzI3MCw3IEBAIE1PRFVMRV9QQVJNX0RFU0Mo bW9kZSwKICNkZWZpbmUgT1BUX0lOVFZBTChvcHQsIG5hbWUpIHNpbXBsZV9zdHJ0b3VsKG9wdCAr IHN0cmxlbihuYW1lKSArIDEsIE5VTEwsIDApCiAjZGVmaW5lIE9QVF9TVFJWQUwob3B0LCBuYW1l KSAob3B0ICsgc3RybGVuKG5hbWUpKQogCi1zdGF0aWMgX19pbmxpbmVfXyBjaGFyICogZ2V0X29w dF9zdHJpbmcoY29uc3QgY2hhciAqdGhpc19vcHQsIGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMg aW5saW5lIGNoYXIgKiBnZXRfb3B0X3N0cmluZyhjb25zdCBjaGFyICp0aGlzX29wdCwgY29uc3Qg Y2hhciAqbmFtZSkKIHsKIAljb25zdCBjaGFyICpwOwogCWludCBpOwpAQCAtMjg4LDcgKzI4OCw3 IEBAIHN0YXRpYyBfX2lubGluZV9fIGNoYXIgKiBnZXRfb3B0X3N0cmluZyhjb25zdCBjaGFyICp0 aGlzX29wdCwgY29uc3QgY2hhciAqbmFtZSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgX19p bmxpbmVfXyBpbnQgZ2V0X29wdF9pbnQoY29uc3QgY2hhciAqdGhpc19vcHQsIGNvbnN0IGNoYXIg Km5hbWUsCitzdGF0aWMgaW5saW5lIGludCBnZXRfb3B0X2ludChjb25zdCBjaGFyICp0aGlzX29w dCwgY29uc3QgY2hhciAqbmFtZSwKIAkJCQkgIGludCAqcmV0KQogewogCWlmICghcmV0KQpAQCAt MzAxLDcgKzMwMSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfb3B0X2ludChjb25zdCBj aGFyICp0aGlzX29wdCwgY29uc3QgY2hhciAqbmFtZSwKIAlyZXR1cm4gMTsKIH0KIAotc3RhdGlj IF9faW5saW5lX18gaW50IGdldF9vcHRfYm9vbChjb25zdCBjaGFyICp0aGlzX29wdCwgY29uc3Qg Y2hhciAqbmFtZSwKK3N0YXRpYyBpbmxpbmUgaW50IGdldF9vcHRfYm9vbChjb25zdCBjaGFyICp0 aGlzX29wdCwgY29uc3QgY2hhciAqbmFtZSwKIAkJCQkgICBib29sICpyZXQpCiB7CiAJaWYgKCFy ZXQpCkBAIC05MDcsNyArOTA3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxmYl9wY2lfdW5yZWdpc3Rl cihzdHJ1Y3QgcGNpX2RldiAqcGRldikKICAqICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXIg ZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICoKICAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLV9faW5saW5lX18g aW50IGludGVsZmJfdmFyX3RvX2RlcHRoKGNvbnN0IHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAq dmFyKQoraW5saW5lIGludCBpbnRlbGZiX3Zhcl90b19kZXB0aChjb25zdCBzdHJ1Y3QgZmJfdmFy X3NjcmVlbmluZm8gKnZhcikKIHsKIAlEQkdfTVNHKCJpbnRlbGZiX3Zhcl90b19kZXB0aDogYnBw OiAlZCwgZ3JlZW4ubGVuZ3RoIGlzICVkXG4iLAogCQl2YXItPmJpdHNfcGVyX3BpeGVsLCB2YXIt PmdyZWVuLmxlbmd0aCk7CkBAIC05MjMsNyArOTIzLDcgQEAgX19pbmxpbmVfXyBpbnQgaW50ZWxm Yl92YXJfdG9fZGVwdGgoY29uc3Qgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpCiB9CiAK IAotc3RhdGljIF9faW5saW5lX18gaW50IHZhcl90b19yZWZyZXNoKGNvbnN0IHN0cnVjdCBmYl92 YXJfc2NyZWVuaW5mbyAqdmFyKQorc3RhdGljIGlubGluZSBpbnQgdmFyX3RvX3JlZnJlc2goY29u c3Qgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpCiB7CiAJaW50IHh0b3QgPSB2YXItPnhy ZXMgKyB2YXItPmxlZnRfbWFyZ2luICsgdmFyLT5yaWdodF9tYXJnaW4gKwogCQkgICB2YXItPmhz eW5jX2xlbjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZi aHcuYyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRlbGZiaHcuYwppbmRleCA1N2Fm Zjc0NTBiY2UuLmJiZDI1ODMzMGYyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9p bnRlbGZiL2ludGVsZmJody5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvaW50ZWxmYi9pbnRl bGZiaHcuYwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgc3RhdGljIGludCBjYWxjX3BsbF9wYXJhbXMo aW50IGluZGV4LCBpbnQgY2xvY2ssIHUzMiAqcmV0bTEsIHUzMiAqcmV0bTIsCiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIGludCBjaGVja19vdmVyZmxvdyh1MzIgdmFsdWUsIHUz MiBsaW1pdCwKK3N0YXRpYyBpbmxpbmUgaW50IGNoZWNrX292ZXJmbG93KHUzMiB2YWx1ZSwgdTMy IGxpbWl0LAogCQkJCSAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24pCiB7CiAJaWYgKHZhbHVl ID4gbGltaXQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvbWFzdGVycy9tYXRyb3hfdzEuYyBi L2RyaXZlcnMvdzEvbWFzdGVycy9tYXRyb3hfdzEuYwppbmRleCBkODNkN2M5OWQ4MWQuLjhiZGVl MjYxNzcwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS9tYXN0ZXJzL21hdHJveF93MS5jCisrKyBi L2RyaXZlcnMvdzEvbWFzdGVycy9tYXRyb3hfdzEuYwpAQCAtNzgsNyArNzgsNyBAQCBzdHJ1Y3Qg bWF0cm94X2RldmljZQogICoKICAqIFBvcnQgbWFwcGluZy4KICAqLwotc3RhdGljIF9faW5saW5l X18gdTggbWF0cm94X3cxX3JlYWRfcmVnKHN0cnVjdCBtYXRyb3hfZGV2aWNlICpkZXYsIHU4IHJl ZykKK3N0YXRpYyBpbmxpbmUgdTggbWF0cm94X3cxX3JlYWRfcmVnKHN0cnVjdCBtYXRyb3hfZGV2 aWNlICpkZXYsIHU4IHJlZykKIHsKIAl1OCByZXQ7CiAKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGlj IF9faW5saW5lX18gdTggbWF0cm94X3cxX3JlYWRfcmVnKHN0cnVjdCBtYXRyb3hfZGV2aWNlICpk ZXYsIHU4IHJlZykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIG1h dHJveF93MV93cml0ZV9yZWcoc3RydWN0IG1hdHJveF9kZXZpY2UgKmRldiwgdTggcmVnLCB1OCB2 YWwpCitzdGF0aWMgaW5saW5lIHZvaWQgbWF0cm94X3cxX3dyaXRlX3JlZyhzdHJ1Y3QgbWF0cm94 X2RldmljZSAqZGV2LCB1OCByZWcsIHU4IHZhbCkKIHsKIAl3cml0ZWIocmVnLCBkZXYtPnBvcnRf aW5kZXgpOwogCXdyaXRlYih2YWwsIGRldi0+cG9ydF9kYXRhKTsKZGlmZiAtLWdpdCBhL2ZzL2Nv ZGEvY29kYV9saW51eC5oIGIvZnMvY29kYS9jb2RhX2xpbnV4LmgKaW5kZXggMTI2MTU1Y2FkZmE5 Li41ZjMyNGJiMGJkMTMgMTAwNjQ0Ci0tLSBhL2ZzL2NvZGEvY29kYV9saW51eC5oCisrKyBiL2Zz L2NvZGEvY29kYV9saW51eC5oCkBAIC04MiwxOCArODIsMTggQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgY29kYV9pbm9kZV9pbmZvICpJVE9DKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAJcmV0dXJuIGNv bnRhaW5lcl9vZihpbm9kZSwgc3RydWN0IGNvZGFfaW5vZGVfaW5mbywgdmZzX2lub2RlKTsKIH0K IAotc3RhdGljIF9faW5saW5lX18gc3RydWN0IENvZGFGaWQgKmNvZGFfaTJmKHN0cnVjdCBpbm9k ZSAqaW5vZGUpCitzdGF0aWMgaW5saW5lIHN0cnVjdCBDb2RhRmlkICpjb2RhX2kyZihzdHJ1Y3Qg aW5vZGUgKmlub2RlKQogewogCXJldHVybiAmKElUT0MoaW5vZGUpLT5jX2ZpZCk7CiB9CiAKLXN0 YXRpYyBfX2lubGluZV9fIGNoYXIgKmNvZGFfaTJzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCitzdGF0 aWMgaW5saW5lIGNoYXIgKmNvZGFfaTJzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiB7CiAJcmV0dXJu IGNvZGFfZjJzKCYoSVRPQyhpbm9kZSktPmNfZmlkKSk7CiB9CiAKIC8qIHRoaXMgd2lsbCBub3Qg emFwIHRoZSBpbm9kZSBhd2F5ICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGNvZGFfZmxhZ19p bm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgZmxhZykKK3N0YXRpYyBpbmxpbmUgdm9pZCBj b2RhX2ZsYWdfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgaW50IGZsYWcpCiB7CiAJc3RydWN0 IGNvZGFfaW5vZGVfaW5mbyAqY2lpID0gSVRPQyhpbm9kZSk7CiAKZGlmZiAtLWdpdCBhL2ZzL2Zy ZWV2eGZzL3Z4ZnNfaW5vZGUuYyBiL2ZzL2ZyZWV2eGZzL3Z4ZnNfaW5vZGUuYwppbmRleCAxZjQx YjI1ZWYzOGIuLmEwYjMyOTM0YjFlNCAxMDA2NDQKLS0tIGEvZnMvZnJlZXZ4ZnMvdnhmc19pbm9k ZS5jCisrKyBiL2ZzL2ZyZWV2eGZzL3Z4ZnNfaW5vZGUuYwpAQCAtNzQsNyArNzQsNyBAQCB2eGZz X2R1bXBpKHN0cnVjdCB2eGZzX2lub2RlX2luZm8gKnZpcCwgaW5vX3QgaW5vKQogICogIHZ4ZnNf dHJhbnNtb2QgcmV0dXJucyBhIExpbnV4IG1vZGVfdCBmb3IgYSBnaXZlbgogICogIFZ4RlMgaW5v ZGUgc3RydWN0dXJlLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyB1bW9kZV90CitzdGF0aWMgaW5s aW5lIHVtb2RlX3QKIHZ4ZnNfdHJhbnNtb2Qoc3RydWN0IHZ4ZnNfaW5vZGVfaW5mbyAqdmlwKQog ewogCXVtb2RlX3QJCQlyZXQgPSB2aXAtPnZpaV9tb2RlICYgflZYRlNfVFlQRV9NQVNLOwpkaWZm IC0tZ2l0IGEvZnMvbmZzZC9uZnNmaC5oIGIvZnMvbmZzZC9uZnNmaC5oCmluZGV4IDc1NWUyNTZh OTEwMy4uZjM5OWY0YTE2ZmM5IDEwMDY0NAotLS0gYS9mcy9uZnNkL25mc2ZoLmgKKysrIGIvZnMv bmZzZC9uZnNmaC5oCkBAIC0xNjYsNyArMTY2LDcgQEAgX19iZTMyCWZoX2NvbXBvc2Uoc3RydWN0 IHN2Y19maCAqLCBzdHJ1Y3Qgc3ZjX2V4cG9ydCAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdAog X19iZTMyCWZoX3VwZGF0ZShzdHJ1Y3Qgc3ZjX2ZoICopOwogdm9pZAlmaF9wdXQoc3RydWN0IHN2 Y19maCAqKTsKIAotc3RhdGljIF9faW5saW5lX18gc3RydWN0IHN2Y19maCAqCitzdGF0aWMgaW5s aW5lIHN0cnVjdCBzdmNfZmggKgogZmhfY29weShzdHJ1Y3Qgc3ZjX2ZoICpkc3QsIHN0cnVjdCBz dmNfZmggKnNyYykKIHsKIAlXQVJOX09OKHNyYy0+ZmhfZGVudHJ5IHx8IHNyYy0+ZmhfbG9ja2Vk KTsKQEAgLTE4Miw3ICsxODIsNyBAQCBmaF9jb3B5X3NoYWxsb3coc3RydWN0IGtuZnNkX2ZoICpk c3QsIHN0cnVjdCBrbmZzZF9maCAqc3JjKQogCW1lbWNweSgmZHN0LT5maF9iYXNlLCAmc3JjLT5m aF9iYXNlLCBzcmMtPmZoX3NpemUpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3Qgc3Zj X2ZoICoKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHN2Y19maCAqCiBmaF9pbml0KHN0cnVjdCBzdmNf ZmggKmZocCwgaW50IG1heHNpemUpCiB7CiAJbWVtc2V0KGZocCwgMCwgc2l6ZW9mKCpmaHApKTsK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2djYy5oIGIvaW5jbHVkZS9hY3Bp L3BsYXRmb3JtL2FjZ2NjLmgKaW5kZXggMDg1ZGI5NWEzZGFlLi4zMmFiYWE2MWVmOTYgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2djYy5oCisrKyBiL2luY2x1ZGUvYWNwaS9w bGF0Zm9ybS9hY2djYy5oCkBAIC0yNiw3ICsyNiw3IEBAIHR5cGVkZWYgX19idWlsdGluX3ZhX2xp c3QgdmFfbGlzdDsKICNlbmRpZgogI2VuZGlmCiAKLSNkZWZpbmUgQUNQSV9JTkxJTkUgICAgICAg ICAgICAgX19pbmxpbmVfXworI2RlZmluZSBBQ1BJX0lOTElORSAgICAgICAgICAgICBpbmxpbmUK IAogLyogRnVuY3Rpb24gbmFtZSBpcyB1c2VkIGZvciBkZWJ1ZyBvdXRwdXQuIE5vbi1BTlNJLCBj b21waWxlci1kZXBlbmRlbnQgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL3BsYXRmb3Jt L2FjaW50ZWwuaCBiL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2ludGVsLmgKaW5kZXggNjI2MjY1 ODMzYTU0Li5mYzAxM2VmZTYwNmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9h Y2ludGVsLmgKKysrIGIvaW5jbHVkZS9hY3BpL3BsYXRmb3JtL2FjaW50ZWwuaApAQCAtMjIsNyAr MjIsNyBAQAogCiAjZGVmaW5lIENPTVBJTEVSX0RFUEVOREVOVF9JTlQ2NCAgICBfX2ludDY0CiAj ZGVmaW5lIENPTVBJTEVSX0RFUEVOREVOVF9VSU5UNjQgICB1bnNpZ25lZCBfX2ludDY0Ci0jZGVm aW5lIEFDUElfSU5MSU5FICAgICAgICAgICAgICAgICBfX2lubGluZQorI2RlZmluZSBBQ1BJX0lO TElORSAgICAgICAgICAgICAgICAgaW5saW5lCiAKIC8qCiAgKiBDYWxsaW5nIGNvbnZlbnRpb25z OgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9pZGVfaW9wcy5oIGIvaW5jbHVkZS9h c20tZ2VuZXJpYy9pZGVfaW9wcy5oCmluZGV4IDgxZGZhM2VlNWUwNi4uYzcwMjg2NzRhMDNkIDEw MDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL2lkZV9pb3BzLmgKKysrIGIvaW5jbHVkZS9h c20tZ2VuZXJpYy9pZGVfaW9wcy5oCkBAIC02LDcgKzYsNyBAQAogI2RlZmluZSBfX2lkZV9vdXRz dwlvdXRzdwogI2RlZmluZSBfX2lkZV9vdXRzbAlvdXRzbAogCi1zdGF0aWMgX19pbmxpbmVfXyB2 b2lkIF9faWRlX21tX2luc3codm9pZCBfX2lvbWVtICpwb3J0LCB2b2lkICphZGRyLCB1MzIgY291 bnQpCitzdGF0aWMgaW5saW5lIHZvaWQgX19pZGVfbW1faW5zdyh2b2lkIF9faW9tZW0gKnBvcnQs IHZvaWQgKmFkZHIsIHUzMiBjb3VudCkKIHsKIAl3aGlsZSAoY291bnQtLSkgewogCQkqKHUxNiAq KWFkZHIgPSByZWFkdyhwb3J0KTsKQEAgLTE0LDcgKzE0LDcgQEAgc3RhdGljIF9faW5saW5lX18g dm9pZCBfX2lkZV9tbV9pbnN3KHZvaWQgX19pb21lbSAqcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNv dW50KQogCX0KIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2lkZV9tbV9pbnNsKHZvaWQg X19pb21lbSAqcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KQorc3RhdGljIGlubGluZSB2b2lk IF9faWRlX21tX2luc2wodm9pZCBfX2lvbWVtICpwb3J0LCB2b2lkICphZGRyLCB1MzIgY291bnQp CiB7CiAJd2hpbGUgKGNvdW50LS0pIHsKIAkJKih1MzIgKilhZGRyID0gcmVhZGwocG9ydCk7CkBA IC0yMiw3ICsyMiw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19pZGVfbW1faW5zbCh2b2lk IF9faW9tZW0gKnBvcnQsIHZvaWQgKmFkZHIsIHUzMiBjb3VudCkKIAl9CiB9CiAKLXN0YXRpYyBf X2lubGluZV9fIHZvaWQgX19pZGVfbW1fb3V0c3codm9pZCBfX2lvbWVtICpwb3J0LCB2b2lkICph ZGRyLCB1MzIgY291bnQpCitzdGF0aWMgaW5saW5lIHZvaWQgX19pZGVfbW1fb3V0c3codm9pZCBf X2lvbWVtICpwb3J0LCB2b2lkICphZGRyLCB1MzIgY291bnQpCiB7CiAJd2hpbGUgKGNvdW50LS0p IHsKIAkJd3JpdGV3KCoodTE2ICopYWRkciwgcG9ydCk7CkBAIC0zMCw3ICszMCw3IEBAIHN0YXRp YyBfX2lubGluZV9fIHZvaWQgX19pZGVfbW1fb3V0c3codm9pZCBfX2lvbWVtICpwb3J0LCB2b2lk ICphZGRyLCB1MzIgY291bnQpCiAJfQogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9faWRl X21tX291dHNsKHZvaWQgX19pb21lbSAqIHBvcnQsIHZvaWQgKmFkZHIsIHUzMiBjb3VudCkKK3N0 YXRpYyBpbmxpbmUgdm9pZCBfX2lkZV9tbV9vdXRzbCh2b2lkIF9faW9tZW0gKiBwb3J0LCB2b2lk ICphZGRyLCB1MzIgY291bnQpCiB7CiAJd2hpbGUgKGNvdW50LS0pIHsKIAkJd3JpdGVsKCoodTMy ICopYWRkciwgcG9ydCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2F0YWxrLmggYi9pbmNs dWRlL2xpbnV4L2F0YWxrLmgKaW5kZXggMjNmODA1NTYyZjRlLi4yNTdjOTg2ZjdmNDAgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvYXRhbGsuaAorKysgYi9pbmNsdWRlL2xpbnV4L2F0YWxrLmgK QEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IGRkcGVoZHIgewogCS8qIEFuZCBuZXRhdGFsayBhcHBz IGV4cGVjdCB0byBzdGljayB0aGUgdHlwZSBpbiB0aGVtc2VsdmVzICovCiB9OwogCi1zdGF0aWMg X19pbmxpbmVfXyBzdHJ1Y3QgZGRwZWhkciAqZGRwX2hkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQor c3RhdGljIGlubGluZSBzdHJ1Y3QgZGRwZWhkciAqZGRwX2hkcihzdHJ1Y3Qgc2tfYnVmZiAqc2ti KQogewogCXJldHVybiAoc3RydWN0IGRkcGVoZHIgKilza2JfdHJhbnNwb3J0X2hlYWRlcihza2Ip OwogfQpAQCAtODgsNyArODgsNyBAQCBzdHJ1Y3QgZWxhcGFhcnAgewogCV9fdTgJcGFfZHN0X25v ZGU7CiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAotc3RhdGljIF9faW5saW5lX18gc3Ry dWN0IGVsYXBhYXJwICphYXJwX2hkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQorc3RhdGljIGlubGlu ZSBzdHJ1Y3QgZWxhcGFhcnAgKmFhcnBfaGRyKHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJcmV0 dXJuIChzdHJ1Y3QgZWxhcGFhcnAgKilza2JfdHJhbnNwb3J0X2hlYWRlcihza2IpOwogfQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZXBoL21lc3Nlbmdlci5oIGIvaW5jbHVkZS9saW51eC9j ZXBoL21lc3Nlbmdlci5oCmluZGV4IGZjMmI0NDkxZWUwYS4uNjM1ODNkYjI4OGU1IDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2NlcGgvbWVzc2VuZ2VyLmgKKysrIGIvaW5jbHVkZS9saW51eC9j ZXBoL21lc3Nlbmdlci5oCkBAIC04Miw3ICs4Miw3IEBAIGVudW0gY2VwaF9tc2dfZGF0YV90eXBl IHsKIAlDRVBIX01TR19EQVRBX0JWRUNTLAkvKiBkYXRhIHNvdXJjZS9kZXN0aW5hdGlvbiBpcyBh IGJpb192ZWMgYXJyYXkgKi8KIH07CiAKLXN0YXRpYyBfX2lubGluZV9fIGJvb2wgY2VwaF9tc2df ZGF0YV90eXBlX3ZhbGlkKGVudW0gY2VwaF9tc2dfZGF0YV90eXBlIHR5cGUpCitzdGF0aWMgaW5s aW5lIGJvb2wgY2VwaF9tc2dfZGF0YV90eXBlX3ZhbGlkKGVudW0gY2VwaF9tc2dfZGF0YV90eXBl IHR5cGUpCiB7CiAJc3dpdGNoICh0eXBlKSB7CiAJY2FzZSBDRVBIX01TR19EQVRBX05PTkU6CmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4 L2NvbXBpbGVyX3R5cGVzLmgKaW5kZXggZGIxOTJiZWNmZWM0Li44Y2MyODJiNzM4NmIgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaAorKysgYi9pbmNsdWRlL2xpbnV4 L2NvbXBpbGVyX3R5cGVzLmgKQEAgLTI0OCw2ICsyNDgsOCBAQCBzdHJ1Y3QgZnRyYWNlX2xpa2Vs eV9kYXRhIHsKICMgZGVmaW5lIF9fZ251X2lubGluZQogI2VuZGlmCiAKKyNkZWZpbmUgYXNtX3Zv bGF0aWxlKHN0bXQuLi4pIGFzbSB2b2xhdGlsZSBfX2lubGluZV9fKHN0bXQpCisKIC8qCiAgKiBG b3JjZSBhbHdheXMtaW5saW5lIGlmIHRoZSB1c2VyIHJlcXVlc3RzIGl0IHNvIHZpYSB0aGUgLmNv bmZpZy4KICAqIEdDQyBkb2VzIG5vdCB3YXJuIGFib3V0IHVudXNlZCBzdGF0aWMgaW5saW5lIGZ1 bmN0aW9ucyBmb3IKQEAgLTI2OCw4ICsyNzAsNiBAQCBzdHJ1Y3QgZnRyYWNlX2xpa2VseV9kYXRh IHsKICNkZWZpbmUgaW5saW5lIGlubGluZQlfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBub3RyYWNl IF9fZ251X2lubGluZQogI2VuZGlmCiAKLSNkZWZpbmUgX19pbmxpbmVfXyBpbmxpbmUKLSNkZWZp bmUgX19pbmxpbmUgaW5saW5lCiAjZGVmaW5lIG5vaW5saW5lCV9fYXR0cmlidXRlX18oKG5vaW5s aW5lKSkKIAogI2lmbmRlZiBfX2Fsd2F5c19pbmxpbmUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvaGRsYy5oIGIvaW5jbHVkZS9saW51eC9oZGxjLmgKaW5kZXggOTc1ODVkOTY3OWYzLi5jOWU1 OGM4ODk1NDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaGRsYy5oCisrKyBiL2luY2x1ZGUv bGludXgvaGRsYy5oCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGhkbGNf ZGV2aWNlKiBkZXZfdG9faGRsYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXJldHVybiBuZXRk ZXZfcHJpdihkZXYpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRlYnVnX2ZyYW1lKGNv bnN0IHN0cnVjdCBza19idWZmICpza2IpCitzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdfZnJhbWUo Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlpbnQgaTsKIApAQCAtMTAxLDcgKzEwMSw3 IEBAIGludCBhdHRhY2hfaGRsY19wcm90b2NvbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1 Y3QgaGRsY19wcm90byAqcHJvdG8sCiAvKiBNYXkgYmUgdXNlZCBieSBoYXJkd2FyZSBkcml2ZXIg dG8gZ2FpbiBjb250cm9sIG92ZXIgSERMQyBkZXZpY2UgKi8KIGludCBkZXRhY2hfaGRsY19wcm90 b2NvbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIAotc3RhdGljIF9faW5saW5lX18gX19iZTE2 IGhkbGNfdHlwZV90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorc3RhdGljIGlubGluZSBfX2Jl MTYgaGRsY190eXBlX3RyYW5zKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJCSBzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2KQogewogCWhkbGNfZGV2aWNlICpoZGxjID0gZGV2X3RvX2hkbGMoZGV2KTsK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9p bmV0ZGV2aWNlLmgKaW5kZXggYzc1OWQxY2JjZWRkLi43NmM5NzE1NGRjODEgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oCisrKyBiL2luY2x1ZGUvbGludXgvaW5ldGRldmlj ZS5oCkBAIC0xODQsNyArMTg0LDcgQEAgX19iZTMyIGluZXRfY29uZmlybV9hZGRyKHN0cnVjdCBu ZXQgKm5ldCwgc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgZHN0LAogc3RydWN0IGlu X2lmYWRkciAqaW5ldF9pZmFfYnlwcmVmaXgoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2Jl MzIgcHJlZml4LAogCQkJCSAgICBfX2JlMzIgbWFzayk7CiBzdHJ1Y3QgaW5faWZhZGRyICppbmV0 X2xvb2t1cF9pZmFkZHJfcmN1KHN0cnVjdCBuZXQgKm5ldCwgX19iZTMyIGFkZHIpOwotc3RhdGlj IF9faW5saW5lX18gYm9vbCBpbmV0X2lmYV9tYXRjaChfX2JlMzIgYWRkciwgc3RydWN0IGluX2lm YWRkciAqaWZhKQorc3RhdGljIGlubGluZSBib29sIGluZXRfaWZhX21hdGNoKF9fYmUzMiBhZGRy LCBzdHJ1Y3QgaW5faWZhZGRyICppZmEpCiB7CiAJcmV0dXJuICEoKGFkZHJeaWZhLT5pZmFfYWRk cmVzcykmaWZhLT5pZmFfbWFzayk7CiB9CkBAIC0xOTMsNyArMTkzLDcgQEAgc3RhdGljIF9faW5s aW5lX18gYm9vbCBpbmV0X2lmYV9tYXRjaChfX2JlMzIgYWRkciwgc3RydWN0IGluX2lmYWRkciAq aWZhKQogICoJQ2hlY2sgaWYgYSBtYXNrIGlzIGFjY2VwdGFibGUuCiAgKi8KICAKLXN0YXRpYyBf X2lubGluZV9fIGJvb2wgYmFkX21hc2soX19iZTMyIG1hc2ssIF9fYmUzMiBhZGRyKQorc3RhdGlj IGlubGluZSBib29sIGJhZF9tYXNrKF9fYmUzMiBtYXNrLCBfX2JlMzIgYWRkcikKIHsKIAlfX3Uz MiBobWFzazsKIAlpZiAoYWRkciAmIChtYXNrID0gfm1hc2spKQpAQCAtMjU1LDE0ICsyNTUsMTQg QEAgc3RhdGljIGlubGluZSB2b2lkIGluX2Rldl9wdXQoc3RydWN0IGluX2RldmljZSAqaWRldikK IAogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KIAotc3RhdGljIF9faW5saW5lX18gX19iZTMyIGlu ZXRfbWFrZV9tYXNrKGludCBsb2dtYXNrKQorc3RhdGljIGlubGluZSBfX2JlMzIgaW5ldF9tYWtl X21hc2soaW50IGxvZ21hc2spCiB7CiAJaWYgKGxvZ21hc2spCiAJCXJldHVybiBodG9ubCh+KCgx VTw8KDMyLWxvZ21hc2spKS0xKSk7CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9f IGludCBpbmV0X21hc2tfbGVuKF9fYmUzMiBtYXNrKQorc3RhdGljIGlubGluZSBpbnQgaW5ldF9t YXNrX2xlbihfX2JlMzIgbWFzaykKIHsKIAlfX3UzMiBobWFzayA9IG50b2hsKG1hc2spOwogCWlm ICghaG1hc2spCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BhcnBvcnQuaCBiL2luY2x1ZGUv bGludXgvcGFycG9ydC5oCmluZGV4IDM5NzYwN2EwYzBlYi4uYTI4ZGMzZTIyMDc0IDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L3BhcnBvcnQuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BhcnBvcnQu aApAQCAtMzg1LDcgKzM4NSw3IEBAIGV4dGVybiB2b2lkIHBhcnBvcnRfcmVsZWFzZShzdHJ1Y3Qg cGFyZGV2aWNlICpkZXYpOwogICogdGltZXNsaWNlIGlzIGhhbGYgYSBzZWNvbmQsIGJ1dCBpdCBj YW4gYmUgYWRqdXN0ZWQgdmlhIHRoZSAvcHJvYwogICogaW50ZXJmYWNlLgogICoqLwotc3RhdGlj IF9faW5saW5lX18gaW50IHBhcnBvcnRfeWllbGQoc3RydWN0IHBhcmRldmljZSAqZGV2KQorc3Rh dGljIGlubGluZSBpbnQgcGFycG9ydF95aWVsZChzdHJ1Y3QgcGFyZGV2aWNlICpkZXYpCiB7CiAJ dW5zaWduZWQgbG9uZyBpbnQgdGltZXNsaXAgPSAoamlmZmllcyAtIGRldi0+dGltZSk7CiAJaWYg KChkZXYtPnBvcnQtPndhaXRoZWFkID09IE5VTEwpIHx8ICh0aW1lc2xpcCA8IGRldi0+dGltZXNs aWNlKSkKQEAgLTQwMyw3ICs0MDMsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgcGFycG9ydF95 aWVsZChzdHJ1Y3QgcGFyZGV2aWNlICpkZXYpCiAgKiBwYXJwb3J0X2NsYWltX29yX2Jsb2NrKCks IGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBzYW1lIGFzIGZvcgogICogcGFycG9ydF9jbGFp bV9vcl9ibG9jaygpLgogICoqLwotc3RhdGljIF9faW5saW5lX18gaW50IHBhcnBvcnRfeWllbGRf YmxvY2tpbmcoc3RydWN0IHBhcmRldmljZSAqZGV2KQorc3RhdGljIGlubGluZSBpbnQgcGFycG9y dF95aWVsZF9ibG9ja2luZyhzdHJ1Y3QgcGFyZGV2aWNlICpkZXYpCiB7CiAJdW5zaWduZWQgbG9u ZyBpbnQgdGltZXNsaXAgPSAoamlmZmllcyAtIGRldi0+dGltZSk7CiAJaWYgKChkZXYtPnBvcnQt PndhaXRoZWFkID09IE5VTEwpIHx8ICh0aW1lc2xpcCA8IGRldi0+dGltZXNsaWNlKSkKZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvcGFycG9ydF9wYy5oIGIvaW5jbHVkZS9saW51eC9wYXJwb3J0 X3BjLmgKaW5kZXggM2Q2ZmM1NzZkNmExLi5lYTM2OGMzNWE1ZTcgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvcGFycG9ydF9wYy5oCisrKyBiL2luY2x1ZGUvbGludXgvcGFycG9ydF9wYy5oCkBA IC02MCw3ICs2MCw3IEBAIHN0cnVjdCBwYXJwb3J0X3BjX3ZpYV9kYXRhCiAJdTggdmlhY2ZnX3Bh cnBvcnRfYmFzZTsKIH07CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgcGFycG9ydF9wY193cml0 ZV9kYXRhKHN0cnVjdCBwYXJwb3J0ICpwLCB1bnNpZ25lZCBjaGFyIGQpCitzdGF0aWMgaW5saW5l IHZvaWQgcGFycG9ydF9wY193cml0ZV9kYXRhKHN0cnVjdCBwYXJwb3J0ICpwLCB1bnNpZ25lZCBj aGFyIGQpCiB7CiAjaWZkZWYgREVCVUdfUEFSUE9SVAogCXByaW50ayAoS0VSTl9ERUJVRyAicGFy cG9ydF9wY193cml0ZV9kYXRhKCVwLDB4JTAyeClcbiIsIHAsIGQpOwpAQCAtNjgsNyArNjgsNyBA QCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHBhcnBvcnRfcGNfd3JpdGVfZGF0YShzdHJ1Y3QgcGFy cG9ydCAqcCwgdW5zaWduZWQgY2hhciBkKQogCW91dGIoZCwgREFUQShwKSk7CiB9CiAKLXN0YXRp YyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgcGFycG9ydF9wY19yZWFkX2RhdGEoc3RydWN0IHBh cnBvcnQgKnApCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgcGFycG9ydF9wY19yZWFkX2Rh dGEoc3RydWN0IHBhcnBvcnQgKnApCiB7CiAJdW5zaWduZWQgY2hhciB2YWwgPSBpbmIgKERBVEEg KHApKTsKICNpZmRlZiBERUJVR19QQVJQT1JUCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIGlu bGluZSB2b2lkIGR1bXBfcGFycG9ydF9zdGF0ZSAoY2hhciAqc3RyLCBzdHJ1Y3QgcGFycG9ydCAq cCkKIAogLyogX19wYXJwb3J0X3BjX2Zyb2JfY29udHJvbCBkaWZmZXJzIGZyb20gcGFycG9ydF9w Y19mcm9iX2NvbnRyb2wgaW4gdGhhdAogICogaXQgZG9lc24ndCBkbyBhbnkgZXh0cmEgbWFza2lu Zy4gKi8KLXN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgX19wYXJwb3J0X3BjX2Zyb2Jf Y29udHJvbCAoc3RydWN0IHBhcnBvcnQgKnAsCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIg X19wYXJwb3J0X3BjX2Zyb2JfY29udHJvbCAoc3RydWN0IHBhcnBvcnQgKnAsCiAJCQkJCQkJICAg dW5zaWduZWQgY2hhciBtYXNrLAogCQkJCQkJCSAgIHVuc2lnbmVkIGNoYXIgdmFsKQogewpAQCAt MTQzLDE3ICsxNDMsMTcgQEAgc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgY2hhciBfX3BhcnBv cnRfcGNfZnJvYl9jb250cm9sIChzdHJ1Y3QgcGFycG9ydCAqcCwKIAlyZXR1cm4gY3RyOwogfQog Ci1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHBhcnBvcnRfcGNfZGF0YV9yZXZlcnNlIChzdHJ1Y3Qg cGFycG9ydCAqcCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBwYXJwb3J0X3BjX2RhdGFfcmV2ZXJzZSAo c3RydWN0IHBhcnBvcnQgKnApCiB7CiAJX19wYXJwb3J0X3BjX2Zyb2JfY29udHJvbCAocCwgMHgy MCwgMHgyMCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgcGFycG9ydF9wY19kYXRhX2Zv cndhcmQgKHN0cnVjdCBwYXJwb3J0ICpwKQorc3RhdGljIGlubGluZSB2b2lkIHBhcnBvcnRfcGNf ZGF0YV9mb3J3YXJkIChzdHJ1Y3QgcGFycG9ydCAqcCkKIHsKIAlfX3BhcnBvcnRfcGNfZnJvYl9j b250cm9sIChwLCAweDIwLCAweDAwKTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBwYXJw b3J0X3BjX3dyaXRlX2NvbnRyb2wgKHN0cnVjdCBwYXJwb3J0ICpwLAorc3RhdGljIGlubGluZSB2 b2lkIHBhcnBvcnRfcGNfd3JpdGVfY29udHJvbCAoc3RydWN0IHBhcnBvcnQgKnAsCiAJCQkJCQkg dW5zaWduZWQgY2hhciBkKQogewogCWNvbnN0IHVuc2lnbmVkIGNoYXIgd20gPSAoUEFSUE9SVF9D T05UUk9MX1NUUk9CRSB8CkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIF9faW5saW5lX18gdm9p ZCBwYXJwb3J0X3BjX3dyaXRlX2NvbnRyb2wgKHN0cnVjdCBwYXJwb3J0ICpwLAogCV9fcGFycG9y dF9wY19mcm9iX2NvbnRyb2wgKHAsIHdtLCBkICYgd20pOwogfQogCi1zdGF0aWMgX19pbmxpbmVf XyB1bnNpZ25lZCBjaGFyIHBhcnBvcnRfcGNfcmVhZF9jb250cm9sKHN0cnVjdCBwYXJwb3J0ICpw KQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyIHBhcnBvcnRfcGNfcmVhZF9jb250cm9sKHN0 cnVjdCBwYXJwb3J0ICpwKQogewogCWNvbnN0IHVuc2lnbmVkIGNoYXIgcm0gPSAoUEFSUE9SVF9D T05UUk9MX1NUUk9CRSB8CiAJCQkJICBQQVJQT1JUX0NPTlRST0xfQVVUT0ZEIHwKQEAgLTE4MSw3 ICsxODEsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIHBhcnBvcnRfcGNfcmVh ZF9jb250cm9sKHN0cnVjdCBwYXJwb3J0ICpwKQogCXJldHVybiBwcml2LT5jdHIgJiBybTsgLyog VXNlIHNvZnQgY29weSAqLwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyIHBh cnBvcnRfcGNfZnJvYl9jb250cm9sIChzdHJ1Y3QgcGFycG9ydCAqcCwKK3N0YXRpYyBpbmxpbmUg dW5zaWduZWQgY2hhciBwYXJwb3J0X3BjX2Zyb2JfY29udHJvbCAoc3RydWN0IHBhcnBvcnQgKnAs CiAJCQkJCQkJIHVuc2lnbmVkIGNoYXIgbWFzaywKIAkJCQkJCQkgdW5zaWduZWQgY2hhciB2YWwp CiB7CkBAIC0yMDgsMTggKzIwOCwxOCBAQCBzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFy IHBhcnBvcnRfcGNfZnJvYl9jb250cm9sIChzdHJ1Y3QgcGFycG9ydCAqcCwKIAlyZXR1cm4gX19w YXJwb3J0X3BjX2Zyb2JfY29udHJvbCAocCwgbWFzaywgdmFsKTsKIH0KIAotc3RhdGljIF9faW5s aW5lX18gdW5zaWduZWQgY2hhciBwYXJwb3J0X3BjX3JlYWRfc3RhdHVzKHN0cnVjdCBwYXJwb3J0 ICpwKQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyIHBhcnBvcnRfcGNfcmVhZF9zdGF0dXMo c3RydWN0IHBhcnBvcnQgKnApCiB7CiAJcmV0dXJuIGluYihTVEFUVVMocCkpOwogfQogCiAKLXN0 YXRpYyBfX2lubGluZV9fIHZvaWQgcGFycG9ydF9wY19kaXNhYmxlX2lycShzdHJ1Y3QgcGFycG9y dCAqcCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBwYXJwb3J0X3BjX2Rpc2FibGVfaXJxKHN0cnVjdCBw YXJwb3J0ICpwKQogewogCV9fcGFycG9ydF9wY19mcm9iX2NvbnRyb2wgKHAsIDB4MTAsIDB4MDAp OwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHBhcnBvcnRfcGNfZW5hYmxlX2lycShzdHJ1 Y3QgcGFycG9ydCAqcCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBwYXJwb3J0X3BjX2VuYWJsZV9pcnEo c3RydWN0IHBhcnBvcnQgKnApCiB7CiAJX19wYXJwb3J0X3BjX2Zyb2JfY29udHJvbCAocCwgMHgx MCwgMHgxMCk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9heDI1LmggYi9pbmNsdWRlL25l dC9heDI1LmgKaW5kZXggM2Y5YWVhODA4N2UzLi5jZDBiZWM3YTZkNGQgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbmV0L2F4MjUuaAorKysgYi9pbmNsdWRlL25ldC9heDI1LmgKQEAgLTI3MCw3ICsyNzAs NyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBheDI1X2NiICpza190b19heDI1KGNvbnN0IHN0cnVj dCBzb2NrICpzaykKICNkZWZpbmUgYXgyNV9jYl9ob2xkKF9fYXgyNSkgXAogCXJlZmNvdW50X2lu YygmKChfX2F4MjUpLT5yZWZjb3VudCkpCiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXgyNV9j Yl9wdXQoYXgyNV9jYiAqYXgyNSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBheDI1X2NiX3B1dChheDI1 X2NiICpheDI1KQogewogCWlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmF4MjUtPnJlZmNvdW50 KSkgewogCQlrZnJlZShheDI1LT5kaWdpcGVhdCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9j aGVja3N1bS5oIGIvaW5jbHVkZS9uZXQvY2hlY2tzdW0uaAppbmRleCBhZWYyYjJiYjY2MDMuLmUw MzkxNGFiOTE5NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2hlY2tzdW0uaAorKysgYi9pbmNs dWRlL25ldC9jaGVja3N1bS5oCkBAIC00MSw3ICs0MSw3IEBAIF9fd3N1bSBjc3VtX2FuZF9jb3B5 X2Zyb21fdXNlciAoY29uc3Qgdm9pZCBfX3VzZXIgKnNyYywgdm9pZCAqZHN0LAogI2VuZGlmCiAK ICNpZm5kZWYgSEFWRV9DU1VNX0NPUFlfVVNFUgotc3RhdGljIF9faW5saW5lX18gX193c3VtIGNz dW1fYW5kX2NvcHlfdG9fdXNlcgorc3RhdGljIGlubGluZSBfX3dzdW0gY3N1bV9hbmRfY29weV90 b191c2VyCiAoY29uc3Qgdm9pZCAqc3JjLCB2b2lkIF9fdXNlciAqZHN0LCBpbnQgbGVuLCBfX3dz dW0gc3VtLCBpbnQgKmVycl9wdHIpCiB7CiAJc3VtID0gY3N1bV9wYXJ0aWFsKHNyYywgbGVuLCBz dW0pOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZG5fbnNwLmggYi9pbmNsdWRlL25ldC9kbl9u c3AuaAppbmRleCA0MTNhMTVlNTMzOWMuLjc3MWQzOTQzYThmOSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9uZXQvZG5fbnNwLmgKKysrIGIvaW5jbHVkZS9uZXQvZG5fbnNwLmgKQEAgLTE0NCw3ICsxNDQs NyBAQCBzdHJ1Y3QgIHNyY29ial9mbXQgewogICogbnVtYmVycyB1c2VkIGluIE5TUC4gU2ltaWxh ciBpbiBvcGVyYXRpb24gdG8gdGhlIGZ1bmN0aW9ucwogICogb2YgdGhlIHNhbWUgbmFtZSBpbiBU Q1AuCiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIGludCBkbl9iZWZvcmUoX191MTYgc2VxMSwgX191 MTYgc2VxMikKK3N0YXRpYyBpbmxpbmUgaW50IGRuX2JlZm9yZShfX3UxNiBzZXExLCBfX3UxNiBz ZXEyKQogewogICAgICAgICBzZXExICY9IDB4MGZmZjsKICAgICAgICAgc2VxMiAmPSAweDBmZmY7 CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIF9faW5saW5lX18gaW50IGRuX2JlZm9yZShfX3Ux NiBzZXExLCBfX3UxNiBzZXEyKQogfQogCiAKLXN0YXRpYyBfX2lubGluZV9fIGludCBkbl9hZnRl cihfX3UxNiBzZXExLCBfX3UxNiBzZXEyKQorc3RhdGljIGlubGluZSBpbnQgZG5fYWZ0ZXIoX191 MTYgc2VxMSwgX191MTYgc2VxMikKIHsKICAgICAgICAgc2VxMSAmPSAweDBmZmY7CiAgICAgICAg IHNlcTIgJj0gMHgwZmZmOwpAQCAtMTYxLDIzICsxNjEsMjMgQEAgc3RhdGljIF9faW5saW5lX18g aW50IGRuX2FmdGVyKF9fdTE2IHNlcTEsIF9fdTE2IHNlcTIpCiAgICAgICAgIHJldHVybiAoaW50 KSgoc2VxMiAtIHNlcTEpICYgMHgwZmZmKSA+IDIwNDg7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9f IGludCBkbl9lcXVhbChfX3UxNiBzZXExLCBfX3UxNiBzZXEyKQorc3RhdGljIGlubGluZSBpbnQg ZG5fZXF1YWwoX191MTYgc2VxMSwgX191MTYgc2VxMikKIHsKICAgICAgICAgcmV0dXJuICgoc2Vx MSBeIHNlcTIpICYgMHgwZmZmKSA9PSAwOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgZG5f YmVmb3JlX29yX2VxdWFsKF9fdTE2IHNlcTEsIF9fdTE2IHNlcTIpCitzdGF0aWMgaW5saW5lIGlu dCBkbl9iZWZvcmVfb3JfZXF1YWwoX191MTYgc2VxMSwgX191MTYgc2VxMikKIHsKIAlyZXR1cm4g KGRuX2JlZm9yZShzZXExLCBzZXEyKSB8fCBkbl9lcXVhbChzZXExLCBzZXEyKSk7CiB9CiAKLXN0 YXRpYyBfX2lubGluZV9fIHZvaWQgc2VxX2FkZChfX3UxNiAqc2VxLCBfX3UxNiBvZmYpCitzdGF0 aWMgaW5saW5lIHZvaWQgc2VxX2FkZChfX3UxNiAqc2VxLCBfX3UxNiBvZmYpCiB7CiAgICAgICAg ICgqc2VxKSArPSBvZmY7CiAgICAgICAgICgqc2VxKSAmPSAweDBmZmY7CiB9CiAKLXN0YXRpYyBf X2lubGluZV9fIGludCBzZXFfbmV4dChfX3UxNiBzZXExLCBfX3UxNiBzZXEyKQorc3RhdGljIGlu bGluZSBpbnQgc2VxX25leHQoX191MTYgc2VxMSwgX191MTYgc2VxMikKIHsKIAlyZXR1cm4gZG5f ZXF1YWwoc2VxMSArIDEsIHNlcTIpOwogfQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyBfX2lu bGluZV9fIGludCBzZXFfbmV4dChfX3UxNiBzZXExLCBfX3UxNiBzZXEyKQogLyoKICAqIENhbiB3 ZSBkZWxheSB0aGUgYWNrID8KICAqLwotc3RhdGljIF9faW5saW5lX18gaW50IHNlbmRhY2soX191 MTYgc2VxKQorc3RhdGljIGlubGluZSBpbnQgc2VuZGFjayhfX3UxNiBzZXEpCiB7CiAgICAgICAg IHJldHVybiAoaW50KSgoc2VxICYgMHgxMDAwKSA/IDAgOiAxKTsKIH0KQEAgLTE5Myw3ICsxOTMs NyBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgc2VuZGFjayhfX3UxNiBzZXEpCiAvKgogICogSXMg c29ja2V0IGNvbmdlc3RlZCA/CiAgKi8KLXN0YXRpYyBfX2lubGluZV9fIGludCBkbl9jb25nZXN0 ZWQoc3RydWN0IHNvY2sgKnNrKQorc3RhdGljIGlubGluZSBpbnQgZG5fY29uZ2VzdGVkKHN0cnVj dCBzb2NrICpzaykKIHsKICAgICAgICAgcmV0dXJuIGF0b21pY19yZWFkKCZzay0+c2tfcm1lbV9h bGxvYykgPiAoc2stPnNrX3JjdmJ1ZiA+PiAxKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0 L2lwLmggYi9pbmNsdWRlL25ldC9pcC5oCmluZGV4IGU0NGIxYTQ0ZjY3YS4uMGU5Y2Y0YTc3OGY5 IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcC5oCisrKyBiL2luY2x1ZGUvbmV0L2lwLmgKQEAg LTU0Nyw3ICs1NDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfaXBncmVfbWNfbWFwKF9fYmUz MiBuYWRkciwgY29uc3QgdW5zaWduZWQgY2hhciAqYnJvYWRjYXN0LAogI2luY2x1ZGUgPGxpbnV4 L2lwdjYuaD4KICNlbmRpZgogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGluZXRfcmVzZXRfc2Fk ZHIoc3RydWN0IHNvY2sgKnNrKQorc3RhdGljIGlubGluZSB2b2lkIGluZXRfcmVzZXRfc2FkZHIo c3RydWN0IHNvY2sgKnNrKQogewogCWluZXRfc2soc2spLT5pbmV0X3Jjdl9zYWRkciA9IGluZXRf c2soc2spLT5pbmV0X3NhZGRyID0gMDsKICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXA2X2NoZWNrc3VtLmggYi9pbmNsdWRlL25ldC9pcDZfY2hl Y2tzdW0uaAppbmRleCBjY2E4NDA1ODRjODguLjI3NTY3NDc3ZGNjNiAxMDA2NDQKLS0tIGEvaW5j bHVkZS9uZXQvaXA2X2NoZWNrc3VtLmgKKysrIGIvaW5jbHVkZS9uZXQvaXA2X2NoZWNrc3VtLmgK QEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGlubGluZSBfX3dzdW0gaXA2X2dyb19jb21wdXRlX3Bz ZXVkbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcHJvdG8pCiAJCQkJCSAgICBza2JfZ3JvX2xl bihza2IpLCBwcm90bywgMCkpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyBfX3N1bTE2IHRjcF92 Nl9jaGVjayhpbnQgbGVuLAorc3RhdGljIGlubGluZSBfX3N1bTE2IHRjcF92Nl9jaGVjayhpbnQg bGVuLAogCQkJCSAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsCiAJCQkJICAgY29uc3Qg c3RydWN0IGluNl9hZGRyICpkYWRkciwKIAkJCQkgICBfX3dzdW0gYmFzZSkKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbmV0L2lweC5oIGIvaW5jbHVkZS9uZXQvaXB4LmgKaW5kZXggYmFmMDkwMzkwOTk4 Li5jZjg5ZWY5MmE1ZjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lweC5oCisrKyBiL2luY2x1 ZGUvbmV0L2lweC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBpcHhoZHIgewogLyogRnJvbSBh Zl9pcHguYyAqLwogZXh0ZXJuIGludCBzeXNjdGxfaXB4X3Bwcm9wX2Jyb2FkY2FzdGluZzsKIAot c3RhdGljIF9faW5saW5lX18gc3RydWN0IGlweGhkciAqaXB4X2hkcihzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQorc3RhdGljIGlubGluZSBzdHJ1Y3QgaXB4aGRyICppcHhfaGRyKHN0cnVjdCBza19idWZm ICpza2IpCiB7CiAJcmV0dXJuIChzdHJ1Y3QgaXB4aGRyICopc2tiX3RyYW5zcG9ydF9oZWFkZXIo c2tiKTsKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIGlweF9wcm9jX2V4aXQodm9pZCk7CiBj b25zdCBjaGFyICppcHhfZnJhbWVfbmFtZShfX2JlMTYpOwogY29uc3QgY2hhciAqaXB4X2Rldmlj ZV9uYW1lKHN0cnVjdCBpcHhfaW50ZXJmYWNlICppbnRyZmMpOwogCi1zdGF0aWMgX19pbmxpbmVf XyB2b2lkIGlweGl0Zl9ob2xkKHN0cnVjdCBpcHhfaW50ZXJmYWNlICppbnRyZmMpCitzdGF0aWMg aW5saW5lIHZvaWQgaXB4aXRmX2hvbGQoc3RydWN0IGlweF9pbnRlcmZhY2UgKmludHJmYykKIHsK IAlyZWZjb3VudF9pbmMoJmludHJmYy0+cmVmY250KTsKIH0KQEAgLTE1NywxOCArMTU3LDE4IEBA IGludCBpcHhydHJfcm91dGVfc2tiKHN0cnVjdCBza19idWZmICpza2IpOwogc3RydWN0IGlweF9y b3V0ZSAqaXB4cnRyX2xvb2t1cChfX2JlMzIgbmV0KTsKIGludCBpcHhydHJfaW9jdGwodW5zaWdu ZWQgaW50IGNtZCwgdm9pZCBfX3VzZXIgKmFyZyk7CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQg aXB4aXRmX3B1dChzdHJ1Y3QgaXB4X2ludGVyZmFjZSAqaW50cmZjKQorc3RhdGljIGlubGluZSB2 b2lkIGlweGl0Zl9wdXQoc3RydWN0IGlweF9pbnRlcmZhY2UgKmludHJmYykKIHsKIAlpZiAocmVm Y291bnRfZGVjX2FuZF90ZXN0KCZpbnRyZmMtPnJlZmNudCkpCiAJCWlweGl0Zl9kb3duKGludHJm Yyk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgaXB4cnRyX2hvbGQoc3RydWN0IGlweF9y b3V0ZSAqcnQpCitzdGF0aWMgaW5saW5lIHZvaWQgaXB4cnRyX2hvbGQoc3RydWN0IGlweF9yb3V0 ZSAqcnQpCiB7CiAJICAgICAgICByZWZjb3VudF9pbmMoJnJ0LT5yZWZjbnQpOwogfQogCi1zdGF0 aWMgX19pbmxpbmVfXyB2b2lkIGlweHJ0cl9wdXQoc3RydWN0IGlweF9yb3V0ZSAqcnQpCitzdGF0 aWMgaW5saW5lIHZvaWQgaXB4cnRyX3B1dChzdHJ1Y3QgaXB4X3JvdXRlICpydCkKIHsKIAkgICAg ICAgIGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJnJ0LT5yZWZjbnQpKQogCQkJICAgICAgICAg ICAgICAgIGtmcmVlKHJ0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xsY19jX2V2LmggYi9p bmNsdWRlL25ldC9sbGNfY19ldi5oCmluZGV4IDM5NDhjZjExMWRkMC4uMjY2Mjc1YTk0NWI0IDEw MDY0NAotLS0gYS9pbmNsdWRlL25ldC9sbGNfY19ldi5oCisrKyBiL2luY2x1ZGUvbmV0L2xsY19j X2V2LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfZXYgewogCXU4 IGNmbV9wcmltOwogfTsKIAotc3RhdGljIF9faW5saW5lX18gc3RydWN0IGxsY19jb25uX3N0YXRl X2V2ICpsbGNfY29ubl9ldihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQorc3RhdGljIGlubGluZSBzdHJ1 Y3QgbGxjX2Nvbm5fc3RhdGVfZXYgKmxsY19jb25uX2V2KHN0cnVjdCBza19idWZmICpza2IpCiB7 CiAJcmV0dXJuIChzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfZXYgKilza2ItPmNiOwogfQpAQCAtMjE2 LDcgKzIxNiw3IEBAIGludCBsbGNfY29ubl9ldl9xbGZ5X3NldF9zdGF0dXNfcmVmdXNlKHN0cnVj dCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiBpbnQgbGxjX2Nvbm5fZXZfcWxmeV9z ZXRfc3RhdHVzX2NvbmZsaWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7 CiBpbnQgbGxjX2Nvbm5fZXZfcWxmeV9zZXRfc3RhdHVzX3JzdF9kb25lKHN0cnVjdCBzb2NrICpz aywgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKLXN0YXRpYyBfX2lubGluZV9fIGludCBsbGNfY29u bl9zcGFjZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCitzdGF0aWMgaW5s aW5lIGludCBsbGNfY29ubl9zcGFjZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpz a2IpCiB7CiAJcmV0dXJuIGF0b21pY19yZWFkKCZzay0+c2tfcm1lbV9hbGxvYykgKyBza2ItPnRy dWVzaXplIDwKIAkgICAgICAgKHVuc2lnbmVkIGludClzay0+c2tfcmN2YnVmOwpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9uZXQvbGxjX2Nvbm4uaCBiL2luY2x1ZGUvbmV0L2xsY19jb25uLmgKaW5kZXgg ZGY1MjhhNjIzNTQ4Li4yNzg4MGQxYmZkOTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2xsY19j b25uLmgKKysrIGIvaW5jbHVkZS9uZXQvbGxjX2Nvbm4uaApAQCAtODUsMTIgKzg1LDEyIEBAIHN0 YXRpYyBpbmxpbmUgc3RydWN0IGxsY19zb2NrICpsbGNfc2soY29uc3Qgc3RydWN0IHNvY2sgKnNr KQogCXJldHVybiAoc3RydWN0IGxsY19zb2NrICopc2s7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9f IHZvaWQgbGxjX3NldF9iYWNrbG9nX3R5cGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY2hhciB0eXBl KQorc3RhdGljIGlubGluZSB2b2lkIGxsY19zZXRfYmFja2xvZ190eXBlKHN0cnVjdCBza19idWZm ICpza2IsIGNoYXIgdHlwZSkKIHsKIAlza2ItPmNiW3NpemVvZihza2ItPmNiKSAtIDFdID0gdHlw ZTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gY2hhciBsbGNfYmFja2xvZ190eXBlKHN0cnVjdCBz a19idWZmICpza2IpCitzdGF0aWMgaW5saW5lIGNoYXIgbGxjX2JhY2tsb2dfdHlwZShzdHJ1Y3Qg c2tfYnVmZiAqc2tiKQogewogCXJldHVybiBza2ItPmNiW3NpemVvZihza2ItPmNiKSAtIDFdOwog fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGxjX3NfZXYuaCBiL2luY2x1ZGUvbmV0L2xsY19z X2V2LmgKaW5kZXggODRkYjNhNTllZDI4Li4wMDQzOWQzZTlmNWQgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbmV0L2xsY19zX2V2LmgKKysrIGIvaW5jbHVkZS9uZXQvbGxjX3NfZXYuaApAQCAtNDQsNyAr NDQsNyBAQCBzdHJ1Y3QgbGxjX3NhcF9zdGF0ZV9ldiB7CiAJc3RydWN0IGxsY19hZGRyIGRhZGRy OwogfTsKIAotc3RhdGljIF9faW5saW5lX18gc3RydWN0IGxsY19zYXBfc3RhdGVfZXYgKmxsY19z YXBfZXYoc3RydWN0IHNrX2J1ZmYgKnNrYikKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxsY19zYXBf c3RhdGVfZXYgKmxsY19zYXBfZXYoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlyZXR1cm4gKHN0 cnVjdCBsbGNfc2FwX3N0YXRlX2V2ICopc2tiLT5jYjsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUv bmV0L25ldHJvbS5oIGIvaW5jbHVkZS9uZXQvbmV0cm9tLmgKaW5kZXggNWEwNzE0ZmY1MDBmLi4x NzQxYjdjYzg5NjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L25ldHJvbS5oCisrKyBiL2luY2x1 ZGUvbmV0L25ldHJvbS5oCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RydWN0IG5yX25vZGUgewogI2Rl ZmluZSBucl9ub2RlX2hvbGQoX19ucl9ub2RlKSBcCiAJcmVmY291bnRfaW5jKCYoKF9fbnJfbm9k ZSktPnJlZmNvdW50KSkKIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBucl9ub2RlX3B1dChzdHJ1 Y3QgbnJfbm9kZSAqbnJfbm9kZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBucl9ub2RlX3B1dChzdHJ1 Y3QgbnJfbm9kZSAqbnJfbm9kZSkKIHsKIAlpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KCZucl9u b2RlLT5yZWZjb3VudCkpIHsKIAkJa2ZyZWUobnJfbm9kZSk7CkBAIC0xMzMsNyArMTMzLDcgQEAg c3RhdGljIF9faW5saW5lX18gdm9pZCBucl9ub2RlX3B1dChzdHJ1Y3QgbnJfbm9kZSAqbnJfbm9k ZSkKICNkZWZpbmUgbnJfbmVpZ2hfaG9sZChfX25yX25laWdoKSBcCiAJcmVmY291bnRfaW5jKCYo KF9fbnJfbmVpZ2gpLT5yZWZjb3VudCkpCiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgbnJfbmVp Z2hfcHV0KHN0cnVjdCBucl9uZWlnaCAqbnJfbmVpZ2gpCitzdGF0aWMgaW5saW5lIHZvaWQgbnJf bmVpZ2hfcHV0KHN0cnVjdCBucl9uZWlnaCAqbnJfbmVpZ2gpCiB7CiAJaWYgKHJlZmNvdW50X2Rl Y19hbmRfdGVzdCgmbnJfbmVpZ2gtPnJlZmNvdW50KSkgewogCQlpZiAobnJfbmVpZ2gtPmF4MjUp CkBAIC0xNDUsMTMgKzE0NSwxMyBAQCBzdGF0aWMgX19pbmxpbmVfXyB2b2lkIG5yX25laWdoX3B1 dChzdHJ1Y3QgbnJfbmVpZ2ggKm5yX25laWdoKQogCiAvKiBucl9ub2RlX2xvY2sgYW5kIG5yX25v ZGVfdW5sb2NrIGFsc28gaG9sZC9wdXQgdGhlIG5vZGUncyByZWZjb3VudGVyLgogICovCi1zdGF0 aWMgX19pbmxpbmVfXyB2b2lkIG5yX25vZGVfbG9jayhzdHJ1Y3QgbnJfbm9kZSAqbnJfbm9kZSkK K3N0YXRpYyBpbmxpbmUgdm9pZCBucl9ub2RlX2xvY2soc3RydWN0IG5yX25vZGUgKm5yX25vZGUp CiB7CiAJbnJfbm9kZV9ob2xkKG5yX25vZGUpOwogCXNwaW5fbG9ja19iaCgmbnJfbm9kZS0+bm9k ZV9sb2NrKTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBucl9ub2RlX3VubG9jayhzdHJ1 Y3QgbnJfbm9kZSAqbnJfbm9kZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBucl9ub2RlX3VubG9jayhz dHJ1Y3QgbnJfbm9kZSAqbnJfbm9kZSkKIHsKIAlzcGluX3VubG9ja19iaCgmbnJfbm9kZS0+bm9k ZV9sb2NrKTsKIAlucl9ub2RlX3B1dChucl9ub2RlKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0 L3NjbS5oIGIvaW5jbHVkZS9uZXQvc2NtLmgKaW5kZXggMWNlMzY1ZjRjMjU2Li5iNzdiZTYzMmI0 NDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjbS5oCisrKyBiL2luY2x1ZGUvbmV0L3NjbS5o CkBAIC00NCwxNiArNDQsMTYgQEAgdm9pZCBfX3NjbV9kZXN0cm95KHN0cnVjdCBzY21fY29va2ll ICpzY20pOwogc3RydWN0IHNjbV9mcF9saXN0ICpzY21fZnBfZHVwKHN0cnVjdCBzY21fZnBfbGlz dCAqZnBsKTsKIAogI2lmZGVmIENPTkZJR19TRUNVUklUWV9ORVRXT1JLCi1zdGF0aWMgX19pbmxp bmVfXyB2b2lkIHVuaXhfZ2V0X3BlZXJzZWNfZGdyYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3Ry dWN0IHNjbV9jb29raWUgKnNjbSkKK3N0YXRpYyBpbmxpbmUgdm9pZCB1bml4X2dldF9wZWVyc2Vj X2RncmFtKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzY21fY29va2llICpzY20pCiB7CiAJ c2VjdXJpdHlfc29ja2V0X2dldHBlZXJzZWNfZGdyYW0oc29jaywgTlVMTCwgJnNjbS0+c2VjaWQp OwogfQogI2Vsc2UKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgdW5peF9nZXRfcGVlcnNlY19kZ3Jh bShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKQorc3RhdGljIGlu bGluZSB2b2lkIHVuaXhfZ2V0X3BlZXJzZWNfZGdyYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3Ry dWN0IHNjbV9jb29raWUgKnNjbSkKIHsgfQogI2VuZGlmIC8qIENPTkZJR19TRUNVUklUWV9ORVRX T1JLICovCiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2NtX3NldF9jcmVkKHN0cnVjdCBzY21f Y29va2llICpzY20sCitzdGF0aWMgaW5saW5lIHZvaWQgc2NtX3NldF9jcmVkKHN0cnVjdCBzY21f Y29va2llICpzY20sCiAJCQkJICAgIHN0cnVjdCBwaWQgKnBpZCwga3VpZF90IHVpZCwga2dpZF90 IGdpZCkKIHsKIAlzY20tPnBpZCAgPSBnZXRfcGlkKHBpZCk7CkBAIC02MiwyMCArNjIsMjAgQEAg c3RhdGljIF9faW5saW5lX18gdm9pZCBzY21fc2V0X2NyZWQoc3RydWN0IHNjbV9jb29raWUgKnNj bSwKIAlzY20tPmNyZWRzLmdpZCA9IGdpZDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBz Y21fZGVzdHJveV9jcmVkKHN0cnVjdCBzY21fY29va2llICpzY20pCitzdGF0aWMgaW5saW5lIHZv aWQgc2NtX2Rlc3Ryb3lfY3JlZChzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKQogewogCXB1dF9waWQo c2NtLT5waWQpOwogCXNjbS0+cGlkICA9IE5VTEw7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZv aWQgc2NtX2Rlc3Ryb3koc3RydWN0IHNjbV9jb29raWUgKnNjbSkKK3N0YXRpYyBpbmxpbmUgdm9p ZCBzY21fZGVzdHJveShzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKQogewogCXNjbV9kZXN0cm95X2Ny ZWQoc2NtKTsKIAlpZiAoc2NtLT5mcCkKIAkJX19zY21fZGVzdHJveShzY20pOwogfQogCi1zdGF0 aWMgX19pbmxpbmVfXyBpbnQgc2NtX3NlbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1z Z2hkciAqbXNnLAorc3RhdGljIGlubGluZSBpbnQgc2NtX3NlbmQoc3RydWN0IHNvY2tldCAqc29j aywgc3RydWN0IG1zZ2hkciAqbXNnLAogCQkJICAgICAgIHN0cnVjdCBzY21fY29va2llICpzY20s IGJvb2wgZm9yY2VjcmVkcykKIHsKIAltZW1zZXQoc2NtLCAwLCBzaXplb2YoKnNjbSkpOwpAQCAt MTEwLDcgKzExMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzY21fcGFzc2VjKHN0cnVjdCBzb2Nr ZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNjCiB7IH0KICNlbmRpZiAvKiBD T05GSUdfU0VDVVJJVFlfTkVUV09SSyAqLwogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNjbV9y ZWN2KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKK3N0YXRpYyBpbmxp bmUgdm9pZCBzY21fcmVjdihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2cs CiAJCQkJc3RydWN0IHNjbV9jb29raWUgKnNjbSwgaW50IGZsYWdzKQogewogCWlmICghbXNnLT5t c2dfY29udHJvbCkgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdWRwbGl0ZS5oIGIvaW5jbHVk ZS9uZXQvdWRwbGl0ZS5oCmluZGV4IDkxODVlNDViOTk3Zi4uNzQ3ODU5YTNhMDBmIDEwMDY0NAot LS0gYS9pbmNsdWRlL25ldC91ZHBsaXRlLmgKKysrIGIvaW5jbHVkZS9uZXQvdWRwbGl0ZS5oCkBA IC0xNyw3ICsxNyw3IEBAIGV4dGVybiBzdHJ1Y3QgdWRwX3RhYmxlCQl1ZHBsaXRlX3RhYmxlOwog LyoKICAqCUNoZWNrc3VtIGNvbXB1dGF0aW9uIGlzIGFsbCBpbiBzb2Z0d2FyZSwgaGVuY2Ugc2lt cGxlciBnZXRmcmFnLgogICovCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgdWRwbGl0ZV9nZXRmcmFn KHZvaWQgKmZyb20sIGNoYXIgKnRvLCBpbnQgIG9mZnNldCwKK3N0YXRpYyBpbmxpbmUgaW50IHVk cGxpdGVfZ2V0ZnJhZyh2b2lkICpmcm9tLCBjaGFyICp0bywgaW50ICBvZmZzZXQsCiAJCQkJICAg ICAgaW50IGxlbiwgaW50IG9kZCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgbXNn aGRyICptc2cgPSBmcm9tOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveDI1LmggYi9pbmNsdWRl L25ldC94MjUuaAppbmRleCBlZDFhY2MzMDQ0YWMuLjRjYjUzMzQ3OWQ2MSAxMDA2NDQKLS0tIGEv aW5jbHVkZS9uZXQveDI1LmgKKysrIGIvaW5jbHVkZS9uZXQveDI1LmgKQEAgLTI0MiwxMiArMjQy LDEyIEBAIHN0cnVjdCB4MjVfbmVpZ2ggKngyNV9nZXRfbmVpZ2goc3RydWN0IG5ldF9kZXZpY2Ug Kik7CiB2b2lkIHgyNV9saW5rX2ZyZWUodm9pZCk7CiAKIC8qIHgyNV9uZWlnaC5jICovCi1zdGF0 aWMgX19pbmxpbmVfXyB2b2lkIHgyNV9uZWlnaF9ob2xkKHN0cnVjdCB4MjVfbmVpZ2ggKm5iKQor c3RhdGljIGlubGluZSB2b2lkIHgyNV9uZWlnaF9ob2xkKHN0cnVjdCB4MjVfbmVpZ2ggKm5iKQog ewogCXJlZmNvdW50X2luYygmbmItPnJlZmNudCk7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHZv aWQgeDI1X25laWdoX3B1dChzdHJ1Y3QgeDI1X25laWdoICpuYikKK3N0YXRpYyBpbmxpbmUgdm9p ZCB4MjVfbmVpZ2hfcHV0KHN0cnVjdCB4MjVfbmVpZ2ggKm5iKQogewogCWlmIChyZWZjb3VudF9k ZWNfYW5kX3Rlc3QoJm5iLT5yZWZjbnQpKQogCQlrZnJlZShuYik7CkBAIC0yNjUsMTIgKzI2NSwx MiBAQCB2b2lkIHgyNV9yb3V0ZV9kZXZpY2VfZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsK IGludCB4MjVfcm91dGVfaW9jdGwodW5zaWduZWQgaW50LCB2b2lkIF9fdXNlciAqKTsKIHZvaWQg eDI1X3JvdXRlX2ZyZWUodm9pZCk7CiAKLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgeDI1X3JvdXRl X2hvbGQoc3RydWN0IHgyNV9yb3V0ZSAqcnQpCitzdGF0aWMgaW5saW5lIHZvaWQgeDI1X3JvdXRl X2hvbGQoc3RydWN0IHgyNV9yb3V0ZSAqcnQpCiB7CiAJcmVmY291bnRfaW5jKCZydC0+cmVmY250 KTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCB4MjVfcm91dGVfcHV0KHN0cnVjdCB4MjVf cm91dGUgKnJ0KQorc3RhdGljIGlubGluZSB2b2lkIHgyNV9yb3V0ZV9wdXQoc3RydWN0IHgyNV9y b3V0ZSAqcnQpCiB7CiAJaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgmcnQtPnJlZmNudCkpCiAJ CWtmcmVlKHJ0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hmcm0uaCBiL2luY2x1ZGUvbmV0 L3hmcm0uaAppbmRleCAwZWIzOTBjMjA1YWYuLjJmMDNmZDk2ZGNlOSAxMDA2NDQKLS0tIGEvaW5j bHVkZS9uZXQveGZybS5oCisrKyBiL2luY2x1ZGUvbmV0L3hmcm0uaApAQCAtOTAzLDcgKzkwMyw3 IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhZGRyNF9tYXRjaChfX2JlMzIgYTEsIF9fYmUzMiBhMiwg dTggcHJlZml4bGVuKQogCXJldHVybiAhKChhMSBeIGEyKSAmIGh0b25sKH4wVUwgPDwgKDMyIC0g cHJlZml4bGVuKSkpOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXworc3RhdGljIGlubGluZQogX19i ZTE2IHhmcm1fZmxvd2lfc3BvcnQoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgY29uc3QgdW5pb24g Zmxvd2lfdWxpICp1bGkpCiB7CiAJX19iZTE2IHBvcnQ7CkBAIC05MzAsNyArOTMwLDcgQEAgX19i ZTE2IHhmcm1fZmxvd2lfc3BvcnQoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwgY29uc3QgdW5pb24g Zmxvd2lfdWxpICp1bGkpCiAJcmV0dXJuIHBvcnQ7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fCitz dGF0aWMgaW5saW5lCiBfX2JlMTYgeGZybV9mbG93aV9kcG9ydChjb25zdCBzdHJ1Y3QgZmxvd2kg KmZsLCBjb25zdCB1bmlvbiBmbG93aV91bGkgKnVsaSkKIHsKIAlfX2JlMTYgcG9ydDsKQEAgLTEz MjUsNyArMTMyNSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHhmcm02X3BvbGljeV9jaGVja19yZXZl cnNlKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwKIH0KICNlbmRpZgogCi1zdGF0aWMgX19pbmxp bmVfXworc3RhdGljIGlubGluZQogeGZybV9hZGRyZXNzX3QgKnhmcm1fZmxvd2lfZGFkZHIoY29u c3Qgc3RydWN0IGZsb3dpICpmbCwgdW5zaWduZWQgc2hvcnQgZmFtaWx5KQogewogCXN3aXRjaCAo ZmFtaWx5KXsKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHhmcm1fYWRkcmVzc190ICp4ZnJtX2Zsb3dp X2RhZGRyKGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsIHVuc2lnbmVkIHNob3J0IGZhbWlseSkKIAly ZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIF9faW5saW5lX18KK3N0YXRpYyBpbmxpbmUKIHhmcm1f YWRkcmVzc190ICp4ZnJtX2Zsb3dpX3NhZGRyKGNvbnN0IHN0cnVjdCBmbG93aSAqZmwsIHVuc2ln bmVkIHNob3J0IGZhbWlseSkKIHsKIAlzd2l0Y2ggKGZhbWlseSl7CkBAIC0xMzQ5LDcgKzEzNDks NyBAQCB4ZnJtX2FkZHJlc3NfdCAqeGZybV9mbG93aV9zYWRkcihjb25zdCBzdHJ1Y3QgZmxvd2kg KmZsLCB1bnNpZ25lZCBzaG9ydCBmYW1pbHkpCiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBf X2lubGluZV9fCitzdGF0aWMgaW5saW5lCiB2b2lkIHhmcm1fZmxvd2lfYWRkcl9nZXQoY29uc3Qg c3RydWN0IGZsb3dpICpmbCwKIAkJCSB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsIHhmcm1fYWRkcmVz c190ICpkYWRkciwKIAkJCSB1bnNpZ25lZCBzaG9ydCBmYW1pbHkpCkBAIC0xMzY2LDcgKzEzNjYs NyBAQCB2b2lkIHhmcm1fZmxvd2lfYWRkcl9nZXQoY29uc3Qgc3RydWN0IGZsb3dpICpmbCwKIAl9 CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIGludAorc3RhdGljIGlubGluZSBpbnQKIF9feGZybTRf c3RhdGVfYWRkcl9jaGVjayhjb25zdCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwKIAkJCSBjb25zdCB4 ZnJtX2FkZHJlc3NfdCAqZGFkZHIsIGNvbnN0IHhmcm1fYWRkcmVzc190ICpzYWRkcikKIHsKQEAg LTEzNzYsNyArMTM3Niw3IEBAIF9feGZybTRfc3RhdGVfYWRkcl9jaGVjayhjb25zdCBzdHJ1Y3Qg eGZybV9zdGF0ZSAqeCwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIF9faW5saW5lX18gaW50Citz dGF0aWMgaW5saW5lIGludAogX194ZnJtNl9zdGF0ZV9hZGRyX2NoZWNrKGNvbnN0IHN0cnVjdCB4 ZnJtX3N0YXRlICp4LAogCQkJIGNvbnN0IHhmcm1fYWRkcmVzc190ICpkYWRkciwgY29uc3QgeGZy bV9hZGRyZXNzX3QgKnNhZGRyKQogewpAQCAtMTM4OCw3ICsxMzg4LDcgQEAgX194ZnJtNl9zdGF0 ZV9hZGRyX2NoZWNrKGNvbnN0IHN0cnVjdCB4ZnJtX3N0YXRlICp4LAogCXJldHVybiAwOwogfQog Ci1zdGF0aWMgX19pbmxpbmVfXyBpbnQKK3N0YXRpYyBpbmxpbmUgaW50CiB4ZnJtX3N0YXRlX2Fk ZHJfY2hlY2soY29uc3Qgc3RydWN0IHhmcm1fc3RhdGUgKngsCiAJCSAgICAgIGNvbnN0IHhmcm1f YWRkcmVzc190ICpkYWRkciwgY29uc3QgeGZybV9hZGRyZXNzX3QgKnNhZGRyLAogCQkgICAgICB1 bnNpZ25lZCBzaG9ydCBmYW1pbHkpCkBAIC0xNDAyLDcgKzE0MDIsNyBAQCB4ZnJtX3N0YXRlX2Fk ZHJfY2hlY2soY29uc3Qgc3RydWN0IHhmcm1fc3RhdGUgKngsCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBfX2lubGluZV9fIGludAorc3RhdGljIGlubGluZSBpbnQKIHhmcm1fc3RhdGVfYWRkcl9m bG93X2NoZWNrKGNvbnN0IHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBjb25zdCBzdHJ1Y3QgZmxvd2kg KmZsLAogCQkJICAgdW5zaWduZWQgc2hvcnQgZmFtaWx5KQogewpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS91YXBpL2xpbnV4L2F0bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2F0bS5oCmluZGV4IDk1ZWJk Y2Y0ZmU4OC4uYTg5YzY1MjlkMGUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvYXRt LmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2F0bS5oCkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBz dHJ1Y3Qgc29ja2FkZHJfYXRtc3ZjIHsKIH07CiAKIAotc3RhdGljIF9faW5saW5lX18gaW50IGF0 bXN2Y19hZGRyX2luX3VzZShzdHJ1Y3Qgc29ja2FkZHJfYXRtc3ZjIGFkZHIpCitzdGF0aWMgaW5s aW5lIGludCBhdG1zdmNfYWRkcl9pbl91c2Uoc3RydWN0IHNvY2thZGRyX2F0bXN2YyBhZGRyKQog ewogCXJldHVybiAqYWRkci5zYXNfYWRkci5wcnYgfHwgKmFkZHIuc2FzX2FkZHIucHViOwogfQog CiAKLXN0YXRpYyBfX2lubGluZV9fIGludCBhdG1wdmNfYWRkcl9pbl91c2Uoc3RydWN0IHNvY2th ZGRyX2F0bXB2YyBhZGRyKQorc3RhdGljIGlubGluZSBpbnQgYXRtcHZjX2FkZHJfaW5fdXNlKHN0 cnVjdCBzb2NrYWRkcl9hdG1wdmMgYWRkcikKIHsKIAlyZXR1cm4gYWRkci5zYXBfYWRkci5pdGYg fHwgYWRkci5zYXBfYWRkci52cGkgfHwgYWRkci5zYXBfYWRkci52Y2k7CiB9CmRpZmYgLS1naXQg YS9pbmNsdWRlL3VhcGkvbGludXgvYXRtc2FwLmggYi9pbmNsdWRlL3VhcGkvbGludXgvYXRtc2Fw LmgKaW5kZXggZmMwNTI0ODFlYWUwLi45N2YzNjk5ZWFkMGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dWFwaS9saW51eC9hdG1zYXAuaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgvYXRtc2FwLmgKQEAg LTE1NSw3ICsxNTUsNyBAQCBzdHJ1Y3QgYXRtX3NhcCB7CiB9OwogCiAKLXN0YXRpYyBfX2lubGlu ZV9fIGludCBibGxpX2luX3VzZShzdHJ1Y3QgYXRtX2JsbGkgYmxsaSkKK3N0YXRpYyBpbmxpbmUg aW50IGJsbGlfaW5fdXNlKHN0cnVjdCBhdG1fYmxsaSBibGxpKQogewogCXJldHVybiBibGxpLmwy X3Byb3RvIHx8IGJsbGkubDNfcHJvdG87CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGlu dXgvbWFwX3RvXzdzZWdtZW50LmggYi9pbmNsdWRlL3VhcGkvbGludXgvbWFwX3RvXzdzZWdtZW50 LmgKaW5kZXggZjllZDE4MTM0YjgzLi4xNmM4OWFkYWIyMjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dWFwaS9saW51eC9tYXBfdG9fN3NlZ21lbnQuaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbWFw X3RvXzdzZWdtZW50LmgKQEAgLTc2LDcgKzc2LDcgQEAgc3RydWN0IHNlZzdfY29udmVyc2lvbl9t YXAgewogCXVuc2lnbmVkIGNoYXIJdGFibGVbMTI4XTsKIH07CiAKLXN0YXRpYyBfX2lubGluZV9f IGludCBtYXBfdG9fc2VnNyhzdHJ1Y3Qgc2VnN19jb252ZXJzaW9uX21hcCAqbWFwLCBpbnQgYykK K3N0YXRpYyBpbmxpbmUgaW50IG1hcF90b19zZWc3KHN0cnVjdCBzZWc3X2NvbnZlcnNpb25fbWFw ICptYXAsIGludCBjKQogewogCXJldHVybiBjID49IDAgJiYgYyA8IHNpemVvZihtYXAtPnRhYmxl KSA/IG1hcC0+dGFibGVbY10gOiAtRUlOVkFMOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L2xpbnV4L25ldGZpbHRlcl9hcnAvYXJwX3RhYmxlcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25l dGZpbHRlcl9hcnAvYXJwX3RhYmxlcy5oCmluZGV4IGEyYTA5MjdkOWJkNi4uNGQ3MzNiYmFhMTgz IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyX2FycC9hcnBfdGFibGVz LmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlcl9hcnAvYXJwX3RhYmxlcy5oCkBA IC0xOTcsNyArMTk3LDcgQEAgc3RydWN0IGFycHRfZ2V0X2VudHJpZXMgewogfTsKIAogLyogSGVs cGVyIGZ1bmN0aW9ucyAqLwotc3RhdGljIF9faW5saW5lX18gc3RydWN0IHh0X2VudHJ5X3Rhcmdl dCAqYXJwdF9nZXRfdGFyZ2V0KHN0cnVjdCBhcnB0X2VudHJ5ICplKQorc3RhdGljIGlubGluZSBz dHJ1Y3QgeHRfZW50cnlfdGFyZ2V0ICphcnB0X2dldF90YXJnZXQoc3RydWN0IGFycHRfZW50cnkg KmUpCiB7CiAJcmV0dXJuICh2b2lkICopZSArIGUtPnRhcmdldF9vZmZzZXQ7CiB9CmRpZmYgLS1n aXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyX2JyaWRnZS9lYnRhYmxlcy5oIGIvaW5j bHVkZS91YXBpL2xpbnV4L25ldGZpbHRlcl9icmlkZ2UvZWJ0YWJsZXMuaAppbmRleCAzYjg2YzE0 ZWE0OWQuLjBjNWJmOTVhOGQ0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25ldGZp bHRlcl9icmlkZ2UvZWJ0YWJsZXMuaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVy X2JyaWRnZS9lYnRhYmxlcy5oCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RydWN0IGVidF9lbnRyeSB7 CiAJdW5zaWduZWQgY2hhciBlbGVtc1swXSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoX19hbGln bm9mX18oc3RydWN0IGVidF9yZXBsYWNlKSkpKTsKIH07CiAKLXN0YXRpYyBfX2lubGluZV9fIHN0 cnVjdCBlYnRfZW50cnlfdGFyZ2V0ICoKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGVidF9lbnRyeV90 YXJnZXQgKgogZWJ0X2dldF90YXJnZXQoc3RydWN0IGVidF9lbnRyeSAqZSkKIHsKIAlyZXR1cm4g KHZvaWQgKillICsgZS0+dGFyZ2V0X29mZnNldDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9s aW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9uZXRm aWx0ZXJfaXB2NC9pcF90YWJsZXMuaAppbmRleCA2YWFlYjE0YmZjZTEuLjA2Yzc5MDBlMzZjNCAx MDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5o CisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaApAQCAt MjE5LDcgKzIxOSw3IEBAIHN0cnVjdCBpcHRfZ2V0X2VudHJpZXMgewogfTsKIAogLyogSGVscGVy IGZ1bmN0aW9ucyAqLwotc3RhdGljIF9faW5saW5lX18gc3RydWN0IHh0X2VudHJ5X3RhcmdldCAq CitzdGF0aWMgaW5saW5lIHN0cnVjdCB4dF9lbnRyeV90YXJnZXQgKgogaXB0X2dldF90YXJnZXQo c3RydWN0IGlwdF9lbnRyeSAqZSkKIHsKIAlyZXR1cm4gKHZvaWQgKillICsgZS0+dGFyZ2V0X29m ZnNldDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXJfaXB2Ni9pcDZf dGFibGVzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyX2lwdjYvaXA2X3RhYmxlcy5o CmluZGV4IDAzMWQwYTQzYmVkMi4uZjg0NDY0YWFiNjViIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Vh cGkvbGludXgvbmV0ZmlsdGVyX2lwdjYvaXA2X3RhYmxlcy5oCisrKyBiL2luY2x1ZGUvdWFwaS9s aW51eC9uZXRmaWx0ZXJfaXB2Ni9pcDZfdGFibGVzLmgKQEAgLTI1OSw3ICsyNTksNyBAQCBzdHJ1 Y3QgaXA2dF9nZXRfZW50cmllcyB7CiB9OwogCiAvKiBIZWxwZXIgZnVuY3Rpb25zICovCi1zdGF0 aWMgX19pbmxpbmVfXyBzdHJ1Y3QgeHRfZW50cnlfdGFyZ2V0ICoKK3N0YXRpYyBpbmxpbmUgc3Ry dWN0IHh0X2VudHJ5X3RhcmdldCAqCiBpcDZ0X2dldF90YXJnZXQoc3RydWN0IGlwNnRfZW50cnkg KmUpCiB7CiAJcmV0dXJuICh2b2lkICopZSArIGUtPnRhcmdldF9vZmZzZXQ7CmRpZmYgLS1naXQg YS9pbmNsdWRlL3ZpZGVvL25ld3BvcnQuaCBiL2luY2x1ZGUvdmlkZW8vbmV3cG9ydC5oCmluZGV4 IGJjYmIzZDFiNmJmOS4uMTA4YmM1NTRjNGI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL3ZpZGVvL25l d3BvcnQuaAorKysgYi9pbmNsdWRlL3ZpZGVvL25ld3BvcnQuaApAQCAtNDI2LDcgKzQyNiw3IEBA IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQgbmV3cG9ydF92YzJfZ2V0KHN0cnVjdCBuZXdw b3J0X3JlZ3MgKnJlZ3MsCiAjZGVmaW5lIE5DTUFQX1JFR0FERFJfUlJFRyAgIDB4MDAwMDAwNjAK ICNkZWZpbmUgTkNNQVBfUFJPVE9DT0wgICAgICAgKDB4MDAwMDgwMDAgfCAweDAwMDQwMDAwIHwg MHgwMDgwMDAwMCkKIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBuZXdwb3J0X2NtYXBfc2V0YWRk cihzdHJ1Y3QgbmV3cG9ydF9yZWdzICpyZWdzLAorc3RhdGljIGlubGluZSB2b2lkIG5ld3BvcnRf Y21hcF9zZXRhZGRyKHN0cnVjdCBuZXdwb3J0X3JlZ3MgKnJlZ3MsCiAJCQkJCXVuc2lnbmVkIHNo b3J0IGFkZHIpCiB7CiAJcmVncy0+c2V0LmRjYm1vZGUgPSAoTlBPUlRfRE1PREVfQUNNQUxMIHwg TkNNQVBfUFJPVE9DT0wgfApAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZv aWQgbmV3cG9ydF9jbWFwX3NldGFkZHIoc3RydWN0IG5ld3BvcnRfcmVncyAqcmVncywKIAkJCSAg IE5DTUFQX1JFR0FERFJfUEJVRiB8IE5QT1JUX0RNT0RFX1czKTsKIH0KIAotc3RhdGljIF9faW5s aW5lX18gdm9pZCBuZXdwb3J0X2NtYXBfc2V0cmdiKHN0cnVjdCBuZXdwb3J0X3JlZ3MgKnJlZ3Ms CitzdGF0aWMgaW5saW5lIHZvaWQgbmV3cG9ydF9jbWFwX3NldHJnYihzdHJ1Y3QgbmV3cG9ydF9y ZWdzICpyZWdzLAogCQkJCSAgICAgICB1bnNpZ25lZCBjaGFyIHJlZCwKIAkJCQkgICAgICAgdW5z aWduZWQgY2hhciBncmVlbiwKIAkJCQkgICAgICAgdW5zaWduZWQgY2hhciBibHVlKQpAQCAtNDUw LDcgKzQ1MCw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgbmV3cG9ydF9jbWFwX3NldHJnYihz dHJ1Y3QgbmV3cG9ydF9yZWdzICpyZWdzLAogCiAvKiBNaXNjZWxsYW5lb3VzIE5FV1BPUlQgcm91 dGluZXMuICovCiAjZGVmaW5lIEJVU1lfVElNRU9VVCAxMDAwMDAKLXN0YXRpYyBfX2lubGluZV9f IGludCBuZXdwb3J0X3dhaXQoc3RydWN0IG5ld3BvcnRfcmVncyAqcmVncykKK3N0YXRpYyBpbmxp bmUgaW50IG5ld3BvcnRfd2FpdChzdHJ1Y3QgbmV3cG9ydF9yZWdzICpyZWdzKQogewogCWludCB0 ID0gQlVTWV9USU1FT1VUOwogCkBAIC00NjAsNyArNDYwLDcgQEAgc3RhdGljIF9faW5saW5lX18g aW50IG5ld3BvcnRfd2FpdChzdHJ1Y3QgbmV3cG9ydF9yZWdzICpyZWdzKQogCXJldHVybiAhdDsK IH0KIAotc3RhdGljIF9faW5saW5lX18gaW50IG5ld3BvcnRfYmZ3YWl0KHN0cnVjdCBuZXdwb3J0 X3JlZ3MgKnJlZ3MpCitzdGF0aWMgaW5saW5lIGludCBuZXdwb3J0X2Jmd2FpdChzdHJ1Y3QgbmV3 cG9ydF9yZWdzICpyZWdzKQogewogCWludCB0ID0gQlVTWV9USU1FT1VUOwogCkBAIC01NDcsNyAr NTQ3LDcgQEAgc3RhdGljIF9faW5saW5lX18gaW50IG5ld3BvcnRfYmZ3YWl0KHN0cnVjdCBuZXdw b3J0X3JlZ3MgKnJlZ3MpCiAjZGVmaW5lIFdBWVNMT1dfRENCX1hNQVA5X1BST1RPQ09MIERDQl9D WUNMRVMgKDEyLCAxMiwgMCkKICNkZWZpbmUgUl9EQ0JfWE1BUDlfUFJPVE9DT0wgICAgICAgRENC X0NZQ0xFUyAoMiwgMSwgMykKIAotc3RhdGljIF9faW5saW5lX18gdm9pZAorc3RhdGljIGlubGlu ZSB2b2lkCiB4bWFwOUZJRk9XYWl0IChzdHJ1Y3QgbmV3cG9ydF9yZWdzICpyZXgpCiB7CiAgICAg ICAgIHJleC0+c2V0LmRjYm1vZGUgPSBEQ0JfWE1BUDAgfCBYTTlfQ1JTX0ZJRk9fQVZBSUwgfApA QCAtNTU4LDcgKzU1OCw3IEBAIHhtYXA5RklGT1dhaXQgKHN0cnVjdCBuZXdwb3J0X3JlZ3MgKnJl eCkKIAkJOwogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkCitzdGF0aWMgaW5saW5lIHZvaWQK IHhtYXA5U2V0TW9kZVJlZyAoc3RydWN0IG5ld3BvcnRfcmVncyAqcmV4LCB1bnNpZ25lZCBpbnQg bW9kZXJlZywgdW5zaWduZWQgaW50IGRhdGEyNCwgaW50IGNmcmVxKQogewogICAgICAgICBpZiAo Y2ZyZXEgPiAxMTkpCmRpZmYgLS1naXQgYS9saWIvenN0ZC9tZW0uaCBiL2xpYi96c3RkL21lbS5o CmluZGV4IDNhMGYzNGM4NzA2Yy4uNzM5ODM3YTU5YWQ2IDEwMDY0NAotLS0gYS9saWIvenN0ZC9t ZW0uaAorKysgYi9saWIvenN0ZC9tZW0uaApAQCAtMjcsNyArMjcsNyBAQAogLyotKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgQ29tcGlsZXIgc3BlY2lmaWNzCiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFpTVERf U1RBVElDIHN0YXRpYyBfX2lubGluZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQorI2RlZmluZSBa U1REX1NUQVRJQyBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCiAKIC8qLSoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCiAqICBCYXNpYyBUeXBlcwpkaWZmIC0tZ2l0IGEvbmV0L2FwcGxldGFsay9hdGFsa19wcm9j LmMgYi9uZXQvYXBwbGV0YWxrL2F0YWxrX3Byb2MuYwppbmRleCA4MDA2Mjk1ZjhiZDcuLjZiYzdj ODBhNDRkZSAxMDA2NDQKLS0tIGEvbmV0L2FwcGxldGFsay9hdGFsa19wcm9jLmMKKysrIGIvbmV0 L2FwcGxldGFsay9hdGFsa19wcm9jLmMKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlIDxsaW51 eC9leHBvcnQuaD4KIAogCi1zdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgYXRhbGtfaWZhY2UgKmF0 YWxrX2dldF9pbnRlcmZhY2VfaWR4KGxvZmZfdCBwb3MpCitzdGF0aWMgaW5saW5lIHN0cnVjdCBh dGFsa19pZmFjZSAqYXRhbGtfZ2V0X2ludGVyZmFjZV9pZHgobG9mZl90IHBvcykKIHsKIAlzdHJ1 Y3QgYXRhbGtfaWZhY2UgKmk7CiAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGludCBhdGFsa19z ZXFfaW50ZXJmYWNlX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpCiAJcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIHN0cnVjdCBhdGFsa19yb3V0ZSAqYXRhbGtfZ2V0 X3JvdXRlX2lkeChsb2ZmX3QgcG9zKQorc3RhdGljIGlubGluZSBzdHJ1Y3QgYXRhbGtfcm91dGUg KmF0YWxrX2dldF9yb3V0ZV9pZHgobG9mZl90IHBvcykKIHsKIAlzdHJ1Y3QgYXRhbGtfcm91dGUg KnI7CiAKZGlmZiAtLWdpdCBhL25ldC9hcHBsZXRhbGsvZGRwLmMgYi9uZXQvYXBwbGV0YWxrL2Rk cC5jCmluZGV4IDliNmJjNWFiZTk0Ni4uODIyYmY0NWFkYjczIDEwMDY0NAotLS0gYS9uZXQvYXBw bGV0YWxrL2RkcC5jCisrKyBiL25ldC9hcHBsZXRhbGsvZGRwLmMKQEAgLTEyNzcsNyArMTI3Nyw3 IEBAIHN0YXRpYyBpbnQgYXRhbGtfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg c29ja2FkZHIgKnVhZGRyLAogfQogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBERFApCi1zdGF0 aWMgX19pbmxpbmVfXyBpbnQgaXNfaXBfb3Zlcl9kZHAoc3RydWN0IHNrX2J1ZmYgKnNrYikKK3N0 YXRpYyBpbmxpbmUgaW50IGlzX2lwX292ZXJfZGRwKHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJ cmV0dXJuIHNrYi0+ZGF0YVsxMl0gPT0gMjI7CiB9CmRpZmYgLS1naXQgYS9uZXQvY29yZS9uZWln aGJvdXIuYyBiL25ldC9jb3JlL25laWdoYm91ci5jCmluZGV4IDkxNTkyZmNlZWFhZC4uOGQyZmQx MTRmNmUyIDEwMDY0NAotLS0gYS9uZXQvY29yZS9uZWlnaGJvdXIuYworKysgYi9uZXQvY29yZS9u ZWlnaGJvdXIuYwpAQCAtODY1LDcgKzg2NSw3IEBAIHN0YXRpYyB2b2lkIG5laWdoX3BlcmlvZGlj X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXdyaXRlX3VubG9ja19iaCgmdGJsLT5s b2NrKTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gaW50IG5laWdoX21heF9wcm9iZXMoc3RydWN0 IG5laWdoYm91ciAqbikKK3N0YXRpYyBpbmxpbmUgaW50IG5laWdoX21heF9wcm9iZXMoc3RydWN0 IG5laWdoYm91ciAqbikKIHsKIAlzdHJ1Y3QgbmVpZ2hfcGFybXMgKnAgPSBuLT5wYXJtczsKIAly ZXR1cm4gTkVJR0hfVkFSKHAsIFVDQVNUX1BST0JFUykgKyBORUlHSF9WQVIocCwgQVBQX1BST0JF UykgKwpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2NtLmMgYi9uZXQvY29yZS9zY20uYwppbmRleCBi MWZmOGE0NDE3NDguLmQ1MDhhMjdmODU1MiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc2NtLmMKKysr IGIvbmV0L2NvcmUvc2NtLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKICAqCXNldHUoZylpZC4KICAqLwog Ci1zdGF0aWMgX19pbmxpbmVfXyBpbnQgc2NtX2NoZWNrX2NyZWRzKHN0cnVjdCB1Y3JlZCAqY3Jl ZHMpCitzdGF0aWMgaW5saW5lIGludCBzY21fY2hlY2tfY3JlZHMoc3RydWN0IHVjcmVkICpjcmVk cykKIHsKIAljb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCA9IGN1cnJlbnRfY3JlZCgpOwogCWt1aWRf dCB1aWQgPSBtYWtlX2t1aWQoY3JlZC0+dXNlcl9ucywgY3JlZHMtPnVpZCk7CmRpZmYgLS1naXQg YS9uZXQvZGVjbmV0L2RuX25zcF9pbi5jIGIvbmV0L2RlY25ldC9kbl9uc3BfaW4uYwppbmRleCAy ZmI1ZTA1NWJhMjUuLjUwOGJiN2EzNDFhYSAxMDA2NDQKLS0tIGEvbmV0L2RlY25ldC9kbl9uc3Bf aW4uYworKysgYi9uZXQvZGVjbmV0L2RuX25zcF9pbi5jCkBAIC01ODMsNyArNTgzLDcgQEAgc3Rh dGljIHZvaWQgZG5fbnNwX2xpbmtzZXJ2aWNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1 ZmYgKnNrYikKICAqIGJoX2xvY2tfc29jaygpIChpdHMgYWxyZWFkeSBoZWxkIHdoZW4gdGhpcyBp cyBjYWxsZWQpIHdoaWNoCiAgKiBhbHNvIGFsbG93cyBkYXRhIGFuZCBvdGhlciBkYXRhIHRvIGJl IHF1ZXVlZCB0byBhIHNvY2tldC4KICAqLwotc3RhdGljIF9faW5saW5lX18gaW50IGRuX3F1ZXVl X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCBzaWcsIHN0cnVj dCBza19idWZmX2hlYWQgKnF1ZXVlKQorc3RhdGljIGlubGluZSBpbnQgZG5fcXVldWVfc2tiKHN0 cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNpZywgc3RydWN0IHNrX2J1 ZmZfaGVhZCAqcXVldWUpCiB7CiAJaW50IGVycjsKIApkaWZmIC0tZ2l0IGEvbmV0L2RlY25ldC9k bl9uc3Bfb3V0LmMgYi9uZXQvZGVjbmV0L2RuX25zcF9vdXQuYwppbmRleCBhMTc3OWRlNmJkOWMu LjJlZDMwNmNlOTAxMCAxMDA2NDQKLS0tIGEvbmV0L2RlY25ldC9kbl9uc3Bfb3V0LmMKKysrIGIv bmV0L2RlY25ldC9kbl9uc3Bfb3V0LmMKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIGRuX3NlbmRf Y29ubl9jb25mKHN0cnVjdCBzb2NrICpzaywgZ2ZwX3QgZ2ZwKQogfQogCiAKLXN0YXRpYyBfX2lu bGluZV9fIHZvaWQgZG5fbnNwX2RvX2Rpc2Moc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBjaGFy IG1zZ2ZsZywKK3N0YXRpYyBpbmxpbmUgdm9pZCBkbl9uc3BfZG9fZGlzYyhzdHJ1Y3Qgc29jayAq c2ssIHVuc2lnbmVkIGNoYXIgbXNnZmxnLAogCQkJdW5zaWduZWQgc2hvcnQgcmVhc29uLCBnZnBf dCBnZnAsCiAJCQlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsCiAJCQlpbnQgZGRsLCB1bnNpZ25lZCBj aGFyICpkZCwgX19sZTE2IHJlbSwgX19sZTE2IGxvYykKZGlmZiAtLWdpdCBhL25ldC9kZWNuZXQv ZG5fcm91dGUuYyBiL25ldC9kZWNuZXQvZG5fcm91dGUuYwppbmRleCAxYzAwMmMwZmI3MTIuLjZi N2M2MTU0NGQ3NiAxMDA2NDQKLS0tIGEvbmV0L2RlY25ldC9kbl9yb3V0ZS5jCisrKyBiL25ldC9k ZWNuZXQvZG5fcm91dGUuYwpAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyB2b2lkIGRuX2RzdF9p ZmRvd24oc3RydWN0IGRzdF9lbnRyeSAqZHN0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQg aG93CiAJfQogfQogCi1zdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgZG5faGFzaChfX2xl MTYgc3JjLCBfX2xlMTYgZHN0KQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZG5faGFzaChf X2xlMTYgc3JjLCBfX2xlMTYgZHN0KQogewogCV9fdTE2IHRtcCA9IChfX3UxNiBfX2ZvcmNlKShz cmMgXiBkc3QpOwogCXRtcCBePSAodG1wID4+IDMpOwpkaWZmIC0tZ2l0IGEvbmV0L2RlY25ldC9k bl90YWJsZS5jIGIvbmV0L2RlY25ldC9kbl90YWJsZS5jCmluZGV4IGYwNzEwYjVkMDM3ZC4uOTBi NTE0NGMyMGJmIDEwMDY0NAotLS0gYS9uZXQvZGVjbmV0L2RuX3RhYmxlLmMKKysrIGIvbmV0L2Rl Y25ldC9kbl90YWJsZS5jCkBAIC00MDUsNyArNDA1LDcgQEAgc3RhdGljIHZvaWQgZG5fcnRtc2df ZmliKGludCBldmVudCwgc3RydWN0IGRuX2ZpYl9ub2RlICpmLCBpbnQgeiwgdTMyIHRiX2lkLAog CQlydG5sX3NldF9za19lcnIoJmluaXRfbmV0LCBSVE5MR1JQX0RFQ25ldF9ST1VURSwgZXJyKTsK IH0KIAotc3RhdGljIF9faW5saW5lX18gaW50IGRuX2hhc2hfZHVtcF9idWNrZXQoc3RydWN0IHNr X2J1ZmYgKnNrYiwKK3N0YXRpYyBpbmxpbmUgaW50IGRuX2hhc2hfZHVtcF9idWNrZXQoc3RydWN0 IHNrX2J1ZmYgKnNrYiwKIAkJCQlzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsCiAJCQkJc3Ry dWN0IGRuX2ZpYl90YWJsZSAqdGIsCiAJCQkJc3RydWN0IGRuX3pvbmUgKmR6LApAQCAtNDM0LDcg KzQzNCw3IEBAIHN0YXRpYyBfX2lubGluZV9fIGludCBkbl9oYXNoX2R1bXBfYnVja2V0KHN0cnVj dCBza19idWZmICpza2IsCiAJcmV0dXJuIHNrYi0+bGVuOwogfQogCi1zdGF0aWMgX19pbmxpbmVf XyBpbnQgZG5faGFzaF9kdW1wX3pvbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwKK3N0YXRpYyBpbmxp bmUgaW50IGRuX2hhc2hfZHVtcF96b25lKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJc3RydWN0 IG5ldGxpbmtfY2FsbGJhY2sgKmNiLAogCQkJCXN0cnVjdCBkbl9maWJfdGFibGUgKnRiLAogCQkJ CXN0cnVjdCBkbl96b25lICpkeikKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9p cHY0L2lnbXAuYwppbmRleCA0ZGEzOTQ0NmRhMmQuLjE3N2UxZjljNmJjZSAxMDA2NDQKLS0tIGEv bmV0L2lwdjQvaWdtcC5jCisrKyBiL25ldC9pcHY0L2lnbXAuYwpAQCAtMTgsNyArMTgsNyBAQAog ICoKICAqCUZpeGVzOgogICoKLSAqCQlBbGFuIENveAk6CUFkZGVkIGxvdHMgb2YgX19pbmxpbmVf XyB0byBvcHRpbWlzZQorICoJCUFsYW4gQ294CToJQWRkZWQgbG90cyBvZiBpbmxpbmUgdG8gb3B0 aW1pc2UKICAqCQkJCQl0aGUgbWVtb3J5IHVzYWdlIG9mIGFsbCB0aGUgdGlueSBsaXR0bGUKICAq CQkJCQlmdW5jdGlvbnMuCiAgKgkJQWxhbiBDb3gJOglEdW1wZWQgdGhlIGhlYWRlciBidWlsZGlu ZyBleHBlcmltZW50LgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWZfaW5ldDYuYyBiL25ldC9pcHY2 L2FmX2luZXQ2LmMKaW5kZXggOWE0MjYxZTUwMjcyLi4zNTg5NmU5ODk3YzEgMTAwNjQ0Ci0tLSBh L25ldC9pcHY2L2FmX2luZXQ2LmMKKysrIGIvbmV0L2lwdjYvYWZfaW5ldDYuYwpAQCAtMTAwLDcg KzEwMCw3IEBAIGJvb2wgaXB2Nl9tb2RfZW5hYmxlZCh2b2lkKQogfQogRVhQT1JUX1NZTUJPTF9H UEwoaXB2Nl9tb2RfZW5hYmxlZCk7CiAKLXN0YXRpYyBfX2lubGluZV9fIHN0cnVjdCBpcHY2X3Bp bmZvICppbmV0Nl9za19nZW5lcmljKHN0cnVjdCBzb2NrICpzaykKK3N0YXRpYyBpbmxpbmUgc3Ry dWN0IGlwdjZfcGluZm8gKmluZXQ2X3NrX2dlbmVyaWMoc3RydWN0IHNvY2sgKnNrKQogewogCWNv bnN0IGludCBvZmZzZXQgPSBzay0+c2tfcHJvdC0+b2JqX3NpemUgLSBzaXplb2Yoc3RydWN0IGlw djZfcGluZm8pOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pY21wLmMgYi9uZXQvaXB2Ni9pY21w LmMKaW5kZXggYzljNTNhZGU1NWMzLi40ODhhMDRlMTg4YzAgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2 L2ljbXAuYworKysgYi9uZXQvaXB2Ni9pY21wLmMKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGluZXQ2X3Byb3RvY29sIGljbXB2Nl9wcm90b2NvbCA9IHsKIH07CiAKIC8q IENhbGxlZCB3aXRoIEJIIGRpc2FibGVkICovCi1zdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3Qgc29j ayAqaWNtcHY2X3htaXRfbG9jayhzdHJ1Y3QgbmV0ICpuZXQpCitzdGF0aWMgaW5saW5lIHN0cnVj dCBzb2NrICppY21wdjZfeG1pdF9sb2NrKHN0cnVjdCBuZXQgKm5ldCkKIHsKIAlzdHJ1Y3Qgc29j ayAqc2s7CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3Qgc29j ayAqaWNtcHY2X3htaXRfbG9jayhzdHJ1Y3QgbmV0ICpuZXQpCiAJcmV0dXJuIHNrOwogfQogCi1z dGF0aWMgX19pbmxpbmVfXyB2b2lkIGljbXB2Nl94bWl0X3VubG9jayhzdHJ1Y3Qgc29jayAqc2sp CitzdGF0aWMgaW5saW5lIHZvaWQgaWNtcHY2X3htaXRfdW5sb2NrKHN0cnVjdCBzb2NrICpzaykK IHsKIAlzcGluX3VubG9jaygmc2stPnNrX2xvY2suc2xvY2spOwogfQpkaWZmIC0tZ2l0IGEvbmV0 L2lwdjYvdWRwLmMgYi9uZXQvaXB2Ni91ZHAuYwppbmRleCAyOGM0YWE1MDc4ZmMuLmM1MTY1NjUy OTI5YSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdWRwLmMKKysrIGIvbmV0L2lwdjYvdWRwLmMKQEAg LTU0MSw3ICs1NDEsNyBAQCBzdGF0aWMgaW50IF9fdWRwdjZfcXVldWVfcmN2X3NrYihzdHJ1Y3Qg c29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBf X2lubGluZV9fIHZvaWQgdWRwdjZfZXJyKHN0cnVjdCBza19idWZmICpza2IsCitzdGF0aWMgaW5s aW5lIHZvaWQgdWRwdjZfZXJyKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJIHN0cnVjdCBpbmV0 Nl9za2JfcGFybSAqb3B0LCB1OCB0eXBlLAogCQkJCSB1OCBjb2RlLCBpbnQgb2Zmc2V0LCBfX2Jl MzIgaW5mbykKIHsKQEAgLTk0Nyw3ICs5NDcsNyBAQCBzdGF0aWMgdm9pZCB1ZHBfdjZfZWFybHlf ZGVtdXgoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAl9CiB9CiAKLXN0YXRpYyBfX2lubGluZV9fIGlu dCB1ZHB2Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKK3N0YXRpYyBpbmxpbmUgaW50IHVkcHY2 X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXJldHVybiBfX3VkcDZfbGliX3Jjdihza2Is ICZ1ZHBfdGFibGUsIElQUFJPVE9fVURQKTsKIH0KZGlmZiAtLWdpdCBhL25ldC9sYXBiL2xhcGJf aWZhY2UuYyBiL25ldC9sYXBiL2xhcGJfaWZhY2UuYwppbmRleCBkYjZlMGFmZTNhMjAuLmI3OTcx MzhmZWM4YyAxMDA2NDQKLS0tIGEvbmV0L2xhcGIvbGFwYl9pZmFjZS5jCisrKyBiL25ldC9sYXBi L2xhcGJfaWZhY2UuYwpAQCAtNTIsMTIgKzUyLDEyIEBAIHN0YXRpYyB2b2lkIGxhcGJfZnJlZV9j YihzdHJ1Y3QgbGFwYl9jYiAqbGFwYikKIAlrZnJlZShsYXBiKTsKIH0KIAotc3RhdGljIF9faW5s aW5lX18gdm9pZCBsYXBiX2hvbGQoc3RydWN0IGxhcGJfY2IgKmxhcGIpCitzdGF0aWMgaW5saW5l IHZvaWQgbGFwYl9ob2xkKHN0cnVjdCBsYXBiX2NiICpsYXBiKQogewogCXJlZmNvdW50X2luYygm bGFwYi0+cmVmY250KTsKIH0KIAotc3RhdGljIF9faW5saW5lX18gdm9pZCBsYXBiX3B1dChzdHJ1 Y3QgbGFwYl9jYiAqbGFwYikKK3N0YXRpYyBpbmxpbmUgdm9pZCBsYXBiX3B1dChzdHJ1Y3QgbGFw Yl9jYiAqbGFwYikKIHsKIAlpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KCZsYXBiLT5yZWZjbnQp KQogCQlsYXBiX2ZyZWVfY2IobGFwYik7CmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19pbnB1dC5j IGIvbmV0L2xsYy9sbGNfaW5wdXQuYwppbmRleCA4MmNiOTNmNjZiOWIuLjZkNDY3YzhiMWQ3MCAx MDA2NDQKLS0tIGEvbmV0L2xsYy9sbGNfaW5wdXQuYworKysgYi9uZXQvbGxjL2xsY19pbnB1dC5j CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgbGxjX3NldF9zdGF0aW9uX2hhbmRsZXIodm9pZCAoKmhh bmRsZXIpKHN0cnVjdCBza19idWZmICpza2IpKQogICoKICAqCVRoaXMgZnVuY3Rpb24gcmV0dXJu cyB3aGljaCBMTEMgY29tcG9uZW50IG11c3QgaGFuZGxlIHRoaXMgUERVLgogICovCi1zdGF0aWMg X19pbmxpbmVfXyBpbnQgbGxjX3BkdV90eXBlKHN0cnVjdCBza19idWZmICpza2IpCitzdGF0aWMg aW5saW5lIGludCBsbGNfcGR1X3R5cGUoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlpbnQgdHlw ZSA9IExMQ19ERVNUX0NPTk47IC8qIEktUERVIG9yIFMtUERVIHR5cGUgKi8KIAlzdHJ1Y3QgbGxj X3BkdV9zbiAqcGR1ID0gbGxjX3BkdV9zbl9oZHIoc2tiKTsKZGlmZiAtLWdpdCBhL3NjcmlwdHMv Y2hlY2twYXRjaC5wbCBiL3NjcmlwdHMvY2hlY2twYXRjaC5wbAppbmRleCAxNjFiMDIyNGQ2YWUu LjBjYmU4ZGU2NjJhNiAxMDA3NTUKLS0tIGEvc2NyaXB0cy9jaGVja3BhdGNoLnBsCisrKyBiL3Nj cmlwdHMvY2hlY2twYXRjaC5wbApAQCAtMzg5LDcgKzM4OSw3IEBAIG91ciAkQXR0cmlidXRlCT0g cXJ7CiAJCQlfX3dlYWsKIAkJICB9eDsKIG91ciAkTW9kaWZpZXI7Ci1vdXIgJElubGluZQk9IHFy e2lubGluZXxfX2Fsd2F5c19pbmxpbmV8bm9pbmxpbmV8X19pbmxpbmV8X19pbmxpbmVfX307Citv dXIgJElubGluZQk9IHFye2lubGluZXxfX2Fsd2F5c19pbmxpbmV8bm9pbmxpbmV8aW5saW5lfGlu bGluZX07CiBvdXIgJE1lbWJlcgk9IHFyey0+JElkZW50fFwuJElkZW50fFxbW15dXSpcXX07CiBv dXIgJEx2YWwJPSBxcnskSWRlbnQoPzokTWVtYmVyKSp9OwogCkBAIC01NzgyLDEzICs1NzgyLDEz IEBAIHN1YiBwcm9jZXNzIHsKIAkJCSAgICAgICJpbmxpbmUga2V5d29yZCBzaG91bGQgc2l0IGJl dHdlZW4gc3RvcmFnZSBjbGFzcyBhbmQgdHlwZVxuIiAuICRoZXJlY3Vycik7CiAJCX0KIAotIyBD aGVjayBmb3IgX19pbmxpbmVfXyBhbmQgX19pbmxpbmUsIHByZWZlciBpbmxpbmUKKyMgQ2hlY2sg Zm9yIGlubGluZSBhbmQgaW5saW5lLCBwcmVmZXIgaW5saW5lCiAJCWlmICgkcmVhbGZpbGUgIX4g bUBcYmluY2x1ZGUvdWFwaS9AICYmCi0JCSAgICAkbGluZSA9fiAvXGIoX19pbmxpbmVfX3xfX2lu bGluZSlcYi8pIHsKKwkJICAgICRsaW5lID1+IC9cYihpbmxpbmV8aW5saW5lKVxiLykgewogCQkJ aWYgKFdBUk4oIklOTElORSIsCiAJCQkJICJwbGFpbiBpbmxpbmUgaXMgcHJlZmVycmVkIG92ZXIg JDFcbiIgLiAkaGVyZWN1cnIpICYmCiAJCQkgICAgJGZpeCkgewotCQkJCSRmaXhlZFskZml4bGlu ZW5yXSA9fiBzL1xiKF9faW5saW5lX198X19pbmxpbmUpXGIvaW5saW5lLzsKKwkJCQkkZml4ZWRb JGZpeGxpbmVucl0gPX4gcy9cYihpbmxpbmV8aW5saW5lKVxiL2lubGluZS87CiAKIAkJCX0KIAkJ fQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9nZW5rc3ltcy9rZXl3b3Jkcy5jIGIvc2NyaXB0cy9nZW5r c3ltcy9rZXl3b3Jkcy5jCmluZGV4IDlmNDBiY2QxN2QwNy4uZjhjYjgxMWNkOTdkIDEwMDY0NAot LS0gYS9zY3JpcHRzL2dlbmtzeW1zL2tleXdvcmRzLmMKKysrIGIvc2NyaXB0cy9nZW5rc3ltcy9r ZXl3b3Jkcy5jCkBAIC0xNCw4ICsxNCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcmVzd29yZCB7CiAJeyAi X19jb25zdCIsIENPTlNUX0tFWVcgfSwKIAl7ICJfX2NvbnN0X18iLCBDT05TVF9LRVlXIH0sCiAJ eyAiX19leHRlbnNpb25fXyIsIEVYVEVOU0lPTl9LRVlXIH0sCi0JeyAiX19pbmxpbmUiLCBJTkxJ TkVfS0VZVyB9LAotCXsgIl9faW5saW5lX18iLCBJTkxJTkVfS0VZVyB9LAorCXsgImlubGluZSIs IElOTElORV9LRVlXIH0sCisJeyAiaW5saW5lIiwgSU5MSU5FX0tFWVcgfSwKIAl7ICJfX3NpZ25l ZCIsIFNJR05FRF9LRVlXIH0sCiAJeyAiX19zaWduZWRfXyIsIFNJR05FRF9LRVlXIH0sCiAJeyAi X190eXBlb2YiLCBUWVBFT0ZfS0VZVyB9LApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9rZXJuZWwtZG9j IGIvc2NyaXB0cy9rZXJuZWwtZG9jCmluZGV4IDhmMGY1MDhhNzhlOS4uOWNhZWQ2NjQwYjU4IDEw MDc1NQotLS0gYS9zY3JpcHRzL2tlcm5lbC1kb2MKKysrIGIvc2NyaXB0cy9rZXJuZWwtZG9jCkBA IC0xNTY5LDggKzE1NjksOCBAQCBzdWIgZHVtcF9mdW5jdGlvbigkJCkgewogICAgICRwcm90b3R5 cGUgPX4gcy9eZXh0ZXJuICsvLzsKICAgICAkcHJvdG90eXBlID1+IHMvXmFzbWxpbmthZ2UgKy8v OwogICAgICRwcm90b3R5cGUgPX4gcy9eaW5saW5lICsvLzsKLSAgICAkcHJvdG90eXBlID1+IHMv Xl9faW5saW5lX18gKy8vOwotICAgICRwcm90b3R5cGUgPX4gcy9eX19pbmxpbmUgKy8vOworICAg ICRwcm90b3R5cGUgPX4gcy9eaW5saW5lICsvLzsKKyAgICAkcHJvdG90eXBlID1+IHMvXmlubGlu ZSArLy87CiAgICAgJHByb3RvdHlwZSA9fiBzL15fX2Fsd2F5c19pbmxpbmUgKy8vOwogICAgICRw cm90b3R5cGUgPX4gcy9ebm9pbmxpbmUgKy8vOwogICAgICRwcm90b3R5cGUgPX4gcy9fX2luaXQg Ky8vOwpkaWZmIC0tZ2l0IGEvc291bmQvc3BhcmMvYW1kNzkzMC5jIGIvc291bmQvc3BhcmMvYW1k NzkzMC5jCmluZGV4IDU2ZjE3NDEwZmNlYS4uM2QxZTYwM2ZkY2ZlIDEwMDY0NAotLS0gYS9zb3Vu ZC9zcGFyYy9hbWQ3OTMwLmMKKysrIGIvc291bmQvc3BhcmMvYW1kNzkzMC5jCkBAIC0zNDQsNyAr MzQ0LDcgQEAgc3RydWN0IHNuZF9hbWQ3OTMwIHsKIHN0YXRpYyBzdHJ1Y3Qgc25kX2FtZDc5MzAg KmFtZDc5MzBfbGlzdDsKIAogLyogSWRsZSB0aGUgQU1ENzkzMCBjaGlwLiAgVGhlIGFtZC0+bG9j ayBpcyBub3QgaGVsZC4gICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGFtZDc5MzBfaWRsZShz dHJ1Y3Qgc25kX2FtZDc5MzAgKmFtZCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBhbWQ3OTMwX2lkbGUo c3RydWN0IHNuZF9hbWQ3OTMwICphbWQpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIApAQCAt MzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBfX2lubGluZV9fIHZvaWQgYW1kNzkzMF9pZGxlKHN0cnVj dCBzbmRfYW1kNzkzMCAqYW1kKQogfQogCiAvKiBFbmFibGUgY2hpcCBpbnRlcnJ1cHRzLiAgVGhl IGFtZC0+bG9jayBpcyBub3QgaGVsZC4gICovCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGFtZDc5 MzBfZW5hYmxlX2ludHMoc3RydWN0IHNuZF9hbWQ3OTMwICphbWQpCitzdGF0aWMgaW5saW5lIHZv aWQgYW1kNzkzMF9lbmFibGVfaW50cyhzdHJ1Y3Qgc25kX2FtZDc5MzAgKmFtZCkKIHsKIAl1bnNp Z25lZCBsb25nIGZsYWdzOwogCkBAIC0zNjYsNyArMzY2LDcgQEAgc3RhdGljIF9faW5saW5lX18g dm9pZCBhbWQ3OTMwX2VuYWJsZV9pbnRzKHN0cnVjdCBzbmRfYW1kNzkzMCAqYW1kKQogfQogCiAv KiBEaXNhYmxlIGNoaXAgaW50ZXJydXB0cy4gIFRoZSBhbWQtPmxvY2sgaXMgbm90IGhlbGQuICAq Lwotc3RhdGljIF9faW5saW5lX18gdm9pZCBhbWQ3OTMwX2Rpc2FibGVfaW50cyhzdHJ1Y3Qgc25k X2FtZDc5MzAgKmFtZCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBhbWQ3OTMwX2Rpc2FibGVfaW50cyhz dHJ1Y3Qgc25kX2FtZDc5MzAgKmFtZCkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9u IG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpo dHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFs aXphdGlvbg==