Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1205859 > unrolled thread

[3.16.y-ckt stable] Linux 3.16.7-ckt16 stable review

Started byLuis Henriques <luis.henriques@canonical.com>
First post2015-08-12 11:50 +0200
Last post2015-08-12 11:50 +0200
Articles 9 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [3.16.y-ckt stable] Linux 3.16.7-ckt16 stable review Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200
    [PATCH 3.16.y-ckt 008/118] ext4: correctly migrate a file with a hole at the beginning Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200
    [PATCH 3.16.y-ckt 007/118] ext4: be more strict when migrating to non-extent based file Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200
    [PATCH 3.16.y-ckt 011/118] drm/radeon: unpin cursor BOs on suspend and pin them again on resume (v2) Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200
    [PATCH 3.16.y-ckt 004/118] Btrfs: fix race between caching kthread and returning inode to inode cache Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200
    [PATCH 3.16.y-ckt 026/118] ARC: Override toplevel default -O2 with -O3 Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200
    [PATCH 3.16.y-ckt 001/118] netfilter: nfnetlink_cthelper: Remove 'const' and '&' to avoid warnings Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200
    [PATCH 3.16.y-ckt 009/118] ext4: replace open coded nofail allocation in ext4_free_blocks() Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200
    [PATCH 3.16.y-ckt 014/118] 9p: don't leave a half-initialized inode sitting around Luis Henriques <luis.henriques@canonical.com> - 2015-08-12 11:50 +0200

#1205859 — [3.16.y-ckt stable] Linux 3.16.7-ckt16 stable review

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[3.16.y-ckt stable] Linux 3.16.7-ckt16 stable review
Message-ID<pWA37-7Qw-9@gated-at.bofh.it>
This is the start of the review cycle for the Linux 3.16.7-ckt16 stable kernel.

This version contains 118 new patches, summarized below.  The new patches are
posted as replies to this message and also available in this git branch:

http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.16.y-review

git://kernel.ubuntu.com/ubuntu/linux.git  linux-3.16.y-review

The review period for version 3.16.7-ckt16 will be open for the next three days.
To report a problem, please reply to the relevant follow-up patch message.

For more information about the Linux 3.16.y-ckt extended stable kernel version,
see https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable .

 -Luis

