1. 23 Jun, 2011 40 commits
    • Mathias Krause's avatar
      exec: delay address limit change until point of no return · 651f1d21
      Mathias Krause authored
      commit dac853ae upstream.
      
      Unconditionally changing the address limit to USER_DS and not restoring
      it to its old value in the error path is wrong because it prevents us
      using kernel memory on repeated calls to this function.  This, in fact,
      breaks the fallback of hard coded paths to the init program from being
      ever successful if the first candidate fails to load.
      
      With this patch applied switching to USER_DS is delayed until the point
      of no return is reached which makes it possible to have a multi-arch
      rootfs with one arch specific init binary for each of the (hard coded)
      probed paths.
      
      Since the address limit is already set to USER_DS when start_thread()
      will be invoked, this redundancy can be safely removed.
      Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      
      651f1d21
    • Johannes Weiner's avatar
      xfs: properly account for reclaimed inodes · 7eae68f6
      Johannes Weiner authored
      commit 081003ff upstream.
      
      When marking an inode reclaimable, a per-AG counter is increased, the
      inode is tagged reclaimable in its per-AG tree, and, when this is the
      first reclaimable inode in the AG, the AG entry in the per-mount tree
      is also tagged.
      
      When an inode is finally reclaimed, however, it is only deleted from
      the per-AG tree.  Neither the counter is decreased, nor is the parent
      tree's AG entry untagged properly.
      
      Since the tags in the per-mount tree are not cleared, the inode
      shrinker iterates over all AGs that have had reclaimable inodes at one
      point in time.
      
      The counters on the other hand signal an increasing amount of slab
      objects to reclaim.  Since "70e60ce7 xfs: convert inode shrinker to
      per-filesystem context" this is not a real issue anymore because the
      shrinker bails out after one iteration.
      
      But the problem was observable on a machine running v2.6.34, where the
      reclaimable work increased and each process going into direct reclaim
      eventually got stuck on the xfs inode shrinking path, trying to scan
      several million objects.
      
      Fix this by properly unwinding the reclaimable-state tracking of an
      inode when it is reclaimed.
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      Backported-by: default avatarStefan Priebe <s.priebe@profihost.ag>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7eae68f6
    • Bjorn Helgaas's avatar
      ACPI: use _HID when supplied by root-level devices · bfbf76dc
      Bjorn Helgaas authored
      commit b7b30de5 upstream.
      
      Previously, we assumed the only Device object immediately below the root
      was the \_SB Scope (which the ACPI CA treats as a Device), so we forced
      the HID of all such objects to ACPI_BUS_HID ("LNXSYBUS").
      
      However, there are DSDTs that supply root-level Device objects with _HIDs.
      This patch makes us pay attention to those _HIDs and only add the synthetic
      ACPI_BUS_HID for root-level objects that do not supply their own _HID.
      
      For example, this DSDT: https://bugzilla.kernel.org/show_bug.cgi?id=15605
      contains:
      
          Scope (_SB) {
      	...
          }
          Device (AMW0) {
      	Name (_HID, EisaId ("PNP0C14"))
      	...
          }
      
      and we should use "PNP0C14" for the AMW0 device, not "LNXSYBUS".
      Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
      Acked-by: default avatarZhang Rui <rui.zhang@intel.com>
      Tested-by: default avatarYong Wang <yong.y.wang@intel.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      Tested-by: default avatarThomas Renninger <trenn@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      bfbf76dc
    • James Bottomley's avatar
      pata_cm64x: fix boot crash on parisc · 255e15a4
      James Bottomley authored
      commit 9281b16c upstream.
      
      The old IDE cmd64x checks the status of the CNTRL register to see if
      the ports are enabled before probing them.  pata_cmd64x doesn't do
      this, which causes a HPMC on parisc when it tries to poke at the
      secondary port because apparently the BAR isn't wired up (and a
      non-responding piece of memory causes a HPMC).
      
      Fix this by porting the CNTRL register port detection logic from IDE
      cmd64x.  In addition, following converns from Alan Cox, add a check to
      see if a mobility electronics bridge is the immediate parent and forgo
      the check if it is (prevents problems on hotplug controllers).
      Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      255e15a4
    • Bartlomiej Zolnierkiewicz's avatar
      pata_cmd64x: remove unused definitions · 3950dcf1
      Bartlomiej Zolnierkiewicz authored
      commit c754d9b6 upstream.
      
      s/ARTIM2/ARTTIM23/ in cmd648_bmdma_stop() while at it
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      3950dcf1
    • Bartlomiej Zolnierkiewicz's avatar
      pata_cmd64x: cmd648_bmdma_stop() fix · 554bd150
      Bartlomiej Zolnierkiewicz authored
      commit 03a849e6 upstream.
      
      Clear the primary channel pending interrupt bit
      instead of the reserved one.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      554bd150
    • Bartlomiej Zolnierkiewicz's avatar
      pata_cmd64x: fix PIO setup · ef83f5df
      Bartlomiej Zolnierkiewicz authored
      commit a2bd6220 upstream.
      
      Fix incorrect handling of recovery clocks value == 16 resulting
      in overclocked recovery timings & potentially underclocked active
      timings.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ef83f5df
    • Sergei Shtylyov's avatar
      ata: use pci_dev->revision · 26b6b318
      Sergei Shtylyov authored
      commit 89d3b360 upstream.
      
      Some places were using PCI_CLASS_REVISION instead of PCI_REVISION_ID, so
      they weren't converted by commit 44c10138
      (PCI: Change all drivers to use pci_device->revision).
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      26b6b318
    • Namhyung Kim's avatar
      md/raid5: fix FUA request handling in ops_run_io() · c0877c4b
      Namhyung Kim authored
      commit b062962e upstream.
      
      Commit e9c7469b ("md: implment REQ_FLUSH/FUA support")
      introduced R5_WantFUA flag and set rw to WRITE_FUA in that case.
      However remaining code still checks whether rw is exactly same
      as WRITE or not, so FUAed-write ends up with being treated as
      READ. Fix it.
      
      This bug has been present since 2.6.37 and the fix is suitable for any
      -stable kernel since then.  It is not clear why this has not caused
      more problems.
      
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: default avatarNamhyung Kim <namhyung@gmail.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c0877c4b
    • Namhyung Kim's avatar
      md/raid5: fix raid5_set_bi_hw_segments · 6f4976aa
      Namhyung Kim authored
      commit 9b2dc8b6 upstream.
      
      The @bio->bi_phys_segments consists of active stripes count in the
      lower 16 bits and processed stripes count in the upper 16 bits. So
      logical-OR operator should be bitwise one.
      
      This bug has been present since 2.6.27 and the fix is suitable for any
      -stable kernel since then.  Fortunately the bad code is only used on
      error paths and is relatively unlikely to be hit.
      Signed-off-by: default avatarNamhyung Kim <namhyung@gmail.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      6f4976aa
    • Namhyung Kim's avatar
      md: check ->hot_remove_disk when removing disk · 58d16045
      Namhyung Kim authored
      commit 01393f3d upstream.
      
      Check pers->hot_remove_disk instead of pers->hot_add_disk in slot_store()
      during disk removal. The linear personality only has ->hot_add_disk and
      no ->hot_remove_disk, so that removing disk in the array resulted to
      following kernel bug:
      
      $ sudo mdadm --create /dev/md0 --level=linear --raid-devices=4 /dev/loop[0-3]
      $ echo none | sudo tee /sys/block/md0/md/dev-loop2/slot
       BUG: unable to handle kernel NULL pointer dereference at           (null)
       IP: [<          (null)>]           (null)
       PGD c9f5d067 PUD 8575a067 PMD 0
       Oops: 0010 [#1] SMP
       CPU 2
       Modules linked in: linear loop bridge stp llc kvm_intel kvm asus_atk0110 sr_mod cdrom sg
      
       Pid: 10450, comm: tee Not tainted 3.0.0-rc1-leonard+ #173 System manufacturer System Product Name/P5G41TD-M PRO
       RIP: 0010:[<0000000000000000>]  [<          (null)>]           (null)
       RSP: 0018:ffff880085757df0  EFLAGS: 00010282
       RAX: ffffffffa00168e0 RBX: ffff8800d1431800 RCX: 000000000000006e
       RDX: 0000000000000001 RSI: 0000000000000002 RDI: ffff88008543c000
       RBP: ffff880085757e48 R08: 0000000000000002 R09: 000000000000000a
       R10: 0000000000000000 R11: ffff88008543c2e0 R12: 00000000ffffffff
       R13: ffff8800b4641000 R14: 0000000000000005 R15: 0000000000000000
       FS:  00007fe8c9e05700(0000) GS:ffff88011fa00000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
       CR2: 0000000000000000 CR3: 00000000b4502000 CR4: 00000000000406e0
       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
       Process tee (pid: 10450, threadinfo ffff880085756000, task ffff8800c9f08000)
       Stack:
        ffffffff8138496a ffff8800b4641000 ffff88008543c268 0000000000000000
        ffff8800b4641000 ffff88008543c000 ffff8800d1431868 ffffffff81a78a90
        ffff8800b4641000 ffff88008543c000 ffff8800d1431800 ffff880085757e98
       Call Trace:
        [<ffffffff8138496a>] ? slot_store+0xaa/0x265
        [<ffffffff81384bae>] rdev_attr_store+0x89/0xa8
        [<ffffffff8115a96a>] sysfs_write_file+0x108/0x144
        [<ffffffff81106b87>] vfs_write+0xb1/0x10d
        [<ffffffff8106e6c0>] ? trace_hardirqs_on_caller+0x111/0x135
        [<ffffffff81106cac>] sys_write+0x4d/0x77
        [<ffffffff814fe702>] system_call_fastpath+0x16/0x1b
       Code:  Bad RIP value.
       RIP  [<          (null)>]           (null)
        RSP <ffff880085757df0>
       CR2: 0000000000000000
       ---[ end trace ba5fc64319a826fb ]---
      Signed-off-by: default avatarNamhyung Kim <namhyung@gmail.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      58d16045
    • Dave Jones's avatar
      CPUFREQ: Remove cpufreq_stats sysfs entries on module unload. · 21dfd578
      Dave Jones authored
      commit 13f06753 upstream.
      
      cpufreq_stats leaves behind its sysfs entries, which causes a panic
      when something stumbled across them.
      (Discovered by unloading cpufreq_stats while powertop was loaded).
      Signed-off-by: default avatarDave Jones <davej@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      21dfd578
    • Robert Richter's avatar
      oprofile, dcookies: Fix possible circular locking dependency · e9a60e21
      Robert Richter authored
      commit fe47ae7f upstream.
      
      The lockdep warning below detects a possible A->B/B->A locking
      dependency of mm->mmap_sem and dcookie_mutex. The order in
      sync_buffer() is mm->mmap_sem/dcookie_mutex, while in
      sys_lookup_dcookie() it is vice versa.
      
      Fixing it in sys_lookup_dcookie() by unlocking dcookie_mutex before
      copy_to_user().
      
      oprofiled/4432 is trying to acquire lock:
       (&mm->mmap_sem){++++++}, at: [<ffffffff810b444b>] might_fault+0x53/0xa3
      
      but task is already holding lock:
       (dcookie_mutex){+.+.+.}, at: [<ffffffff81124d28>] sys_lookup_dcookie+0x45/0x149
      
      which lock already depends on the new lock.
      
      the existing dependency chain (in reverse order) is:
      
      -> #1 (dcookie_mutex){+.+.+.}:
             [<ffffffff8106557f>] lock_acquire+0xf8/0x11e
             [<ffffffff814634f0>] mutex_lock_nested+0x63/0x309
             [<ffffffff81124e5c>] get_dcookie+0x30/0x144
             [<ffffffffa0000fba>] sync_buffer+0x196/0x3ec [oprofile]
             [<ffffffffa0001226>] task_exit_notify+0x16/0x1a [oprofile]
             [<ffffffff81467b96>] notifier_call_chain+0x37/0x63
             [<ffffffff8105803d>] __blocking_notifier_call_chain+0x50/0x67
             [<ffffffff81058068>] blocking_notifier_call_chain+0x14/0x16
             [<ffffffff8105a718>] profile_task_exit+0x1a/0x1c
             [<ffffffff81039e8f>] do_exit+0x2a/0x6fc
             [<ffffffff8103a5e4>] do_group_exit+0x83/0xae
             [<ffffffff8103a626>] sys_exit_group+0x17/0x1b
             [<ffffffff8146ad4b>] system_call_fastpath+0x16/0x1b
      
      -> #0 (&mm->mmap_sem){++++++}:
             [<ffffffff81064dfb>] __lock_acquire+0x1085/0x1711
             [<ffffffff8106557f>] lock_acquire+0xf8/0x11e
             [<ffffffff810b4478>] might_fault+0x80/0xa3
             [<ffffffff81124de7>] sys_lookup_dcookie+0x104/0x149
             [<ffffffff8146ad4b>] system_call_fastpath+0x16/0x1b
      
      other info that might help us debug this:
      
      1 lock held by oprofiled/4432:
       #0:  (dcookie_mutex){+.+.+.}, at: [<ffffffff81124d28>] sys_lookup_dcookie+0x45/0x149
      
      stack backtrace:
      Pid: 4432, comm: oprofiled Not tainted 2.6.39-00008-ge5a450d #9
      Call Trace:
       [<ffffffff81063193>] print_circular_bug+0xae/0xbc
       [<ffffffff81064dfb>] __lock_acquire+0x1085/0x1711
       [<ffffffff8102ef13>] ? get_parent_ip+0x11/0x42
       [<ffffffff810b444b>] ? might_fault+0x53/0xa3
       [<ffffffff8106557f>] lock_acquire+0xf8/0x11e
       [<ffffffff810b444b>] ? might_fault+0x53/0xa3
       [<ffffffff810d7d54>] ? path_put+0x22/0x27
       [<ffffffff810b4478>] might_fault+0x80/0xa3
       [<ffffffff810b444b>] ? might_fault+0x53/0xa3
       [<ffffffff81124de7>] sys_lookup_dcookie+0x104/0x149
       [<ffffffff8146ad4b>] system_call_fastpath+0x16/0x1b
      
      References: https://bugzilla.kernel.org/show_bug.cgi?id=13809Signed-off-by: default avatarRobert Richter <robert.richter@amd.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      e9a60e21
    • Daniel T Chen's avatar
      ALSA: hda: Fix quirk for Dell Inspiron 910 · fdb1e4e9
      Daniel T Chen authored
      commit 0a1896b2 upstream.
      
      BugLink: https://launchpad.net/bugs/792712
      
      The original reporter states that sound from the internal speakers is
      inaudible until using the model=auto quirk. This symptom is due to an
      existing quirk mask for 0x102802b* that uses the model=dell quirk. To
      limit the possible regressions, leave the existing quirk mask but add
      a higher priority specific mask for the reporter's PCI SSID.
      
      Reported-and-tested-by: rodni hipp
      Signed-off-by: default avatarDaniel T Chen <crimsun@ubuntu.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      fdb1e4e9
    • Dmitry Torokhov's avatar
      USB: xhci - fix interval calculation for FS isoc endpoints · e103cc4d
      Dmitry Torokhov authored
      commit cd3c18ba upstream.
      
      Full-speed isoc endpoints specify interval in exponent based form in
      frames, not microframes, so we need to adjust accordingly.
      
      NEC xHCI host controllers will return an error code of 0x11 if a full
      speed isochronous endpoint is added with the Interval field set to
      something less than 3 (2^3 = 8 microframes, or one frame).  It is
      impossible for a full speed device to have an interval smaller than one
      frame.
      
      This was always an issue in the xHCI driver, but commit
      dfa49c4a "USB: xhci - fix math in
      xhci_get_endpoint_interval()" removed the clamping of the minimum value
      in the Interval field, which revealed this bug.
      
      This needs to be backported to stable kernels back to 2.6.31.
      Reported-by: default avatarMatt Evans <matt@ozlabs.org>
      Signed-off-by: default avatarDmitry Torokhov <dtor@vmware.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      e103cc4d
    • Steffen Sledz's avatar
      USB: serial: add another 4N-GALAXY.DE PID to ftdi_sio driver · 68fdcd2a
      Steffen Sledz authored
      commit a26d31ce upstream.
      
      E.g. newer CAN 2.0 A/B <=> USB 2.0 converters report idProduct=f3c2.
      Signed-off-by: default avatarSteffen Sledz <sledz@dresearch-fe.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      68fdcd2a
    • Libor Pechacek's avatar
      USB: core: Tolerate protocol stall during hub and port status read · 5fe935a2
      Libor Pechacek authored
      commit 3824c1dd upstream.
      
      Protocol stall should not be fatal while reading port or hub status as it is
      transient state.  Currently hub EP0 STALL during port status read results in
      failed device enumeration.  This has been observed with ST-Ericsson (formerly
      Philips) USB 2.0 Hub (04cc:1521) after connecting keyboard.
      Signed-off-by: default avatarLibor Pechacek <lpechacek@suse.cz>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      5fe935a2
    • Toby Gray's avatar
      USB: cdc-acm: Adding second ACM channel support for Nokia E7 and C7 · 5b7dafb2
      Toby Gray authored
      commit 4061fde2 upstream.
      
      This adds the Nokia E7 and C7 to the list of devices in cdc-acm, allowing
      the secondary ACM channel on the device to be exposed. Without this patch
      the ACM driver won't claim this secondary channel as it's marked as
      having a vendor-specific protocol.
      Signed-off-by: default avatarToby Gray <toby.gray@realvnc.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      5b7dafb2
    • Joerg Roedel's avatar
      x86/amd-iommu: Fix 3 possible endless loops · c3280cec
      Joerg Roedel authored
      commit 0de66d5b upstream.
      
      The driver contains several loops counting on an u16 value
      where the exit-condition is checked against variables that
      can have values up to 0xffff. In this case the loops will
      never exit. This patch fixed 3 such loops.
      Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c3280cec
    • Dan Carpenter's avatar
      xen: off by one errors in multicalls.c · d11e39e4
      Dan Carpenter authored
      commit f124c6ae upstream.
      
      b->args[] has MC_ARGS elements, so the comparison here should be
      ">=" instead of ">".  Otherwise we read past the end of the array
      one space.
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d11e39e4
    • OGAWA Hirofumi's avatar
      fat: Fix corrupt inode flags when remove ATTR_SYS flag · 75013df1
      OGAWA Hirofumi authored
      commit 1adffbae upstream.
      
      We are clearly missing '~' in fat_ioctl_set_attributes().
      Reported-by: default avatarDmitry Dmitriev <dimondmm@yandex.ru>
      Signed-off-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      75013df1
    • Daniel Haid's avatar
      drm/radeon/kms: fix for radeon on systems >4GB without hardware iommu · 7afcf472
      Daniel Haid authored
      commit 62fff811 upstream.
      
      On my x86_64 system with >4GB of ram and swiotlb instead of
      a hardware iommu (because I have a VIA chipset), the call
      to pci_set_dma_mask (see below) with 40bits returns an error.
      
      But it seems that the radeon driver is designed to have
      need_dma32 = true exactly if pci_set_dma_mask is called
      with 32 bits and false if it is called with 40 bits.
      
      I have read somewhere that the default are 32 bits. So if the
      call fails I suppose that need_dma32 should be set to true.
      
      And indeed the patch fixes the problem I have had before
      and which I had described here:
      http://choon.net/forum/read.php?21,106131,115940Acked-by: default avatarAlex Deucher <alexdeucher@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7afcf472
    • Hans de Goede's avatar
      drm/i915: Add a no lvds quirk for the Asus EeeBox PC EB1007 · 6f478b78
      Hans de Goede authored
      commit 6a574b5b upstream.
      
      I found this while figuring out why gnome-shell would not run on my
      Asus EeeBox PC EB1007. As a standalone "pc" this device cleary does not have
      an internal panel, yet it claims it does. Add a quirk to fix this.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Reviewed-by: default avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      6f478b78
    • Peter Zijlstra's avatar
      lockdep: Fix lock_is_held() on recursion · eef1d4dd
      Peter Zijlstra authored
      commit f2513cde upstream.
      
      The main lock_is_held() user is lockdep_assert_held(), avoid false
      assertions in lockdep_off() sections by unconditionally reporting the
      lock is taken.
      
      [ the reason this is important is a lockdep_assert_held() in ttwu()
        which triggers a warning under lockdep_off() as in printk() which
        can trigger another wakeup and lock up due to spinlock
        recursion, as reported and heroically debugged by Arne Jansen ]
      Reported-and-tested-by: default avatarArne Jansen <lists@die-jansens.de>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1307398759.2497.966.camel@laptopSigned-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      eef1d4dd
    • Luciano Coelho's avatar
      nl80211: fix check for valid SSID size in scan operations · 946ea1c9
      Luciano Coelho authored
      commit 208c72f4 upstream.
      
      In both trigger_scan and sched_scan operations, we were checking for
      the SSID length before assigning the value correctly.  Since the
      memory was just kzalloc'ed, the check was always failing and SSID with
      over 32 characters were allowed to go through.
      
      This was causing a buffer overflow when copying the actual SSID to the
      proper place.
      
      This bug has been there since 2.6.29-rc4.
      Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      
      946ea1c9
    • Jordan_Hargrave@Dell.com's avatar
      PCI: Set PCIE maxpayload for card during hotplug insertion · 2d3b027d
      Jordan_Hargrave@Dell.com authored
      commit e522a712 upstream.
      
      The following patch sets the MaxPayload setting to match the parent
      reading when inserting a PCIE card into a hotplug slot.  On our system,
      the upstream bridge is set to 256, but when inserting a card, the card
      setting defaults to 128.  As soon as I/O is performed to the card it
      starts receiving errors since the payload size is too small.
      Reviewed-by: default avatarKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: default avatarJordan Hargrave <jordan_hargrave@dell.com>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      2d3b027d
    • Hugh Dickins's avatar
      mm: fix ENOSPC returned by handle_mm_fault() · 263b8d5b
      Hugh Dickins authored
      commit e0dcd8a0 upstream.
      
      Al Viro observes that in the hugetlb case, handle_mm_fault() may return
      a value of the kind ENOSPC when its caller is expecting a value of the
      kind VM_FAULT_SIGBUS: fix alloc_huge_page()'s failure returns.
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      263b8d5b
    • James Bottomley's avatar
      Fix oops caused by queue refcounting failure · 8354a9e0
      James Bottomley authored
      commit e73e079b upstream.
      
      In certain circumstances, we can get an oops from a torn down device.
      Most notably this is from CD roms trying to call scsi_ioctl.  The root
      cause of the problem is the fact that after scsi_remove_device() has
      been called, the queue is fully torn down.  This is actually wrong
      since the queue can be used until the sdev release function is called.
      Therefore, we add an extra reference to the queue which is released in
      sdev->release, so the queue always exists.
      Reported-by: default avatarParag Warudkar <parag.lkml@gmail.com>
      Signed-off-by: default avatarJames Bottomley <jbottomley@parallels.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8354a9e0
    • Jens Axboe's avatar
      block: export blk_{get,put}_queue() · d1e0c2ef
      Jens Axboe authored
      commit d86e0e83 upstream.
      
      We need them in SCSI to fix a bug, but currently they are not
      exported to modules. Export them.
      Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d1e0c2ef
    • Namhyung Kim's avatar
      nbd: limit module parameters to a sane value · 6091e057
      Namhyung Kim authored
      commit 3b271082 upstream.
      
      The 'max_part' parameter controls the number of maximum partition
      a nbd device can have. However if a user specifies very large
      value it would exceed the limitation of device minor number and
      can cause a kernel oops (or, at least, produce invalid device
      nodes in some cases).
      
      In addition, specifying large 'nbds_max' value causes same
      problem for the same reason.
      
      On my desktop, following command results to the kernel bug:
      
      $ sudo modprobe nbd max_part=100000
       kernel BUG at /media/Linux_Data/project/linux/fs/sysfs/group.c:65!
       invalid opcode: 0000 [#1] SMP
       last sysfs file: /sys/devices/virtual/block/nbd4/range
       CPU 1
       Modules linked in: nbd(+) bridge stp llc kvm_intel kvm asus_atk0110 sg sr_mod cdrom
      
       Pid: 2522, comm: modprobe Tainted: G        W   2.6.39-leonard+ #159 System manufacturer System Product Name/P5G41TD-M PRO
       RIP: 0010:[<ffffffff8115aa08>]  [<ffffffff8115aa08>] internal_create_group+0x2f/0x166
       RSP: 0018:ffff8801009f1de8  EFLAGS: 00010246
       RAX: 00000000ffffffef RBX: ffff880103920478 RCX: 00000000000a7bd3
       RDX: ffffffff81a2dbe0 RSI: 0000000000000000 RDI: ffff880103920478
       RBP: ffff8801009f1e38 R08: ffff880103920468 R09: ffff880103920478
       R10: ffff8801009f1de8 R11: ffff88011eccbb68 R12: ffffffff81a2dbe0
       R13: ffff880103920468 R14: 0000000000000000 R15: ffff880103920400
       FS:  00007f3c49de9700(0000) GS:ffff88011f800000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
       CR2: 00007f3b7fe7c000 CR3: 00000000cd58d000 CR4: 00000000000406e0
       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
       Process modprobe (pid: 2522, threadinfo ffff8801009f0000, task ffff8801009a93a0)
       Stack:
        ffff8801009f1e58 ffffffff812e8f6e ffff8801009f1e58 ffffffff812e7a80
        ffff880000000010 ffff880103920400 ffff8801002fd0c0 ffff880103920468
        0000000000000011 ffff880103920400 ffff8801009f1e48 ffffffff8115ab6a
       Call Trace:
        [<ffffffff812e8f6e>] ? device_add+0x4f1/0x5e4
        [<ffffffff812e7a80>] ? dev_set_name+0x41/0x43
        [<ffffffff8115ab6a>] sysfs_create_group+0x13/0x15
        [<ffffffff810b857e>] blk_trace_init_sysfs+0x14/0x16
        [<ffffffff811ee58b>] blk_register_queue+0x4c/0xfd
        [<ffffffff811f3bdf>] add_disk+0xe4/0x29c
        [<ffffffffa007e2ab>] nbd_init+0x2ab/0x30d [nbd]
        [<ffffffffa007e000>] ? 0xffffffffa007dfff
        [<ffffffff8100020f>] do_one_initcall+0x7f/0x13e
        [<ffffffff8107ab0a>] sys_init_module+0xa1/0x1e3
        [<ffffffff814f3542>] system_call_fastpath+0x16/0x1b
       Code: 41 57 41 56 41 55 41 54 53 48 83 ec 28 0f 1f 44 00 00 48 89 fb 41 89 f6 49 89 d4 48 85 ff 74 0b 85 f6 75 0b 48 83
        7f 30 00 75 14 <0f> 0b eb fe b9 ea ff ff ff 48 83 7f 30 00 0f 84 09 01 00 00 49
       RIP  [<ffffffff8115aa08>] internal_create_group+0x2f/0x166
        RSP <ffff8801009f1de8>
       ---[ end trace 753285ffbf72c57c ]---
      Signed-off-by: default avatarNamhyung Kim <namhyung@gmail.com>
      Cc: Laurent Vivier <Laurent.Vivier@bull.net>
      Cc: Paul Clements <Paul.Clements@steeleye.com>
      Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      6091e057
    • Artem Bityutskiy's avatar
      UBIFS: fix memory leak on error path · 8d9ba4b8
      Artem Bityutskiy authored
      commit 812eb258 upstream.
      
      UBIFS leaks memory on error path in 'ubifs_jnl_update()' in case of write
      failure because it forgets to free the 'struct ubifs_dent_node *dent' object.
      Although the object is small, the alignment can make it large - e.g., 2KiB
      if the min. I/O unit is 2KiB.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8d9ba4b8
    • Artem Bityutskiy's avatar
      UBIFS: fix shrinker object count reports · 439aa7df
      Artem Bityutskiy authored
      commit cf610bf4 upstream.
      
      Sometimes VM asks the shrinker to return amount of objects it can shrink,
      and we return the ubifs_clean_zn_cnt in that case. However, it is possible
      that this counter is negative for a short period of time, due to the way
      UBIFS TNC code updates it. And I can observe the following warnings sometimes:
      
      shrink_slab: ubifs_shrinker+0x0/0x2b7 [ubifs] negative objects to delete nr=-8541616642706119788
      
      This patch makes sure UBIFS never returns negative count of objects.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      439aa7df
    • Alan Stern's avatar
      fix duplicate removal on error path in scsi_sysfs_add_sdev · 8b75b318
      Alan Stern authored
      commit ee37e09d upstream.
      
      This patch (as1335) fixes a bug in scsi_sysfs_add_sdev().  Its callers
      always remove the device if anything goes wrong, so it should never
      remove the device.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
      Cc: Hannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8b75b318
    • Alan Stern's avatar
      fix refcounting bug in scsi_get_host_dev · 6e3a4045
      Alan Stern authored
      commit d5469119 upstream.
      
      This patch (as1334) fixes a bug in scsi_get_host_dev().  It
      incorrectly calls get_device() on the new device's target.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
      Cc: Hannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      6e3a4045
    • Alan Stern's avatar
      fix memory leak in scsi_report_lun_scan · 3c08ee48
      Alan Stern authored
      commit 75f8ee8e upstream.
      
      This patch (as1333) fixes a bug in scsi_report_lun_scan().  If a
      newly-allocated device can't be used, it should be deleted.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
      Cc: Hannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      3c08ee48
    • Patrick McHardy's avatar
      netfilter: nf_conntrack_reasm: properly handle packets fragmented into a single fragment · 0a4f14ec
      Patrick McHardy authored
      commit 9e2dcf72 upstream.
      
      When an ICMPV6_PKT_TOOBIG message is received with a MTU below 1280,
      all further packets include a fragment header.
      
      Unlike regular defragmentation, conntrack also needs to "reassemble"
      those fragments in order to obtain a packet without the fragment
      header for connection tracking. Currently nf_conntrack_reasm checks
      whether a fragment has either IP6_MF set or an offset != 0, which
      makes it ignore those fragments.
      
      Remove the invalid check and make reassembly handle fragment queues
      containing only a single fragment.
      Reported-and-tested-by: default avatarUlrich Weber <uweber@astaro.com>
      Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0a4f14ec
    • Tian, Kevin's avatar
      xen mmu: fix a race window causing leave_mm BUG() · 35fd0fde
      Tian, Kevin authored
      commit 7899891c upstream.
      
      There's a race window in xen_drop_mm_ref, where remote cpu may exit
      dirty bitmap between the check on this cpu and the point where remote
      cpu handles drop request. So in drop_other_mm_ref we need check
      whether TLB state is still lazy before calling into leave_mm. This
      bug is rarely observed in earlier kernel, but exaggerated by the
      commit 831d52bc
      ("x86, mm: avoid possible bogus tlb entries by clearing prev mm_cpumask after switching mm")
      which clears bitmap after changing the TLB state. the call trace is as below:
      
      ---------------------------------
      kernel BUG at arch/x86/mm/tlb.c:61!
      invalid opcode: 0000 [#1] SMP
      last sysfs file: /sys/devices/system/xen_memory/xen_memory0/info/current_kb
      CPU 1
      Modules linked in: 8021q garp xen_netback xen_blkback blktap blkback_pagemap nbd bridge stp llc autofs4 ipmi_devintf ipmi_si ipmi_msghandler lockd sunrpc bonding ipv6 xenfs dm_multipath video output sbs sbshc parport_pc lp parport ses enclosure snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device serio_raw bnx2 snd_pcm_oss snd_mixer_oss snd_pcm snd_timer iTCO_wdt snd soundcore snd_page_alloc i2c_i801 iTCO_vendor_support i2c_core pcs pkr pata_acpi ata_generic ata_piix shpchp mptsas mptscsih mptbase [last unloaded: freq_table]
      Pid: 25581, comm: khelper Not tainted 2.6.32.36fixxen #1 Tecal RH2285
      RIP: e030:[<ffffffff8103a3cb>]  [<ffffffff8103a3cb>] leave_mm+0x15/0x46
      RSP: e02b:ffff88002805be48  EFLAGS: 00010046
      RAX: 0000000000000000 RBX: 0000000000000001 RCX: ffff88015f8e2da0
      RDX: ffff88002805be78 RSI: 0000000000000000 RDI: 0000000000000001
      RBP: ffff88002805be48 R08: ffff88009d662000 R09: dead000000200200
      R10: dead000000100100 R11: ffffffff814472b2 R12: ffff88009bfc1880
      R13: ffff880028063020 R14: 00000000000004f6 R15: 0000000000000000
      FS:  00007f62362d66e0(0000) GS:ffff880028058000(0000) knlGS:0000000000000000
      CS:  e033 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000003aabc11909 CR3: 000000009b8ca000 CR4: 0000000000002660
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 00000000000000 00
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process khelper (pid: 25581, threadinfo ffff88007691e000, task ffff88009b92db40)
      Stack:
       ffff88002805be68 ffffffff8100e4ae 0000000000000001 ffff88009d733b88
      <0> ffff88002805be98 ffffffff81087224 ffff88002805be78 ffff88002805be78
      <0> ffff88015f808360 00000000000004f6 ffff88002805bea8 ffffffff81010108
      Call Trace:
       <IRQ>
       [<ffffffff8100e4ae>] drop_other_mm_ref+0x2a/0x53
       [<ffffffff81087224>] generic_smp_call_function_single_interrupt+0xd8/0xfc
       [<ffffffff81010108>] xen_call_function_single_interrupt+0x13/0x28
       [<ffffffff810a936a>] handle_IRQ_event+0x66/0x120
       [<ffffffff810aac5b>] handle_percpu_irq+0x41/0x6e
       [<ffffffff8128c1c0>] __xen_evtchn_do_upcall+0x1ab/0x27d
       [<ffffffff8128dd11>] xen_evtchn_do_upcall+0x33/0x46
       [<ffffffff81013efe>] xen_do_hyper visor_callback+0x1e/0x30
       <EOI>
       [<ffffffff814472b2>] ? _spin_unlock_irqrestore+0x15/0x17
       [<ffffffff8100f8cf>] ? xen_restore_fl_direct_end+0x0/0x1
       [<ffffffff81113f71>] ? flush_old_exec+0x3ac/0x500
       [<ffffffff81150dc5>] ? load_elf_binary+0x0/0x17ef
       [<ffffffff81150dc5>] ? load_elf_binary+0x0/0x17ef
       [<ffffffff8115115d>] ? load_elf_binary+0x398/0x17ef
       [<ffffffff81042fcf>] ? need_resched+0x23/0x2d
       [<ffffffff811f4648>] ? process_measurement+0xc0/0xd7
       [<ffffffff81150dc5>] ? load_elf_binary+0x0/0x17ef
       [<ffffffff81113094>] ? search_binary_handler+0xc8/0x255
       [<ffffffff81114362>] ? do_execve+0x1c3/0x29e
       [<ffffffff8101155d>] ? sys_execve+0x43/0x5d
       [<ffffffff8106fc45>] ? __call_usermodehelper+0x0/0x6f
       [<ffffffff81013e28>] ? kernel_execve+0x68/0xd0
       [<ffffffff 8106fc45>] ? __call_usermodehelper+0x0/0x6f
       [<ffffffff8100f8cf>] ? xen_restore_fl_direct_end+0x0/0x1
       [<ffffffff8106fb64>] ? ____call_usermodehelper+0x113/0x11e
       [<ffffffff81013daa>] ? child_rip+0xa/0x20
       [<ffffffff8106fc45>] ? __call_usermodehelper+0x0/0x6f
       [<ffffffff81012f91>] ? int_ret_from_sys_call+0x7/0x1b
       [<ffffffff8101371d>] ? retint_restore_args+0x5/0x6
       [<ffffffff81013da0>] ? child_rip+0x0/0x20
      Code: 41 5e 41 5f c9 c3 55 48 89 e5 0f 1f 44 00 00 e8 17 ff ff ff c9 c3 55 48 89 e5 0f 1f 44 00 00 65 8b 04 25 c8 55 01 00 ff c8 75 04 <0f> 0b eb fe 65 48 8b 34 25 c0 55 01 00 48 81 c6 b8 02 00 00 e8
      RIP  [<ffffffff8103a3cb>] leave_mm+0x15/0x46
       RSP <ffff88002805be48>
      ---[ end trace ce9cee6832a9c503 ]---
      
      Tested-by: Maoxiaoyun<tinnycloud@hotmail.com>
      Signed-off-by: default avatarKevin Tian <kevin.tian@intel.com>
      [v1: Fleshed out the git description a bit]
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      35fd0fde
    • Hemant Pedanekar's avatar
      PCI: Add quirk for setting valid class for TI816X Endpoint · 41524e92
      Hemant Pedanekar authored
      commit 63c44080 upstream.
      
      TI816X (common name for DM816x/C6A816x/AM389x family) devices configured
      to boot as PCIe Endpoint have class code = 0. This makes kernel PCI bus
      code to skip allocating BARs to these devices resulting into following
      type of error when trying to enable them:
      
      "Device 0000:01:00.0 not available because of resource collisions"
      
      The device cannot be operated because of the above issue.
      
      This patch adds a ID specific (TI VENDOR ID and 816X DEVICE ID based)
      'early' fixup quirk to replace class code with
      PCI_CLASS_MULTIMEDIA_VIDEO as class.
      Signed-off-by: default avatarHemant Pedanekar <hemantp@ti.com>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      41524e92
    • Trond Myklebust's avatar
      SUNRPC: Deal with the lack of a SYN_SENT sk->sk_state_change callback... · 62a5c721
      Trond Myklebust authored
      commit fe19a96b upstream.
      
      The TCP connection state code depends on the state_change() callback
      being called when the SYN_SENT state is set. However the networking layer
      doesn't actually call us back in that case.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      62a5c721
    • Namhyung Kim's avatar
      brd: handle on-demand devices correctly · 33a5ae1c
      Namhyung Kim authored
      commit af465668 upstream.
      
      When finding or allocating a ram disk device, brd_probe() did not take
      partition numbers into account so that it can result to a different
      device. Consider following example (I set CONFIG_BLK_DEV_RAM_COUNT=4
      for simplicity) :
      
      $ sudo modprobe brd max_part=15
      $ ls -l /dev/ram*
      brw-rw---- 1 root disk 1,  0 2011-05-25 15:41 /dev/ram0
      brw-rw---- 1 root disk 1, 16 2011-05-25 15:41 /dev/ram1
      brw-rw---- 1 root disk 1, 32 2011-05-25 15:41 /dev/ram2
      brw-rw---- 1 root disk 1, 48 2011-05-25 15:41 /dev/ram3
      $ sudo mknod /dev/ram4 b 1 64
      $ sudo dd if=/dev/zero of=/dev/ram4 bs=4k count=256
      256+0 records in
      256+0 records out
      1048576 bytes (1.0 MB) copied, 0.00215578 s, 486 MB/s
      namhyung@leonhard:linux$ ls -l /dev/ram*
      brw-rw---- 1 root disk 1,    0 2011-05-25 15:41 /dev/ram0
      brw-rw---- 1 root disk 1,   16 2011-05-25 15:41 /dev/ram1
      brw-rw---- 1 root disk 1,   32 2011-05-25 15:41 /dev/ram2
      brw-rw---- 1 root disk 1,   48 2011-05-25 15:41 /dev/ram3
      brw-r--r-- 1 root root 1,   64 2011-05-25 15:45 /dev/ram4
      brw-rw---- 1 root disk 1, 1024 2011-05-25 15:44 /dev/ram64
      
      After this patch, /dev/ram4 - instead of /dev/ram64 - was
      accessed correctly.
      
      In addition, 'range' passed to blk_register_region() should
      include all range of dev_t that RAMDISK_MAJOR can address.
      It does not need to be limited by partition numbers unless
      'rd_nr' param was specified.
      Signed-off-by: default avatarNamhyung Kim <namhyung@gmail.com>
      Cc: Laurent Vivier <Laurent.Vivier@bull.net>
      Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      33a5ae1c