02 Nov, 2013

1 commit

  • Johan has been conned^Wgracious in accepting the maintainership of the
    USB serial drivers, especially as he's been doing all of the real work
    for the past few years.

    At the same time, remove a bunch of old entries for USB serial drivers
    that don't make sense anymore, given that the developers are no longer
    around, and individual driver maintainerships for tiny things like this
    is pretty pointless.

    Acked-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Greg KH
     

28 Oct, 2013

1 commit

  • Pull slave-dmaengine fixes from Vinod Koul:
    "Here is the late fixes pull request for dmaengine while you fly back
    from KS.

    We have a new dmaengine ML hosted by vger so a patch for that along
    with addition of Dave as driver mainatainer for ioat. Other fixes are
    memeory leak fixes on edma driver, small fixes on rcar-hpbdma driver
    by Sergei"

    * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
    dmaengine: edma: fix another memory leak
    dma: edma: Fix memory leak
    MAINTAINERS: add to ioatdma maintainer list
    MAINTAINERS: add the new dmaengine mailing list

    Linus Torvalds
     

25 Oct, 2013

1 commit

  • Pull ARM SoC fixes from Olof Johansson:
    "There's really only one bugfix in this branch, which is a fix for
    timers on the integrator platform. Since Linus Walleij is
    resurrecting support for the platform it seems valuable to get the fix
    into 3.12 even though the regression has been around a while.

    The rest are a handful of maintainers updates. If you prefer to hold
    those until 3.13 then just merge the first patch on the branch which
    is the fix"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    MAINTAINERS: Add maintainers entry for Rockchip SoCs
    MAINTAINERS: Tegra updates, and driver ownership
    MAINTAINERS: ARM: mvebu: add Sebastian Hesselbarth
    ARM: integrator: deactivate timer0 on the Integrator/CP

    Linus Torvalds
     

24 Oct, 2013

2 commits


23 Oct, 2013