--
 .../devicetree/bindings/spi/spi_pl022.txt          |   2 +-
 Documentation/kbuild/makefiles.txt                 |   8 +
 Makefile                                           |   9 +-
 arch/arc/Makefile                                  |   3 +-
 arch/arc/include/asm/ptrace.h                      |   2 +-
 arch/arm/boot/dts/imx23.dtsi                       |   1 +
 arch/arm/mm/dma-mapping.c                          |   2 +-
 arch/mips/kernel/traps.c                           |   8 +-
 arch/s390/kernel/process.c                         |   2 +-
 arch/s390/kernel/sclp.S                            |   4 +
 arch/tile/kernel/setup.c                           |   2 +-
 arch/x86/kernel/entry_64.S                         | 324 +++++++++++++-------
 arch/x86/kernel/nmi.c                              | 123 ++++----
 block/bio-integrity.c                              |   4 +-
 block/bio.c                                        |  15 +-
 block/blk-cgroup.c                                 |   6 +-
 drivers/ata/libata-core.c                          |  11 +-
 drivers/ata/libata-pmp.c                           |   7 +
 drivers/ata/libata-scsi.c                          |   3 +-
 drivers/bluetooth/ath3k.c                          |   2 +
 drivers/bluetooth/btusb.c                          |   1 +
 drivers/crypto/omap-des.c                          |   3 -
 drivers/gpu/drm/drm_crtc.c                         |   7 +-
 drivers/gpu/drm/i915/intel_uncore.c                |  26 +-
 drivers/gpu/drm/radeon/cik.c                       | 264 ++++++++++-------
 drivers/gpu/drm/radeon/evergreen.c                 | 326 ++++++++++++---------
 drivers/gpu/drm/radeon/r600.c                      | 155 +++++-----
 drivers/gpu/drm/radeon/radeon_device.c             |  34 ++-
 drivers/gpu/drm/radeon/radeon_gart.c               |  12 +-
 drivers/gpu/drm/radeon/si.c                        | 264 ++++++++++-------
 drivers/gpu/drm/radeon/si_dpm.c                    |   1 +
 drivers/hid/hid-cp2112.c                           |   2 +
 drivers/iio/adc/at91_adc.c                         |   8 +-
 drivers/iio/adc/twl4030-madc.c                     |   3 +-
 drivers/iio/adc/vf610_adc.c                        |   2 +-
 drivers/iio/dac/ad5624r_spi.c                      |   4 +-
 drivers/iio/imu/inv_mpu6050/inv_mpu_core.c         |  18 ++
 drivers/iio/temperature/tmp006.c                   |   3 +
 drivers/input/touchscreen/usbtouchscreen.c         |   3 +
 drivers/isdn/gigaset/ser-gigaset.c                 |  11 +-
 drivers/md/md.c                                    |   2 +-
 drivers/md/persistent-data/dm-btree-remove.c       |   6 +-
 drivers/md/persistent-data/dm-btree.c              |   2 +-
 drivers/md/raid1.c                                 |   2 +-
 drivers/mmc/card/block.c                           |   2 +
 drivers/mmc/host/omap_hsmmc.c                      |   8 +-
 drivers/mmc/host/sdhci-esdhc.h                     |   2 +-
 drivers/mmc/host/sdhci-of-esdhc.c                  |  10 +-
 drivers/mmc/host/sdhci-pxav3.c                     |   1 +
 drivers/net/bonding/bond_main.c                    |  14 +-
 drivers/net/can/rcar_can.c                         |   7 +-
 drivers/net/can/spi/mcp251x.c                      |  13 +-
 drivers/net/ethernet/marvell/mvneta.c              |  22 +-
 drivers/net/ethernet/ti/cpsw.c                     |   6 +-
 drivers/net/xen-netback/netback.c                  |   6 +-
 drivers/scsi/sg.c                                  |   3 +
 drivers/scsi/st.c                                  |   2 +-
 drivers/thermal/step_wise.c                        |   2 +-
 drivers/usb/core/devio.c                           |  63 ++--
 drivers/usb/core/hcd.c                             |   7 +-
 drivers/usb/core/hub.c                             |   2 +-
 drivers/usb/core/usb.h                             |   1 +
 drivers/usb/dwc3/ep0.c                             |   4 +
 drivers/usb/dwc3/gadget.c                          |   2 +
 drivers/usb/gadget/f_mass_storage.c                |  16 +-
 drivers/usb/gadget/mv_udc_core.c                   |   2 +-
 drivers/usb/host/ohci-q.c                          |   7 +-
 drivers/usb/host/xhci-hub.c                        |  22 +-
 drivers/usb/host/xhci-mem.c                        |   2 +-
 drivers/usb/host/xhci-ring.c                       |   3 +
 drivers/usb/host/xhci.c                            |   3 +
 drivers/usb/host/xhci.h                            |   1 +
 drivers/usb/musb/musb_virthub.c                    |   4 +-
 drivers/usb/serial/cp210x.c                        |   1 +
 drivers/usb/serial/option.c                        |   1 +
 drivers/usb/serial/usb-serial.c                    |   1 +
 drivers/usb/storage/unusual_devs.h                 |  12 +
 fs/9p/vfs_inode.c                                  |   3 +-
 fs/9p/vfs_inode_dotl.c                             |   3 +-
 fs/btrfs/inode-map.c                               |  17 +-
 fs/btrfs/ioctl.c                                   |  18 +-
 fs/btrfs/transaction.c                             |   4 +-
 fs/btrfs/tree-log.c                                |  14 +-
 fs/dcache.c                                        |   3 +
 fs/ext4/inode.c                                    |  15 +-
 fs/ext4/mballoc.c                                  |  16 +-
 fs/ext4/migrate.c                                  |  17 +-
 fs/hpfs/super.c                                    |  18 +-
 include/linux/libata.h                             |   2 +
 include/linux/mtd/nand.h                           |  10 +-
 include/uapi/drm/i915_drm.h                        |   8 +
 include/uapi/linux/usbdevice_fs.h                  |   3 +-
 kernel/irq/resend.c                                |  18 +-
 kernel/trace/trace.h                               |   1 +
 kernel/trace/trace_branch.c                        |  17 +-
 mm/memory.c                                        |  14 +-
 net/bridge/br_mdb.c                                |   6 +-
 net/core/dev.c                                     |   9 +-
 net/dsa/dsa.c                                      |   6 +-
 net/ipv4/ip_fragment.c                             |   7 +-
 net/ipv4/ip_tunnel.c                               |   8 +-
 net/ipv6/ip6_input.c                               |   6 +-
 net/mac80211/debugfs_netdev.c                      |   1 +
 net/netfilter/nfnetlink_cthelper.c                 |   4 +-
 net/rds/ib_rdma.c                                  |   4 +-
 security/integrity/evm/evm_main.c                  |  12 +
 security/keys/keyring.c                            |   8 +-
 sound/pci/hda/patch_hdmi.c                         |   2 +
 sound/usb/quirks-table.h                           |  68 +++++
 tools/perf/ui/browsers/hists.c                     |   2 +-
 tools/perf/util/symbol.c                           |   2 +
 tools/perf/util/symbol.h                           |   3 +-
 112 files changed, 1444 insertions(+), 854 deletions(-)

AMAN DEEP (1):
      usb: xhci: Bugfix for NULL pointer deference in xhci_endpoint_init() function

Aaron Plattner (1):
      ALSA: hda - Add new GPU codec ID 0x10de007d to snd-hda

Adriana Reus (1):
      iio: inv-mpu: Specify the expected format/precision for write channels

Al Viro (3):
      9p: don't leave a half-initialized inode sitting around
      sg_start_req(): make sure that there's not too many elements in iovec
      freeing unlinked file indefinitely delayed

Alan Stern (2):
      USB: usbfs: allow URBs to be reaped after disconnection
      USB: OHCI: Fix race between ED unlink and URB submission

Aleksei Mamlin (1):
      libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for HP 250GB SATA disk VB0250EAVER

Alessio Igor Bogani (1):
      mmc: sdhci: Fix FSL ESDHC reset handling quirk

Alex Deucher (1):
      drm/radeon: add a dpm quirk for Sapphire Radeon R9 270X 2GB GDDR5

Alexey Brodkin (1):
      ARC: make sure instruction_pointer() returns unsigned value

Alexey Khoroshilov (1):
      usb: gadget: mv_udc_core: fix phy_regs I/O memory leak

Andy Lutomirski (6):
      x86/nmi: Enable nested do_nmi() handling for 64-bit kernels
      x86/nmi/64: Remove asm code that saves CR2
      x86/nmi/64: Switch stacks on userspace NMI entry
      x86/nmi/64: Improve nested NMI comments
      x86/nmi/64: Reorder nested NMI checks
      x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI detection

Angga (1):
      ipv6: Make MLD packets to only be processed locally

