Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1205859 > unrolled thread
| Started by | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| First post | 2015-08-12 11:50 +0200 |
| Last post | 2015-08-12 11:50 +0200 |
| Articles | 9 — 1 participant |
Back to article view | Back to linux.kernel
[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
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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]
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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]
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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]
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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]
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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]
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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]
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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]
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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]
| From | Luis Henriques <luis.henriques@canonical.com> |
|---|---|
| Date | 2015-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