1 commit

  • Pull networking fixes from David Miller:
    "Sorry I let so much accumulate, I was in Buffalo and wanted a few
    things to cook in my tree for a while before sending to you. Anyways,
    it's a lot of little things as usual at this stage in the game"

    1) Make bonding MAINTAINERS entry reflect reality, from Andy
    Gospodarek.

    2) Fix accidental sock_put() on timewait mini sockets, from Eric
    Dumazet.

    3) Fix crashes in l2tp due to mis-handling of ipv4 mapped ipv6
    addresses, from François CACHEREUL.

    4) Fix heap overflow in __audit_sockaddr(), from the eagle eyed Dan
    Carpenter.

    5) tcp_shifted_skb() doesn't take handle FINs properly, from Eric
    Dumazet.

    6) SFC driver bug fixes from Ben Hutchings.

    7) Fix TX packet scheduling wedge after channel change in ath9k driver,
    from Felix Fietkau.

    8) Fix user after free in BPF JIT code, from Alexei Starovoitov.

    9) Source address selection test is reversed in
    __ip_route_output_key(), fix from Jiri Benc.

    10) VLAN and CAN layer mis-size netlink attributes, from Marc
    Kleine-Budde.

    11) Fix permission checks in sysctls to use current_euid() instead of
    current_uid(). From Eric W Biederman.

    12) IPSEC policies can go away while a timer is still pending for them,
    add appropriate ref-counting to fix, from Steffen Klassert.

    13) Fix mis-programming of FDR and RMCR registers on R8A7740 sh_eth
    chips, from Nguyen Hong Ky and Simon Horman.

    14) MLX4 forgets to DMA unmap pages on RX, fix from Amir Vadai.

    15) IPV6 GRE tunnel MTU upper limit is miscalculated, from Oussama
    Ghorbel.

    16) Fix typo in fq_change(), we were assigning "initial quantum" to
    "quantum". From Eric Dumazet.

    17) Set a more appropriate sk_pacing_rate for non-TCP sockets, otherwise
    FQ packet scheduler does not pace those flows properly. Also from
    Eric Dumazet.

    18) rtlwifi miscalculates packet pointers, from Mark Cave-Ayland.

    19) l2tp_xmit_skb() can be called from process context, not just softirq
    context, so we must always make sure to BH disable around it. From
    Eric Dumazet.

    20) On qdisc reset, we forget to purge the RB tree of SKBs in netem
    packet scheduler. From Stephen Hemminger.

    21) Fix info leak in farsync WAN driver ioctl() handler, from Dan
    Carpenter and Salva Peiró.

    22) Fix PHY reset and other issues in dm9000 driver, from Nikita
    Kiryanov and Michael Abbott.

    23) When hardware can do SCTP crc32 checksums, we accidently don't
    disable the csum offload when IPSEC transformations have been
    applied. From Fan Du and Vlad Yasevich.

    24) Tail loss probing in TCP leaves the socket in the wrong congestion
    avoidance state. From Yuchung Cheng.

    25) In CPSW driver, enable NAPI before interrupts are turned on, from
    Markus Pargmann.

    26) Integer underflow and dual-assignment in YAM hamradio driver, from
    Dan Carpenter.

    27) If we are going to mangle a packet in tcp_set_skb_tso_segs() we must
    unclone it. This fixes various hard to track down crashes in
    drivers where the SKBs ->gso_segs was changing right from underneath
    the driver during TX queueing. From Eric Dumazet.

    28) Fix the handling of VLAN IDs, and in particular the special IDs 0
    and 4095, in the bridging layer. From Toshiaki Makita.

    29) Another info leak, this time in wanxl WAN driver, from Salva Peiró.

    30) Fix race in socket credential passing, from Daniel Borkmann.

    31) WHen NETLABEL is disabled, we don't validate CIPSO packets properly,
    from Seif Mazareeb.

    32) Fix identification of fragmented frames in ipv4/ipv6 UDP
    Fragmentation Offload output paths, from Jiri Pirko.

    33) Virtual Function fixes in bnx2x driver from Yuval Mintz and Ariel
    Elior.

    34) When we removed the explicit neighbour pointer from ipv6 routes a
    slight regression was introduced for users such as IPVS, xt_TEE, and
    raw sockets. We mix up the users requested destination address with
    the routes assigned nexthop/gateway. From Julian Anastasov and
    Simon Horman.

    35) Fix stack overruns in rt6_probe(), the issue is that can end up
    doing two full packet xmit paths at the same time when emitting
    neighbour discovery messages. From Hannes Frederic Sowa.

    36) davinci_emac driver doesn't handle IFF_ALLMULTI correctly, from
    Mariusz Ceier.

    37) Make sure to set TCP sk_pacing_rate after the first legitimate RTT
    sample, from Neal Cardwell.

    38) Wrong netlink attribute passed to xfrm_replay_verify_len(), from
    Steffen Klassert.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (152 commits)
    ax88179_178a: Add VID:DID for Samsung USB Ethernet Adapter
    ax88179_178a: Correct the RX error definition in RX header
    Revert "bridge: only expire the mdb entry when query is received"
    tcp: initialize passive-side sk_pacing_rate after 3WHS
    davinci_emac.c: Fix IFF_ALLMULTI setup
    mac802154: correct a typo in ieee802154_alloc_device() prototype
    ipv6: probe routes asynchronous in rt6_probe
    netfilter: nf_conntrack: fix rt6i_gateway checks for H.323 helper
    ipv6: fill rt6i_gateway with nexthop address
    ipv6: always prefer rt6i_gateway if present
    bnx2x: Set NETIF_F_HIGHDMA unconditionally
    bnx2x: Don't pretend during register dump
    bnx2x: Lock DMAE when used by statistic flow
    bnx2x: Prevent null pointer dereference on error flow
    bnx2x: Fix config when SR-IOV and iSCSI are enabled
    bnx2x: Fix Coalescing configuration
    bnx2x: Unlock VF-PF channel on MAC/VLAN config error
    bnx2x: Prevent an illegal pointer dereference during panic
    bnx2x: Fix Maximum CoS estimation for VFs
    drivers: net: cpsw: fix kernel warn during iperf test with interrupt pacing
    ...

    Linus Torvalds
     