Antonio Borneo (1):
      HID: cp2112: fix to force single data-report reply

Arnaldo Carvalho de Melo (2):
      perf symbols: Store if there is a filter in place
      perf hists browser: Take the --comm, --dsos, etc filters into account

Arne Fitzenreiter (2):
      libata: add ATA_HORKAGE_NOTRIM
      libata: force disable trim for SuperSSpeed S238

Bernhard Bender (1):
      Input: usbtouchscreen - avoid unresponsive TSC-30 touch screen

Brian Campbell (1):
      xhci: Calculate old endpoints correctly on device reset

Chen Gang (1):
      netfilter: nfnetlink_cthelper: Remove 'const' and '&' to avoid warnings

Chris Metcalf (1):
      tile: use free_bootmem_late() for initrd

Chris Wilson (1):
      xdrm/i915: Use two 32bit reads for select 64bit REG_READ ioctls

Claudio Cappelli (1):
      USB: option: add 2020:4000 ID

Colin Ian King (1):
      KEYS: ensure we free the assoc array edit if edit is valid

Dan Carpenter (1):
      net/xen-netback: off by one in BUG_ON() condition

Dennis Yang (1):
      dm btree remove: fix bug in redistribute3

Denys Vlasenko (2):
      x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only user
      x86/asm/entry/64: Remove a redundant jump

Dominic Sacré (1):
      ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4

Edward Hyunkoo Jee (1):
      inet: frags: fix defragmented packet's IP header for af_packet

Eric Dumazet (1):
      net: graceful exit from netif_alloc_netdev_queues()

Eryu Guan (2):
      ext4: be more strict when migrating to non-extent based file
      ext4: correctly migrate a file with a hole at the beginning

Ezequiel Garcia (1):
      spi: pl022: Specify 'num-cs' property as required in devicetree binding

Fabio Estevam (1):
      iio: twl4030-madc: Pass the IRQF_ONESHOT flag

Felipe Balbi (1):
      usb: musb: host: rely on port_mode to call musb_start()

Filipe Manana (6):
      Btrfs: use kmem_cache_free when freeing entry in inode cache
      Btrfs: fix race between caching kthread and returning inode to inode cache
      Btrfs: fix fsync data loss after append write
      Btrfs: fix memory leak in the extent_same ioctl
      Btrfs: fix list transaction->pending_ordered corruption
      Btrfs: fix file corruption after cloning inline extents

Firo Yang (1):
      md: fix a build warning

Florian Fainelli (2):
      net: dsa: Test array index before use
      net: dsa: Fix off-by-one in switch address parsing

Fugang Duan (1):
      iio: adc: vf610: fix the adc register read fail issue

Grigori Goronzy (1):
      drm/radeon: unpin cursor BOs on suspend and pin them again on resume (v2)

Heiko Carstens (1):
      s390/process: fix sfpc inline assembly

JM Friedt (1):
      iio: DAC: ad5624r_spi: fix bit shift of output data value

Jan Leupold (1):
      iio: adc: at91_adc: allow to use full range of startup time

Jingju Hou (1):
      mmc: sdhci-pxav3: fix platform_data is not initialized

Joakim Tjernlund (1):
      mmc: sdhci-esdhc: Make 8BIT bus work

Joe Perches (1):
      hpfs: hpfs_error: Remove static buffer, use vsprintf extension %pV instead

Joe Thornber (1):
      dm btree: silence lockdep lock inversion in dm_btree_del()

Johannes Thumshirn (1):
      USB: serial: Destroy serial_minors IDR on module exit

John Youn (1):
      usb: dwc3: Reset the transfer resource index on SET_INTERFACE

Julian Anastasov (1):
      net: do not process device backlog during unregistration

Kirill A. Shutemov (1):
      mm: avoid setting up anonymous pages into file mapping

Kishon Vijay Abraham I (1):
      mmc: omap_hsmmc: Fix DTO and DCRC handling

Lior Amsalem (1):
      ata: pmp: add quirk for Marvell 4140 SATA PMP

Lu Baolu (1):
      usb: core: lpm: set lpm_capable for root hub device

Lukas Czerner (1):
      ext4: fix reservation release on invalidatepage for delalloc fs

Lukasz Majewski (1):
      thermal: step_wise: fix: Prevent from binary overflow when trend is dropping

Marek Szyprowski (1):
      ARM: 8404/1: dma-mapping: fix off-by-one error in bitmap size check

Mario Kleiner (1):
      drm/radeon: Handle irqs only based on irq ring, not irq status regs.

Markos Chandras (1):
      MIPS: kernel: traps: Fix broken indentation

Martin K. Petersen (2):
      libata: Do not blacklist M510DC
      block: Do a full clone when splitting discard bios

Martin Schwidefsky (1):
      s390/sclp: clear upper register halves in _sclp_print_early

Michal Hocko (1):
      ext4: replace open coded nofail allocation in ext4_free_blocks()

Michal Marek (1):
      kbuild: Allow arch Makefiles to override {cpp,ld,c}flags

Michal Nazarewicz (1):
      usb: f_mass_storage: limit number of reported LUNs

Michel Dänzer (1):
      drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL

Mike Snitzer (1):
      bio integrity: do not assume bio_integrity_pool exists if bioset exists

Mikulas Patocka (1):
      libata: increase the timeout when setting transfer mode

Mimi Zohar (1):
      evm: labeling pseudo filesystems exception

Mugunthan V N (1):
      drivers: net: cpsw: fix crash while accessing second slave ethernet interface

NeilBrown (1):
      md/raid1: fix test for 'was read error from last working device'.

Nikolay Aleksandrov (4):
      bridge: mdb: zero out the local br_ip variable before use
      bridge: mdb: fix double add notification
      bonding: fix destruction of bond with devices different from arphrd_ether
      bonding: correctly handle bonding type change on enslave failure

Oliver Neukum (1):
      usb-storage: ignore ZTE MF 823 card reader in mode 0x1225

Peter Meerwald (1):
      iio: tmp006: Check channel info on write

Peter Sanford (1):
      USB: cp210x: add ID for Aruba Networks controllers

Sanidhya Kashyap (1):
      hpfs: kstrdup() out of memory handling

Satish Ashok (1):
      bridge: mdb: start delete timer for temp static entries

Scott Wood (1):
      mtd: nand: Fix NAND_USE_BOUNCE_BUFFER flag conflict

Sergei Shtylyov (2):
      can: rcar_can: fix IRQ check
      can: rcar_can: print signed IRQ #

Seymour, Shane M (1):
      st: null pointer dereference panic caused by use after kref_put by st_open

Simon Guinot (1):
      net: mvneta: fix refilling for Rx DMA buffers

Stefan Agner (1):
      can: mcp251x: fix resume when device is down

Stefan Wahren (1):
      ARM: dts: mx23: fix iio-hwmon support

Steven Rostedt (Red Hat) (1):
      tracing: Have branch tracer use recursive field of task struct

Subbaraya Sundeep Bhatta (1):
      usb: dwc3: gadget: return error if command sent to DEPCMD register fails

Tejun Heo (1):
      blkcg: fix gendisk reference leak in blkg_conf_prep()

Thomas Gleixner (1):
      genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD

Tilman Schmidt (1):
      isdn/gigaset: reset tty->receive_room when attaching ser_gigaset

Timo Teräs (1):
      ip_tunnel: fix ipv4 pmtu check to honor inner ip header df

Tom Hughes (1):
      mac80211: clear subdir_stations when removing debugfs

Tomas Winkler (1):
      mmc: block: Add missing mmc_blk_put() in power_ro_lock_show()

Vineet Gupta (1):
      ARC: Override toplevel default -O2 with -O3

Vutla, Lokesh (1):
      crypto: omap-des - Fix unmapping of dma channels

Wen-chien Jesse Sung (1):
      Bluetooth: ath3k: Add a new ID 0cf3:e006 to ath3k list

Wengang Wang (1):
      rds: rds_ib_device.refcount overflow

Zhao Junwang (1):
      drm: add a check for x/y in drm_mode_setcrtc

Zhuang Jin Can (3):
      xhci: report U3 when link is in resume state
      xhci: prevent bus_suspend if SS port resuming in phase 1
      xhci: do not report PLC when link is in internal resume state
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1205860 — [PATCH 3.16.y-ckt 008/118] ext4: correctly migrate a file with a hole at the beginning

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[PATCH 3.16.y-ckt 008/118] ext4: correctly migrate a file with a hole at the beginning
Message-ID<pWAPy-Bo-37@gated-at.bofh.it>
In reply to#1205859
3.16.7-ckt16 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eryu Guan <guaneryu@gmail.com>

commit 8974fec7d72e3e02752fe0f27b4c3719c78d9a15 upstream.

Currently ext4_ind_migrate() doesn't correctly handle a file which
contains a hole at the beginning of the file.  This caused the migration
to be done incorrectly, and then if there is a subsequent following
delayed allocation write to the "hole", this would reclaim the same data
blocks again and results in fs corruption.

  # assmuing 4k block size ext4, with delalloc enabled
  # skip the first block and write to the second block
  xfs_io -fc "pwrite 4k 4k" -c "fsync" /mnt/ext4/testfile

  # converting to indirect-mapped file, which would move the data blocks
  # to the beginning of the file, but extent status cache still marks
  # that region as a hole
  chattr -e /mnt/ext4/testfile

  # delayed allocation writes to the "hole", reclaim the same data block
  # again, results in i_blocks corruption
  xfs_io -c "pwrite 0 4k" /mnt/ext4/testfile
  umount /mnt/ext4
  e2fsck -nf /dev/sda6
  ...
  Inode 53, i_blocks is 16, should be 8.  Fix? no
  ...

Signed-off-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/ext4/migrate.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c
index c39329ac545b..08ef191801cf 100644
--- a/fs/ext4/migrate.c
+++ b/fs/ext4/migrate.c
@@ -616,7 +616,7 @@ int ext4_ind_migrate(struct inode *inode)
 	struct ext4_inode_info		*ei = EXT4_I(inode);
 	struct ext4_extent		*ex;
 	unsigned int			i, len;
-	ext4_lblk_t			end;
+	ext4_lblk_t			start, end;
 	ext4_fsblk_t			blk;
 	handle_t			*handle;
 	int				ret;
@@ -655,11 +655,12 @@ int ext4_ind_migrate(struct inode *inode)
 		goto errout;
 	}
 	if (eh->eh_entries == 0)