22 Oct, 2013

1 commit

  • Pull sound fixes from Takashi Iwai:
    "The pending last-minute ASoC fixes, all of which are driver-local
    (tlv320aic3x, rcar, pcm1681, pcm1792a, omap, fsl) and should be pretty
    safe to apply"

    * tag 'sound-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: Add MAINTAINERS entry for dmaengine helpers
    ASoC: pcm1792a: Fix max_register setting
    ASoC: pcm1681: Fix max_register setting
    ASoC: pcm1681: Fix max_register setting
    ASoC: rcar: fixup generation checker
    ASoC: tlv320aic3x: Connect 'Left Line1R Mux' and 'Right Line1L Mux'
    ASoC: fsl: imx-ssi: fix probe on imx31
    ASoC: omap: Fix incorrect ARM dependency
    ASoC: fsl: Fix sound on mx31moboard
    ASoC: fsl_ssi: Fix irq_of_parse_and_map() return value check

    Linus Torvalds
     

20 Oct, 2013

1 commit


18 Oct, 2013

2 commits


17 Oct, 2013

1 commit


15 Oct, 2013

1 commit

  • Sebastian is a hobbyist who has done a lot of heavy lifting converting
    mach-dove to devicetree, and assisting others with patches pertaining to
    mvebu.

    It is hoped that he will continue this work, and also assist the current
    mvebu maintainers with patch wrangling and pull request submissions.

    Signed-off-by: Jason Cooper
    Acked-by: Sebastian Hesselbarth
    Signed-off-by: Kevin Hilman

    Jason Cooper
     

11 Oct, 2013

1 commit


09 Oct, 2013

2 commits


05 Oct, 2013

1 commit

  • Pull iommu fixes from Joerg Roedel:
    "A couple of fixes from the IOMMU side:

    - some small fixes for the new ARM-SMMU driver
    - a register offset correction for VT-d
    - add MAINTAINERS entry for drivers/iommu

    Overall no really big or intrusive changes"

    * tag 'iommu-fixes-v3.12-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    x86/iommu: correct ICS register offset
    MAINTAINERS: add overall IOMMU section
    iommu/arm-smmu: don't enable SMMU device until probing has completed
    iommu/arm-smmu: fix iommu_present() test in init
    iommu/arm-smmu: fix a signedness bug

    Linus Torvalds
     

03 Oct, 2013