-		blk = len = 0;
+		blk = len = start = end = 0;
 	else {
 		len = le16_to_cpu(ex->ee_len);
 		blk = ext4_ext_pblock(ex);
-		end = le32_to_cpu(ex->ee_block) + len - 1;
+		start = le32_to_cpu(ex->ee_block);
+		end = start + len - 1;
 		if (end >= EXT4_NDIR_BLOCKS) {
 			ret = -EOPNOTSUPP;
 			goto errout;
@@ -668,7 +669,7 @@ int ext4_ind_migrate(struct inode *inode)
 
 	ext4_clear_inode_flag(inode, EXT4_INODE_EXTENTS);
 	memset(ei->i_data, 0, sizeof(ei->i_data));
-	for (i=0; i < len; i++)
+	for (i = start; i <= end; i++)
 		ei->i_data[i] = cpu_to_le32(blk++);
 	ext4_mark_inode_dirty(handle, inode);
 errout:
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1205861 — [PATCH 3.16.y-ckt 007/118] ext4: be more strict when migrating to non-extent based file

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[PATCH 3.16.y-ckt 007/118] ext4: be more strict when migrating to non-extent based file
Message-ID<pWAPy-Bo-39@gated-at.bofh.it>
In reply to#1205859
3.16.7-ckt16 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eryu Guan <guaneryu@gmail.com>

commit d6f123a9297496ad0b6335fe881504c4b5b2a5e5 upstream.

Currently the check in ext4_ind_migrate() is not enough before doing the
real conversion:

a) delayed allocated extents could bypass the check on eh->eh_entries
   and eh->eh_depth

This can be demonstrated by this script

  xfs_io -fc "pwrite 0 4k" -c "pwrite 8k 4k" /mnt/ext4/testfile
  chattr -e /mnt/ext4/testfile

where testfile has two extents but still be converted to non-extent
based file format.

b) only extent length is checked but not the offset, which would result
   in data lose (delalloc) or fs corruption (nodelalloc), because
   non-extent based file only supports at most (12 + 2^10 + 2^20 + 2^30)
   blocks

This can be demostrated by

  xfs_io -fc "pwrite 5T 4k" /mnt/ext4/testfile
  chattr -e /mnt/ext4/testfile
  sync

If delalloc is enabled, dmesg prints
  EXT4-fs warning (device dm-4): ext4_block_to_path:105: block 1342177280 > max in inode 53
  EXT4-fs (dm-4): Delayed block allocation failed for inode 53 at logical offset 1342177280 with max blocks 1 with error 5
  EXT4-fs (dm-4): This should not happen!! Data will be lost

If delalloc is disabled, e2fsck -nf shows corruption
  Inode 53, i_size is 5497558142976, should be 4096.  Fix? no

Fix the two issues by

a) forcing all delayed allocation blocks to be allocated before checking
   eh->eh_depth and eh->eh_entries
b) limiting the last logical block of the extent is within direct map

Signed-off-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/ext4/migrate.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c
index ec092437d3e0..c39329ac545b 100644
--- a/fs/ext4/migrate.c
+++ b/fs/ext4/migrate.c
@@ -616,6 +616,7 @@ int ext4_ind_migrate(struct inode *inode)
 	struct ext4_inode_info		*ei = EXT4_I(inode);
 	struct ext4_extent		*ex;
 	unsigned int			i, len;
+	ext4_lblk_t			end;
 	ext4_fsblk_t			blk;
 	handle_t			*handle;
 	int				ret;
@@ -629,6 +630,14 @@ int ext4_ind_migrate(struct inode *inode)
 				       EXT4_FEATURE_RO_COMPAT_BIGALLOC))
 		return -EOPNOTSUPP;
 
+	/*
+	 * In order to get correct extent info, force all delayed allocation
+	 * blocks to be allocated, otherwise delayed allocation blocks may not
+	 * be reflected and bypass the checks on extent header.
+	 */
+	if (test_opt(inode->i_sb, DELALLOC))
+		ext4_alloc_da_blocks(inode);
+
 	handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, 1);
 	if (IS_ERR(handle))
 		return PTR_ERR(handle);
@@ -650,7 +659,8 @@ int ext4_ind_migrate(struct inode *inode)
 	else {
 		len = le16_to_cpu(ex->ee_len);
 		blk = ext4_ext_pblock(ex);
-		if (len > EXT4_NDIR_BLOCKS) {
+		end = le32_to_cpu(ex->ee_block) + len - 1;
+		if (end >= EXT4_NDIR_BLOCKS) {
 			ret = -EOPNOTSUPP;
 			goto errout;
 		}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1205862 — [PATCH 3.16.y-ckt 011/118] drm/radeon: unpin cursor BOs on suspend and pin them again on resume (v2)

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[PATCH 3.16.y-ckt 011/118] drm/radeon: unpin cursor BOs on suspend and pin them again on resume (v2)
Message-ID<pWAPy-Bo-43@gated-at.bofh.it>
In reply to#1205859
3.16.7-ckt16 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Grigori Goronzy <greg@chown.ath.cx>

commit f3cbb17bcf676a2fc6aedebe9fbebd59e550c51a upstream.

Everything is evicted from VRAM before suspend, so we need to make
sure all BOs are unpinned and re-pinned after resume. Fixes broken
mouse cursor after resume introduced by commit b9729b17.

[Michel Dänzer: Add pinning BOs on resume]

v2:
[Alex Deucher: merge cursor unpin into fb unpin loop]

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=100541
Reviewed-by: Christian König <christian.koenig@amd.com> (v1)
Signed-off-by: Grigori Goronzy <greg@chown.ath.cx>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/gpu/drm/radeon/radeon_device.c | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index e5ed5ee9d832..ca470fb17aa4 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -1484,11 +1484,21 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend, bool fbcon)
 		drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
 	}
 
-	/* unpin the front buffers */
+	/* unpin the front buffers and cursors */
 	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
+		struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
 		struct radeon_framebuffer *rfb = to_radeon_framebuffer(crtc->primary->fb);
 		struct radeon_bo *robj;
 
+		if (radeon_crtc->cursor_bo) {
+			struct radeon_bo *robj = gem_to_radeon_bo(radeon_crtc->cursor_bo);
+			r = radeon_bo_reserve(robj, false);
+			if (r == 0) {
+				radeon_bo_unpin(robj);
+				radeon_bo_unreserve(robj);
+			}
+		}
+
 		if (rfb == NULL || rfb->obj == NULL) {
 			continue;
 		}
@@ -1554,6 +1564,7 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
 {
 	struct drm_connector *connector;
 	struct radeon_device *rdev = dev->dev_private;
+	struct drm_crtc *crtc;
 	int r;
 
 	if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
@@ -1593,6 +1604,27 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
 
 	radeon_restore_bios_scratch_regs(rdev);
 
+	/* pin cursors */
+	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
+		struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
+
+		if (radeon_crtc->cursor_bo) {
+			struct radeon_bo *robj = gem_to_radeon_bo(radeon_crtc->cursor_bo);
+			r = radeon_bo_reserve(robj, false);
+			if (r == 0) {
+				/* Only 27 bit offset for legacy cursor */
+				r = radeon_bo_pin_restricted(robj,
+							     RADEON_GEM_DOMAIN_VRAM,
+							     ASIC_IS_AVIVO(rdev) ?
+							     0 : 1 << 27,
+							     &radeon_crtc->cursor_addr);
+				if (r != 0)
+					DRM_ERROR("Failed to pin cursor BO (%d)\n", r);
+				radeon_bo_unreserve(robj);
+			}
+		}
+	}
+
 	/* init dig PHYs, disp eng pll */
 	if (rdev->is_atom_bios) {
 		radeon_atom_encoder_init(rdev);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1205863 — [PATCH 3.16.y-ckt 004/118] Btrfs: fix race between caching kthread and returning inode to inode cache

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[PATCH 3.16.y-ckt 004/118] Btrfs: fix race between caching kthread and returning inode to inode cache
Message-ID<pWAPy-Bo-45@gated-at.bofh.it>
In reply to#1205859
3.16.7-ckt16 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Filipe Manana <fdmanana@suse.com>

commit ae9d8f17118551bedd797406a6768b87c2146234 upstream.

While the inode cache caching kthread is calling btrfs_unpin_free_ino(),
we could have a concurrent call to btrfs_return_ino() that adds a new
entry to the root's free space cache of pinned inodes. This concurrent
call does not acquire the fs_info->commit_root_sem before adding a new
entry if the caching state is BTRFS_CACHE_FINISHED, which is a problem
because the caching kthread calls btrfs_unpin_free_ino() after setting
the caching state to BTRFS_CACHE_FINISHED and therefore races with
the task calling btrfs_return_ino(), which is adding a new entry, while
the former (caching kthread) is navigating the cache's rbtree, removing
and freeing nodes from the cache's rbtree without acquiring the spinlock
that protects the rbtree.

This race resulted in memory corruption due to double free of struct
btrfs_free_space objects because both tasks can end up doing freeing the
same objects. Note that adding a new entry can result in merging it with
other entries in the cache, in which case those entries are freed.
This is particularly important as btrfs_free_space structures are also
used for the block group free space caches.

This memory corruption can be detected by a debugging kernel, which
reports it with the following trace:

[132408.501148] slab error in verify_redzone_free(): cache `btrfs_free_space': double free detected
[132408.505075] CPU: 15 PID: 12248 Comm: btrfs-ino-cache Tainted: G        W       4.1.0-rc5-btrfs-next-10+ #1
[132408.505075] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.8.1-0-g4adadbd-20150316_085822-nilsson.home.kraxel.org 04/01/2014
[132408.505075]  ffff880023e7d320 ffff880163d73cd8 ffffffff8145eec7 ffffffff81095dce
[132408.505075]  ffff880009735d40 ffff880163d73ce8 ffffffff81154e1e ffff880163d73d68
[132408.505075]  ffffffff81155733 ffffffffa054a95a ffff8801b6099f00 ffffffffa0505b5f
[132408.505075] Call Trace:
[132408.505075]  [<ffffffff8145eec7>] dump_stack+0x4f/0x7b
[132408.505075]  [<ffffffff81095dce>] ? console_unlock+0x356/0x3a2
[132408.505075]  [<ffffffff81154e1e>] __slab_error.isra.28+0x25/0x36
[132408.505075]  [<ffffffff81155733>] __cache_free+0xe2/0x4b6
[132408.505075]  [<ffffffffa054a95a>] ? __btrfs_add_free_space+0x2f0/0x343 [btrfs]
[132408.505075]  [<ffffffffa0505b5f>] ? btrfs_unpin_free_ino+0x8e/0x99 [btrfs]
[132408.505075]  [<ffffffff810f3b30>] ? time_hardirqs_off+0x15/0x28
[132408.505075]  [<ffffffff81084d42>] ? trace_hardirqs_off+0xd/0xf
[132408.505075]  [<ffffffff811563a1>] ? kfree+0xb6/0x14e
[132408.505075]  [<ffffffff811563d0>] kfree+0xe5/0x14e
[132408.505075]  [<ffffffffa0505b5f>] btrfs_unpin_free_ino+0x8e/0x99 [btrfs]
[132408.505075]  [<ffffffffa0505e08>] caching_kthread+0x29e/0x2d9 [btrfs]
[132408.505075]  [<ffffffffa0505b6a>] ? btrfs_unpin_free_ino+0x99/0x99 [btrfs]
[132408.505075]  [<ffffffff8106698f>] kthread+0xef/0xf7
[132408.505075]  [<ffffffff810f3b08>] ? time_hardirqs_on+0x15/0x28
[132408.505075]  [<ffffffff810668a0>] ? __kthread_parkme+0xad/0xad
[132408.505075]  [<ffffffff814653d2>] ret_from_fork+0x42/0x70
[132408.505075]  [<ffffffff810668a0>] ? __kthread_parkme+0xad/0xad
[132408.505075] ffff880023e7d320: redzone 1:0x9f911029d74e35b, redzone 2:0x9f911029d74e35b.
[132409.501654] slab: double free detected in cache 'btrfs_free_space', objp ffff880023e7d320
[132409.503355] ------------[ cut here ]------------
[132409.504241] kernel BUG at mm/slab.c:2571!

Therefore fix this by having btrfs_unpin_free_ino() acquire the lock
that protects the rbtree while doing the searches and removing entries.

Fixes: 1c70d8fb4dfa ("Btrfs: fix inode caching vs tree log")
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/btrfs/inode-map.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/fs/btrfs/inode-map.c b/fs/btrfs/inode-map.c
index f25c68d84811..7537c05244c0 100644
--- a/fs/btrfs/inode-map.c
+++ b/fs/btrfs/inode-map.c
@@ -246,6 +246,7 @@ void btrfs_unpin_free_ino(struct btrfs_root *root)
 {
 	struct btrfs_free_space_ctl *ctl = root->free_ino_ctl;
 	struct rb_root *rbroot = &root->free_ino_pinned->free_space_offset;
+	spinlock_t *rbroot_lock = &root->free_ino_pinned->tree_lock;
 	struct btrfs_free_space *info;
 	struct rb_node *n;
 	u64 count;
@@ -254,23 +255,29 @@ void btrfs_unpin_free_ino(struct btrfs_root *root)
 		return;
 
 	while (1) {
+		bool add_to_ctl = true;
+
+		spin_lock(rbroot_lock);
 		n = rb_first(rbroot);
-		if (!n)
+		if (!n) {
+			spin_unlock(rbroot_lock);
 			break;
+		}
 
 		info = rb_entry(n, struct btrfs_free_space, offset_index);
 		BUG_ON(info->bitmap); /* Logic error */
 
 		if (info->offset > root->cache_progress)
-			goto free;
+			add_to_ctl = false;
 		else if (info->offset + info->bytes > root->cache_progress)
 			count = root->cache_progress - info->offset + 1;
 		else
 			count = info->bytes;
 
-		__btrfs_add_free_space(ctl, info->offset, count);
-free:
 		rb_erase(&info->offset_index, rbroot);
+		spin_unlock(rbroot_lock);
+		if (add_to_ctl)
+			__btrfs_add_free_space(ctl, info->offset, count);
 		kmem_cache_free(btrfs_free_space_cachep, info);
 	}
 }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1205864 — [PATCH 3.16.y-ckt 026/118] ARC: Override toplevel default -O2 with -O3

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[PATCH 3.16.y-ckt 026/118] ARC: Override toplevel default -O2 with -O3
Message-ID<pWAPy-Bo-55@gated-at.bofh.it>
In reply to#1205859
3.16.7-ckt16 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Vineet Gupta <vgupta@synopsys.com>

commit 97709069214eb75312c14946803b9da4d3814203 upstream.

ARC kernels have historically been built with -O3, despite top level
Makefile defaulting to -O2. This was facilitated by implicitly ordering
of arch makefile include AFTER top level assigned -O2.

An upstream fix to top level a1c48bb160f ("Makefile: Fix unrecognized
cross-compiler command line options") changed the ordering, making ARC
-O3 defunct.

Fix that by NOT relying on any ordering whatsoever and use the proper
arch override facility now present in kbuild (ARCH_*FLAGS)

Depends-on: ("kbuild: Allow arch Makefiles to override {cpp,ld,c}flags")
Suggested-by: Michal Marek <mmarek@suse.cz>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arc/Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/arc/Makefile b/arch/arc/Makefile
index 8c0b1aa56f7e..429279bc3028 100644
--- a/arch/arc/Makefile
+++ b/arch/arc/Makefile
@@ -44,7 +44,8 @@ endif
 
 ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
 # Generic build system uses -O2, we want -O3
-cflags-y  += -O3
+# Note: No need to add to cflags-y as that happens anyways
+ARCH_CFLAGS += -O3
 endif
 
 # small data is default for elf32 tool-chain. If not usable, disable it
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1205865 — [PATCH 3.16.y-ckt 001/118] netfilter: nfnetlink_cthelper: Remove 'const' and '&' to avoid warnings

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[PATCH 3.16.y-ckt 001/118] netfilter: nfnetlink_cthelper: Remove 'const' and '&' to avoid warnings
Message-ID<pWAPz-Bo-57@gated-at.bofh.it>
In reply to#1205859
3.16.7-ckt16 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Chen Gang <gang.chen.5i5j@gmail.com>

commit b18c5d15e8714336365d9d51782d5b53afa0443c upstream.

The related code can be simplified, and also can avoid related warnings
(with allmodconfig under parisc):

    CC [M]  net/netfilter/nfnetlink_cthelper.o
  net/netfilter/nfnetlink_cthelper.c: In function ‘nfnl_cthelper_from_nlattr’:
  net/netfilter/nfnetlink_cthelper.c:97:9: warning: passing argument 1 o ‘memcpy’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-array-qualifiers]
    memcpy(&help->data, nla_data(attr), help->helper->data_len);
           ^
  In file included from include/linux/string.h:17:0,
                   from include/uapi/linux/uuid.h:25,
                   from include/linux/uuid.h:23,
                   from include/linux/mod_devicetable.h:12,
                   from ./arch/parisc/include/asm/hardware.h:4,
                   from ./arch/parisc/include/asm/processor.h:15,
                   from ./arch/parisc/include/asm/spinlock.h:6,
                   from ./arch/parisc/include/asm/atomic.h:21,
                   from include/linux/atomic.h:4,
                   from ./arch/parisc/include/asm/bitops.h:12,
                   from include/linux/bitops.h:36,
                   from include/linux/kernel.h:10,
                   from include/linux/list.h:8,
                   from include/linux/module.h:9,
                   from net/netfilter/nfnetlink_cthelper.c:11:
  ./arch/parisc/include/asm/string.h:8:8: note: expected ‘void *’ but argument is of type ‘const char (*)[]’
   void * memcpy(void * dest,const void *src,size_t count);
          ^

Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@soleta.eu>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 net/netfilter/nfnetlink_cthelper.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/netfilter/nfnetlink_cthelper.c b/net/netfilter/nfnetlink_cthelper.c
index 7f035f0772ee..54330fb5efaf 100644
--- a/net/netfilter/nfnetlink_cthelper.c
+++ b/net/netfilter/nfnetlink_cthelper.c
@@ -89,7 +89,7 @@ nfnl_cthelper_parse_tuple(struct nf_conntrack_tuple *tuple,
 static int
 nfnl_cthelper_from_nlattr(struct nlattr *attr, struct nf_conn *ct)
 {
-	const struct nf_conn_help *help = nfct_help(ct);
+	struct nf_conn_help *help = nfct_help(ct);
 
 	if (attr == NULL)
 		return -EINVAL;
@@ -97,7 +97,7 @@ nfnl_cthelper_from_nlattr(struct nlattr *attr, struct nf_conn *ct)
 	if (help->helper->data_len == 0)
 		return -EINVAL;
 
-	memcpy(&help->data, nla_data(attr), help->helper->data_len);
+	memcpy(help->data, nla_data(attr), help->helper->data_len);
 	return 0;
 }
 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1205866 — [PATCH 3.16.y-ckt 009/118] ext4: replace open coded nofail allocation in ext4_free_blocks()

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[PATCH 3.16.y-ckt 009/118] ext4: replace open coded nofail allocation in ext4_free_blocks()
Message-ID<pWAPz-Bo-59@gated-at.bofh.it>
In reply to#1205859
3.16.7-ckt16 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Michal Hocko <mhocko@suse.cz>

commit 7444a072c387a93ebee7066e8aee776954ab0e41 upstream.

ext4_free_blocks is looping around the allocation request and mimics
__GFP_NOFAIL behavior without any allocation fallback strategy. Let's
remove the open coded loop and replace it with __GFP_NOFAIL. Without the
flag the allocator has no way to find out never-fail requirement and
cannot help in any way.

Signed-off-by: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/ext4/mballoc.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index c3e7418a6811..47f7af78675a 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -4810,18 +4810,12 @@ do_more:
 		/*
 		 * blocks being freed are metadata. these blocks shouldn't
 		 * be used until this transaction is committed
+		 *
+		 * We use __GFP_NOFAIL because ext4_free_blocks() is not allowed
+		 * to fail.
 		 */
-	retry:
-		new_entry = kmem_cache_alloc(ext4_free_data_cachep, GFP_NOFS);
-		if (!new_entry) {
-			/*
-			 * We use a retry loop because
-			 * ext4_free_blocks() is not allowed to fail.
-			 */
-			cond_resched();
-			congestion_wait(BLK_RW_ASYNC, HZ/50);
-			goto retry;
-		}
+		new_entry = kmem_cache_alloc(ext4_free_data_cachep,
+				GFP_NOFS|__GFP_NOFAIL);
 		new_entry->efd_start_cluster = bit;
 		new_entry->efd_group = block_group;
 		new_entry->efd_count = count_clusters;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1205867 — [PATCH 3.16.y-ckt 014/118] 9p: don't leave a half-initialized inode sitting around

FromLuis Henriques <luis.henriques@canonical.com>
Date2015-08-12 11:50 +0200
Subject[PATCH 3.16.y-ckt 014/118] 9p: don't leave a half-initialized inode sitting around
Message-ID<pWAPz-Bo-61@gated-at.bofh.it>
In reply to#1205859
3.16.7-ckt16 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Al Viro <viro@zeniv.linux.org.uk>

commit 0a73d0a204a4a04a1e110539c5a524ae51f91d6d upstream.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 fs/9p/vfs_inode.c      | 3 +--
 fs/9p/vfs_inode_dotl.c | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 7fa4f7a7653d..509459d71ed0 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -540,8 +540,7 @@ static struct inode *v9fs_qid_iget(struct super_block *sb,
 	unlock_new_inode(inode);
 	return inode;
 error:
-	unlock_new_inode(inode);
-	iput(inode);
+	iget_failed(inode);
 	return ERR_PTR(retval);
 
 }
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c
index 1fa85aae24df..d3fb85871921 100644
--- a/fs/9p/vfs_inode_dotl.c
+++ b/fs/9p/vfs_inode_dotl.c
@@ -149,8 +149,7 @@ static struct inode *v9fs_qid_iget_dotl(struct super_block *sb,
 	unlock_new_inode(inode);
 	return inode;
 error:
-	unlock_new_inode(inode);
-	iput(inode);
+	iget_failed(inode);
 	return ERR_PTR(retval);
 
 }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web