2 commits

  • Pull ARM SoC fixes from Olof Johansson:
    "We have a fairly large batch of fixes this time around, mostly just
    due to various platforms all having a fix or two more than usual.

    Worth pointing out are:

    - A fix for EDMA on Davinci/OMAP where channel allocation broke with
    the DT conversion. Due to some miscommunication we didn't
    understand the impact of the breakage, so we were pushing back on
    it for 3.12, but it sounds like it's actually breaking quite a few
    people out there.

    - A bunch of fixes for Marvell platforms, some straggling fixes for
    merge window fallout and some fixes for a couple of the platforms
    (Netgear RN102 in particular).

    - A fix for a race between multi-cluster power management and cpu
    hotplug on Versatile Express.

    And a bunch of other smaller fixes that all add up.

    We'll be switching over into stricter regressions-only mode from here
    on out"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (31 commits)
    ARM: multi_v7_defconfig: add SDHCI for i.MX
    bus: mvebu-mbus: Fix optional pcie-mem/io-aperture properties
    ARM: mvebu: add missing DT Mbus ranges and relocate PCIe DT nodes for RN102
    ARM: at91: sam9g45: shutdown ddr1 too when rebooting
    MAINTAINERS: ARM: SIRF: use kernel.org mail box
    MAINTAINERS: ARM: SIRF: add missed drivers into maintain list
    ARM: edma: Fix clearing of unused list for DT DMA resources
    ARM: vexpress: tc2: fix hotplug/idle/kexec race on cluster power down
    ARM: dts: sirf: fix interrupt and dma prop of VIP for prima2 and atlas6
    ARM: dts: sirf: fix the ranges of peri-iobrg of prima2
    ARM: dts: makefile: build atlas6-evb.dtb for ARCH_ATLAS6
    ARM: dts: sirf: fix fifosize, clks, dma channels for UART
    ARM: mvebu: Add DT entry for ReadyNAS 102 to use gpio-poweroff driver
    ARM: mvebu: fix ReadyNAS 102 Power button GPIO to make it active high
    ARM: mach-integrator: Add stub for pci_v3_early_init() for !CONFIG_PCI
    ARM: shmobile: Remove #gpio-ranges-cells DT property
    gpio: rcar: Remove #gpio-range-cells DT property usage
    ARM: shmobile: armadillo: fixup ether pinctrl naming
    ARM: shmobile: Lager: add Micrel KSZ8041 PHY fixup
    ARM: shmobile: update SDHI DT compatibility string to the - format
    ...

    Linus Torvalds
     
  • Veaceslav has been doing a significant amount of work on bonding lately and
    reached out to me about being a maintainer. After discussing this with him, I
    think he would be a good fit as a bonding maintainer.

    Signed-off-by: Andy Gospodarek
    Acked-by: Veaceslav Falico
    Signed-off-by: Jay Vosburgh
    Signed-off-by: David S. Miller

    Andy Gospodarek
     

02 Oct, 2013

1 commit

  • Pull networking changes from David Miller:

    1) Multiply in netfilter IPVS can overflow when calculating destination
    weight. From Simon Kirby.

    2) Use after free fixes in IPVS from Julian Anastasov.

    3) SFC driver bug fixes from Daniel Pieczko.

    4) Memory leak in pcan_usb_core failure paths, from Alexey Khoroshilov.

    5) Locking and encapsulation fixes to serial line CAN driver, from
    Andrew Naujoks.

    6) Duplex and VF handling fixes to bnx2x driver from Yaniv Rosner,
    Eilon Greenstein, and Ariel Elior.

    7) In lapb, if no other packets are outstanding, T1 timeouts actually
    stall things and no packet gets sent. Fix from Josselin Costanzi.

    8) ICMP redirects should not make it to the socket error queues, from
    Duan Jiong.

    9) Fix bugs in skge DMA mapping error handling, from Nikulas Patocka.

    10) Fix setting of VLAN priority field on via-rhine driver, from Roget
    Luethi.

    11) Fix TX stalls and VLAN promisc programming in be2net driver from
    Ajit Khaparde.

    12) Packet padding doesn't get handled correctly in new usbnet SG
    support code, from Ming Lei.

    13) Fix races in netdevice teardown wrt. network namespace closing.
    From Eric W. Biederman.

    14) Fix potential missed initialization of net_secret if not TCP
    connections are openned. From Eric Dumazet.

    15) Cinterion PLXX product ID in qmi_wwan driver is wrong, from
    Aleksander Morgado.

    16) skb_cow_head() can change skb->data and thus packet header pointers,
    don't use stale ip_hdr reference in ip_tunnel code.

    17) Backend state transition handling fixes in xen-netback, from Paul
    Durrant.

    18) Packet offset for AH protocol is handled wrong in flow dissector,
    from Eric Dumazet.

    19) Taking down an fq packet scheduler instance can leave stale packets
    in the queues, fix from Eric Dumazet.

    20) Fix performance regressions introduced by TCP Small Queues. From
    Eric Dumazet.

    21) IPV6 GRE tunneling code calculates max_headroom incorrectly, from
    Hannes Frederic Sowa.

    22) Multicast timer handlers in ipv4 and ipv6 can be the last and final
    reference to the ipv4/ipv6 specific network device state, so use the
    reference put that will check and release the object if the
    reference hits zero. From Salam Noureddine.

    23) Fix memory corruption in ip_tunnel driver, and use skb_push()
    instead of __skb_push() so that similar bugs are less hard to find.
    From Steffen Klassert.

    24) Add forgotten hookup of rtnl_ops in SIT and ip6tnl drivers, from
    Nicolas Dichtel.

    25) fq scheduler doesn't accurately rate limit in certain circumstances,
    from Eric Dumazet.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (103 commits)
    pkt_sched: fq: rate limiting improvements
    ip6tnl: allow to use rtnl ops on fb tunnel
    sit: allow to use rtnl ops on fb tunnel
    ip_tunnel: Remove double unregister of the fallback device
    ip_tunnel_core: Change __skb_push back to skb_push
    ip_tunnel: Add fallback tunnels to the hash lists
    ip_tunnel: Fix a memory corruption in ip_tunnel_xmit
    qlcnic: Fix SR-IOV configuration
    ll_temac: Reset dma descriptors indexes on ndo_open
    skbuff: size of hole is wrong in a comment
    ipv6 mcast: use in6_dev_put in timer handlers instead of __in6_dev_put
    ipv4 igmp: use in_dev_put in timer handlers instead of __in_dev_put
    ethernet: moxa: fix incorrect placement of __initdata tag
    ipv6: gre: correct calculation of max_headroom
    powerpc/83xx: gianfar_ptp: select 1588 clock source through dts file
    Revert "powerpc/83xx: gianfar_ptp: select 1588 clock source through dts file"
    bonding: Fix broken promiscuity reference counting issue
    tcp: TSQ can use a dynamic limit
    dm9601: fix IFF_ALLMULTI handling
    pkt_sched: fq: qdisc dismantle fixes
    ...

    Linus Torvalds
     

01 Oct, 2013

4 commits


30 Sep, 2013

1 commit

  • Pull staging fixes from Greg KH:
    "Here are some staging driver fixes, MAINTAINER updates, and a new
    device id. All of these have been in the linux-next tree, and are
    pretty simple patches"

    * tag 'staging-3.12-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: r8188eu: Add new device ID
    staging: imx-drm: Fix probe failure
    staging: vt6656: [BUG] iwctl_siwencodeext return if device not open
    staging: vt6656: [BUG] main_usb.c oops on device_close move flag earlier.
    staging: vt6656: rxtx.c [BUG] s_vGetFreeContext dead lock on null apTD.
    Staging: rtl8192u: r819xU_cmdpkt: checking NULL value after doing dev_alloc_skb
    staging: usbip: Orphan usbip
    staging: r8188eu: Add files for new drive: Cocci spatch "noderef"
    staging: r8188eu: Cocci spatch "noderef"
    staging: octeon-usb: Cocci spatch "noderef"
    staging: r8188eu: Add files for new drive: Cocci spatch "noderef"
    MAINTAINERS: staging: dgnc and dgap drivers: add maintainer
    staging: lustre: Cocci spatch "noderef"

    Linus Torvalds
     

26 Sep, 2013

4 commits


25 Sep, 2013

1 commit


24 Sep, 2013

1 commit

  • I believe that Joerg Roedel is at least the path through which
    drivers/iommu changes should be merged. Add a MAINTAINERS entry to
    make this clear, so that he's Cd'd on all relevant patches. This is
    relevant for non-AMD/Intel IOMMUs, where get_maintainers.pl doesn't
    currently remind anyone to Cc Joerg on patches.

    Signed-off-by: Stephen Warren
    Signed-off-by: Joerg Roedel

    Stephen Warren
     

12 Sep, 2013

10 commits

  • Merge first patch-bomb from Andrew Morton:
    - Some pidns/fork/exec tweaks
    - OCFS2 updates
    - Most of MM - there remain quite a few memcg parts which depend on
    pending core cgroups changes. Which might have been already merged -
    I'll check tomorrow...
    - Various misc stuff all over the place
    - A few block bits which I never got around to sending to Jens -
    relatively minor things.
    - MAINTAINERS maintenance
    - A small number of lib/ updates
    - checkpatch updates
    - epoll
    - firmware/dmi-scan
    - Some kprobes work for S390
    - drivers/rtc updates
    - hfsplus feature work
    - vmcore feature work
    - rbtree upgrades
    - AOE updates
    - pktcdvd cleanups
    - PPS
    - memstick
    - w1
    - New "inittmpfs" feature, which does the obvious
    - More IPC work from Davidlohr.

    * emailed patches from Andrew Morton : (303 commits)
    lz4: fix compression/decompression signedness mismatch
    ipc: drop ipc_lock_check
    ipc, shm: drop shm_lock_check
    ipc: drop ipc_lock_by_ptr
    ipc, shm: guard against non-existant vma in shmdt(2)
    ipc: document general ipc locking scheme
    ipc,msg: drop msg_unlock
    ipc: rename ids->rw_mutex
    ipc,shm: shorten critical region for shmat
    ipc,shm: cleanup do_shmat pasta
    ipc,shm: shorten critical region for shmctl
    ipc,shm: make shmctl_nolock lockless
    ipc,shm: introduce shmctl_nolock
    ipc: drop ipcctl_pre_down
    ipc,shm: shorten critical region in shmctl_down
    ipc,shm: introduce lockless functions to obtain the ipc object
    initmpfs: use initramfs if rootfstype= or root= specified
    initmpfs: make rootfs use tmpfs when CONFIG_TMPFS enabled
    initmpfs: move rootfs code from fs/ramfs/ to init/
    initmpfs: move bdi setup from init_rootfs to init_ramfs
    ...

    Linus Torvalds
     
  • Based partially on MS standard spec quotes from Alex Dubov.

    As any code that works with user data this driver isn't recommended to use
    to write cards that contain valuable data.

    It tries its best though to avoid data corruption and possible damage to
    the card.

    Tested on MS DUO 64 MB card on Ricoh R592 card reader.

    Signed-off-by: Maxim Levitsky
    Cc: Valdis Kletnieks
    Cc: Jens Axboe
    Cc: Alex Dubov
    Cc: Tejun Heo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Maxim Levitsky
     
  • It's clearer to have patterns marked as directories.

    Change the directory patterns without terminating slashes.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Add ownership to maintainers file for the mach-bcm related files,
    including drivers that are used for the SoCs defined in mach-bcm.

    Signed-off-by: Christian Daudt
    Cc: Olof Johansson
    Cc: Arnd Bergmann
    Cc: Stephen Warren
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christian Daudt
     
  • Commit c50cd357887a ("net: gre: move GSO functions to gre_offload")
    renamed and separated the file into multiple files. Update the
    patterns.

    Signed-off-by: Joe Perches
    Cc: Dmitry Kozlov
    Cc: Daniel Borkmann
    Cc: David S. Miller
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Commit a0e631235a04 ("usb: phy: move all PHY drivers to
    drivers/usb/phy/") deleted the files, remove the file pattern.

    Signed-off-by: Joe Perches
    Acked-by: Felipe Balbi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Commit f3bc64d6d1f2 ("USB: EHCI: DT support for generic bus glue")
    removed the ehci-vt8500.c file, update the file pattern to include
    ehci-platform.c.

    Signed-off-by: Joe Perches
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Commit 6659a20a76e0 ("ARC: MAINTAINERS update for ARC") typoed the file
    pattern. Fix it.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Commit 45fcac1aad5d ("mfd: Move ssbi driver into drivers/mfd") move the
    files, update the patterns.

    Signed-off-by: Joe Perches
    Cc: Arnd Bergmann
    Cc: Samuel Ortiz
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Commit d7104bffcfb7 ("[media] MAINTAINERS: add
    drivers/media/tuners/it913x*") used the incorrect file patterns. Fix
    it.

    Signed-off-by: Joe Perches
    Acked-by: Antti Palosaari
    Cc: Mauro Carvalho Chehab
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches