Release linux (4.7.5-1).
-----BEGIN PGP SIGNATURE----- iQIcBAABCgAGBQJX6HXOAAoJEOe/yOyVhhEJA68QAJSLxpMHBbl9474Q/SPonncf S7NXiYZQuo7STq0uHUVxtOTpVKRc/7y793tdtpI3Ec6nZqilS+4uKq1QNAh7kj6n JwilTLkfbjRS4+VqEEHJtVfK/bjijEep943W+uv3foMXPzbJulgRNrf54nUOFA2n WY1ZfL6Dp+tvys49UrK+3lsuY/ZCLzpck3m0rScGYgalfnZo00ttPto29YZjVXrp 7RZset950hvEvL7cD7GXi2pqoEcvV3AISOABgKU0U6VitS1E8wJHW1pDZvHgZDKO 55lAdyyEsAE96J1RzKwPjyHTKDmr1v6AiqNxwviLndwoLflYHUbsZBx0H9pRE0Gi 45IDQELGFToJ/4dDNijk3oyOsQaV06f0gYv+FqGnN33IWxrlz9oQ3PSWB6qA9dr5 vBGG1tzoYFdManBwZvH5smD25Ckc3TK2UzMqJA1BIjRpCoajxfmZWcgfPH8Z9gwJ 5giCQkEKCbbwAXmRwVCYDFp5t0DlnyiY0/IizunHUxFapl9B6SNRFPhJVbUCNV07 /yzsRU+TcNnV1oGQE9+uWTIelUQmc5cvMiaIlW7fifrqPAKCCnk2imYI1Tx1jsVl VqLo1Jalt+iZGKsEt6I3ST6LX1k/QFkz7BmJ4Yz+NdwwN6/Jq5rufFxLWGdIYPdI N4PnNBVMK0ooLqbaatRO =PYYu -----END PGP SIGNATURE----- Merge tag 'debian/4.7.5-1' Drop ABI maintenance patches.
This commit is contained in:
commit
b2480a3dfe
|
@ -66,6 +66,152 @@ linux (4.8~rc5-1~exp1) experimental; urgency=medium
|
|||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Wed, 07 Sep 2016 21:52:47 +0100
|
||||
|
||||
linux (4.7.5-1) unstable; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.7.5
|
||||
- [armhf] clocksource/drivers/sun4i: Clear interrupts after stopping timer
|
||||
in probe function
|
||||
- fscrypto: require write access to mount to set encryption policy
|
||||
- [arm64] drm/msm: protect against faults from copy_from_user() in submit
|
||||
ioctl
|
||||
- bpf: fix method of PTR_TO_PACKET reg id generation
|
||||
- ipv4: panic in leaf_walk_rcu due to stale node pointer
|
||||
- vti: flush x-netns xfrm cache when vti interface is removed
|
||||
- bpf: fix write helpers with regards to non-linear parts
|
||||
- net/irda: handle iriap_register_lsap() allocation failure
|
||||
- net/sctp: always initialise sctp_ht_iter::start_fail
|
||||
- net: ipv6: Do not keep IPv6 addresses when IPv6 is disabled
|
||||
- tipc: fix NULL pointer dereference in shutdown()
|
||||
- net/mlx5: Fix pci error recovery flow
|
||||
- net/mlx5: Added missing check of msg length in verifying its signature
|
||||
- net/mlx5e: Use correct flow dissector key on flower offloading
|
||||
- net sched: fix encoding to use real length
|
||||
- udp: fix poll() issue with zero sized packets
|
||||
- tcp: properly scale window in tcp_v[46]_reqsk_send_ack()
|
||||
- sctp: fix overrun in sctp_diag_dump_one()
|
||||
- tun: fix transmit timestamp support
|
||||
- [armhf] net: dsa: bcm_sf2: Fix race condition while unmasking interrupts
|
||||
- Revert "phy: IRQ cannot be shared"
|
||||
- net: smc91x: fix SMC accesses
|
||||
- bridge: re-introduce 'fix parsing of MLDv2 reports'
|
||||
- bonding: Fix bonding crash
|
||||
- Revert "af_unix: Fix splice-bind deadlock"
|
||||
- af_unix: split 'u->readlock' into two: 'iolock' and 'bindlock'
|
||||
- ipv6: release dst in ping_v6_sendmsg
|
||||
- [arm64] bnxt_en: Fix TX push operation on ARM64.
|
||||
- ipv6: addrconf: fix dev refcont leak when DAD failed
|
||||
- tcp: fastopen: avoid negative sk_forward_alloc
|
||||
- net/mlx5e: Fix parsing of vlan packets when updating lro header
|
||||
- tcp: cwnd does not increase in TCP YeAH
|
||||
- [powerpc*] tm: do not use r13 for tabort_syscall
|
||||
- [powerpc*] powernv : Drop reference added by kset_find_obj()
|
||||
- [powerpc*] sysdev: cpm: fix gpio save_regs functions
|
||||
- [powerpc*] mm: Don't alias user region to other regions below PAGE_OFFSET
|
||||
- [powerpc*] powernv: Fix corrupted PE allocation bitmap on releasing PE
|
||||
- kernfs: don't depend on d_find_any_alias() when generating notifications
|
||||
- pNFS/flexfiles: Fix an Oopsable condition when connection to the DS fails
|
||||
- pNFS: The client must not do I/O to the DS if it's lease has expired
|
||||
- NFSv4.1: Fix Oopsable condition in server callback races
|
||||
- NFSv4.x: Fix a refcount leak in nfs_callback_up_net
|
||||
- nfsd: Close race between nfsd4_release_lockowner and nfsd4_lock
|
||||
- pNFS: Ensure LAYOUTGET and LAYOUTRETURN are properly serialised
|
||||
- NFSv4.1: Fix the CREATE_SESSION slot number accounting
|
||||
- kexec: fix double-free when failing to relocate the purgatory
|
||||
- mm, mempolicy: task->mempolicy must be NULL before dropping final
|
||||
reference
|
||||
- ahci: disable correct irq for dummy ports
|
||||
- audit: fix exe_file access in audit_exe_compare
|
||||
- dm flakey: fix reads to be issued if drop_writes configured
|
||||
- IB/hfi1,IB/qib: Fix qp_stats sleep with rcu read lock held
|
||||
- IB/uverbs: Fix race between uverbs_close and remove_one
|
||||
- IB/hfi1: Reset QSFP on every run through channel tuning
|
||||
- [amd64] mm: fix cache mode of dax pmd mappings
|
||||
- [x86] paravirt: Do not trace _paravirt_ident_*() functions
|
||||
- [x86] AMD: Apply erratum 665 on machines without a BIOS fix
|
||||
- [s390x] KVM: don't use current->thread.fpu.* when accessing registers
|
||||
- [armhf,arm64] kvm-arm: Unmap shadow pagetables properly
|
||||
- [x86] kvm: correctly reset dest_map->vector when restoring LAPIC state
|
||||
- iio: sw-trigger: Fix config group initialization
|
||||
- [armhf] iio: adc: rockchip_saradc: reset saradc controller before
|
||||
programming it
|
||||
- [armhf] iio: adc: ti_am335x_adc: Protect FIFO1 from concurrent access
|
||||
- [armhf] iio: adc: ti_am335x_adc: Increase timeout value waiting for ADC
|
||||
sample
|
||||
- iio:ti-ads1015: fix a wrong pointer definition.
|
||||
- [x86] iio: accel: bmc150: reset chip at init time
|
||||
- iio: fix pressure data output unit in hid-sensor-attributes
|
||||
- iio:core: fix IIO_VAL_FRACTIONAL sign handling
|
||||
- iio: ensure ret is initialized to zero before entering do loop
|
||||
- serial: 8250_mid: fix divide error bug if baud rate is 0
|
||||
- serial: 8250: added acces i/o products quad and octal serial cards
|
||||
- [armhf,arm64] usb: chipidea: udc: fix NULL ptr dereference in
|
||||
isr_setup_status_phase
|
||||
- USB: change bInterval default to 10 ms
|
||||
- devpts: return NULL pts 'priv' entry for non-devpts nodes
|
||||
- cpuset: make sure new tasks conform to the current config of the cpuset
|
||||
- [armhf] dts: rockchip: add reset node for the exist saradc SoCs
|
||||
- [armhf] imx6: add missing BM_CLPCR_BYP_MMDC_CH0_LPM_HS setting for imx6ul
|
||||
- [armhf] imx6: add missing BM_CLPCR_BYPASS_PMIC_READY setting for imx6sx
|
||||
- [armel] kirkwood: ib62x0: fix size of u-boot environment partition
|
||||
- [armhf] OMAP3: hwmod data: Add sysc information for DSI
|
||||
- [armel] dts: kirkwood: Fix PCIe label on OpenRD
|
||||
- [armhf] dts: imx6qdl: Fix SPDIF regression
|
||||
- [armhf] dts: armada-388-clearfog: number LAN ports properly
|
||||
- dm log writes: fix check of kthread_run() return value
|
||||
- dm crypt: fix free of bad values after tfm allocation failure
|
||||
- dm log writes: move IO accounting earlier to fix error path
|
||||
- dm crypt: fix error with too large bios
|
||||
- [armhf] pinctrl: sunxi: fix uart1 CTS/RTS pins at PG on A23/A33
|
||||
- [armhf] memory: omap-gpmc: allow probe of child nodes to fail
|
||||
- [arm64] spinlocks: implement smp_mb__before_spinlock() as smp_mb()
|
||||
- crypto: cryptd - initialize child shash_desc on import
|
||||
- Btrfs: remove root_log_ctx from ctx list before btrfs_sync_log returns
|
||||
- fuse: direct-io: don't dirty ITER_BVEC pages
|
||||
- xhci: fix null pointer dereference in stop command timeout function
|
||||
- brcmfmac: avoid potential stack overflow in brcmf_cfg80211_start_ap()
|
||||
- md-cluster: make md-cluster also can work when compiled into kernel
|
||||
- ath9k: fix using sta->drv_priv before initializing it
|
||||
- ath9k: bring back direction setting in ath9k_{start_stop}
|
||||
- [x86] perf/intel: Fix PEBSv3 record drain
|
||||
- [x86] perf/intel/cqm: Check cqm/mbm enabled state in event init
|
||||
- [x86] perf/amd: Make HW_CACHE_REFERENCES and HW_CACHE_MISSES measure L2
|
||||
- [x86] perf/intel/pt: Fix an off-by-one in address filter configuration
|
||||
- [x86] perf/intel/pt: Fix kernel address filter's offset validation
|
||||
- [x86] perf/intel/pt: Do validate the size of a kernel address filter
|
||||
- Revert "wext: Fix 32 bit iwpriv compatibility issue with 64 bit Kernel"
|
||||
- sched/core: Fix a race between try_to_wake_up() and a woken up task
|
||||
- ipv6: Don't unset flowi6_proto in ipxip6_tnl_xmit()
|
||||
- efi: Make for_each_efi_memory_desc_in_map() cope with running on Xen
|
||||
- efi/libstub: Allocate headspace in efi_get_memory_map()
|
||||
- efi/libstub: Introduce ExitBootServices helper
|
||||
- efi/libstub: Use efi_exit_boot_services() in FDT
|
||||
- [x86] efi: Use efi_exit_boot_services()
|
||||
- [powerpc,powerpcspe] Fix csum_partial_copy_generic()
|
||||
- [powerpc,powerpcspe] Fix again csum_partial_copy_generic()
|
||||
- [x86] drm/i915: Ignore OpRegion panel type except on select machines
|
||||
- [x86] drm: Only use compat ioctl for addfb2 on X86/IA64
|
||||
- svcauth_gss: Revert 64c59a3726f2 ("Remove unnecessary allocation")
|
||||
- genirq: Provide irq_gc_{lock_irqsave,unlock_irqrestore}() helpers
|
||||
- fix iov_iter_fault_in_readable()
|
||||
- [x86] fix minor infoleak in get_user_ex()
|
||||
- [s390x] get_user() should zero on failure
|
||||
- asm-generic: make get_user() clear the destination on errors
|
||||
- asm-generic: make copy_from_user() zero the destination properly
|
||||
- [alpha,hppa,mips*,powerpc,powerpcspe,sh4] make copy_from_user() zero the
|
||||
destination properly
|
||||
|
||||
[ Ben Hutchings ]
|
||||
* [hppa,mips*,powerpc*] linux-image: Strip debug symbols from vmlinux
|
||||
(really closes: #837588)
|
||||
* [hppa] tracing: Re-enable FTRACE
|
||||
* [powerpc,powerpcspe,ppc64] linux-image: Suppress automatic dbgsym packages
|
||||
* uaccess,uio: Fix ABI changes in 4.7.5
|
||||
* ext4: Fix checksum validation for inodes with small i_extra_isize
|
||||
(Closes: #838544, regression in 4.7.4)
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Mon, 26 Sep 2016 01:48:21 +0100
|
||||
|
||||
linux (4.7.4-2) unstable; urgency=medium
|
||||
|
||||
* [arm64] Revert "arm64: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO"
|
||||
|
|
|
@ -569,12 +569,6 @@ CONFIG_ROOT_NFS=y
|
|||
CONFIG_SGETMASK_SYSCALL=y
|
||||
CONFIG_SYSFS_SYSCALL=y
|
||||
|
||||
##
|
||||
## file: kernel/trace/Kconfig
|
||||
##
|
||||
#. As of 4.7 this has a huge size cost; see #837588
|
||||
# CONFIG_FTRACE is not set
|
||||
|
||||
##
|
||||
## file: lib/Kconfig.debug
|
||||
##
|
||||
|
|
|
@ -0,0 +1,218 @@
|
|||
From: "Darrick J. Wong" <darrick.wong@oracle.com>
|
||||
Date: Mon, 19 Sep 2016 22:52:16 -0700
|
||||
Subject: Re: Trouble mounting metadata_csum ext4 filesystems with v4.7.x after c9274d891869880648c4ee9365df3ecc7ba2e285: not enough inode bytes checksummed?
|
||||
Origin: https://www.spinics.net/lists/linux-fsdevel/msg101888.html
|
||||
Bug-Debian: https://bugs.debian.org/838544
|
||||
|
||||
[cc Ted and the ext4 list]
|
||||
|
||||
On Mon, Sep 19, 2016 at 03:19:03PM +0100, Nix wrote:
|
||||
> So I ran into spurious metadata corruption warnings in v4.7.2 due to the
|
||||
> problem fixed by c9274d8. I applied an early version of the fix,
|
||||
> rebooted, and oh dear root filesystem mount failure with invalid
|
||||
> checksum errors.
|
||||
>
|
||||
> The problem persists in v4.7.4, as seen here in qemu emulation on a raw
|
||||
> image dd'ed directly from the thing that won't boot, with a couple of
|
||||
> printk()s:
|
||||
>
|
||||
> # mount /dev/vda /new-root/
|
||||
> [ 8.124692] EXT4-fs (vda): couldn't mount as ext3 due to feature incompatibilities
|
||||
> [ 8.126977] EXT4-fs (vda): couldn't mount as ext2 due to feature incompatibilities
|
||||
> [ 9.017980] Inode size 256 > good old size 128; fits in inode: 0
|
||||
> [ 8.134897] inode 8: provided: 5c50l; calculated: 36e1i
|
||||
> [ 8.135098] EXT4-fs error (device vda): ext4_iget:4479: inode #8: comm mount: checksum invalid
|
||||
> [ 8.138992] EXT4-fs (vda): no journal found
|
||||
> [ 8.165744] UDF-fs: warning (device vda): udf_fill_super: No partition found (2)
|
||||
> mount: mounting /dev/vda on /new-root/ failed: Invalid argument
|
||||
>
|
||||
> I added a bit of printking to show the failure of the journal inode
|
||||
> checksum to pass muster. e2fsck (from e2fsprogs 1.43.1-14) is quite
|
||||
> happy with this filesystem. Reverting c9274d8 makes everything happy
|
||||
> again (well, it does bring the original bug back, which is a rather
|
||||
> serious one, but other than that...):
|
||||
>
|
||||
> [ 9.823032] EXT4-fs (vda): couldn't mount as ext3 due to feature incompatibilities
|
||||
> [ 9.824647] EXT4-fs (vda): couldn't mount as ext2 due to feature incompatibilities
|
||||
> [ 9.832593] inode 8: provided: 5c50l; calculated: 5c50i
|
||||
> [ 9.839253] inode 2: provided: d6ea92e9l; calculated: d6ea92e9i
|
||||
> [ 9.846947] EXT4-fs (vda): mounted filesystem with ordered data mode. Opts: (null)
|
||||
>
|
||||
> So c9274d8 is clearly messing up the calculation of the checksum.
|
||||
>
|
||||
> The problem becomes more evident if we add more printk()s to the old
|
||||
> code, so we can see what region is being checksummed:
|
||||
>
|
||||
> # mount /dev/vda /new-root
|
||||
> [ 6.827297] inode 8: unadjusted csum of 256 bytes with seed a5df92a7: 449a5c50
|
||||
> [ 6.827596] adjusted csum: 5c50
|
||||
> [ 6.835993] inode 2: unadjusted csum of 256 bytes with seed 759c6c33: d6ea92e9
|
||||
> [ 6.836173] adjusted csum: d6ea92e9
|
||||
> [ 6.844801] EXT4-fs (vda): mounted filesystem with ordered data mode. Opts:
|
||||
>
|
||||
> and the new:
|
||||
>
|
||||
> [ 11.098013] inode 8: csum of first 124 bytes with seed a5df92a7: f375b663
|
||||
> [ 11.098205] inode 8: added csum of 2 dummy_csum bytes with seed a5df92a7: 20cfebcb
|
||||
> [ 11.098420] inode 8: added csum of 2 bytes from offset 126 -- 128 to existing: d79e7432
|
||||
> [ 11.098646] inode 8: > GOOD_OLD_INODE_SIZE; added csum of 2 bytes from 128 -- 130 to existing: d10936e1
|
||||
> [ 11.098890] 8: adjusted csum: 36e1
|
||||
> [ 11.099133] EXT4-fs error (device vda): ext4_iget:4483: inode #8: comm mount: checksum invalid
|
||||
>
|
||||
> We are not checksumming enough bytes! We used to checksum the entire
|
||||
> 256-byte inode: now, we checksum only 130 bytes of it, which isn't even
|
||||
> enough to cover the 28-byte extra_isize on this filesystem and is more
|
||||
> or less guaranteed to give the wrong answer. I'd fix the problem, but I
|
||||
> frankly can't see how the new code is meant to be equivalent to the old
|
||||
> code in any sense -- most particularly what the stuff around dummy_csum
|
||||
> is meant to do -- so I thought it better to let the people who wrote it
|
||||
> fix it :)
|
||||
|
||||
Sh*t, I missed this during the review. So your filesystem image (thank
|
||||
you!) had this to say:
|
||||
|
||||
debugfs> stats
|
||||
Inode size: 256
|
||||
debugfs> stat <8>
|
||||
Size of extra inode fields: 0
|
||||
|
||||
Basically, a 128-byte inode inside a filesystem that allocated 256 bytes
|
||||
for each inode. As you point out, the old code would checksum the entire
|
||||
allocated space, whether or not the inode core used it. Obviously, you
|
||||
want this since inline extended attributes live in that space:
|
||||
|
||||
csum = ext4_chksum(sbi, ei->i_csum_seed, (__u8 *)raw,
|
||||
EXT4_INODE_SIZE(inode->i_sb));
|
||||
|
||||
The new code, on the other hand, carefully checksums around the
|
||||
i_checksum fields and only bothers to checksum the space between the end
|
||||
of i_checksum_hi and the end of the allocated space if the inode core is
|
||||
big enough to store i_checksum_hi. Since we allocated 256 bytes for
|
||||
each inode, we checksum the first two bytes after byte 128
|
||||
(EXT4_GOOD_OLD_INODE_SIZE), but then we see that i_extra_size == 0 so we
|
||||
never bother to checksum anything after that. This is of course wrong
|
||||
since we no longer checksum the xattr space and we've deviated from the
|
||||
pre-4.7.4 (documented) on-disk format.
|
||||
|
||||
*FORTUNATELY* since the root inode fails the read verifier, the file (in
|
||||
this case the root dir) can't be modified and therefore nothing has been
|
||||
corrupted. Especially fortunate for you, the fs won't mount, reducing
|
||||
the chances that any serious damage has occurred.
|
||||
|
||||
I /think/ the fix in this case is to hoist the last ext4_chksum call
|
||||
out of the EXT4_FITS_IN_INODE blob:
|
||||
|
||||
if (EXT4_INODE_SIZE(inode->i_sb) > EXT4_GOOD_OLD_INODE_SIZE) {
|
||||
offset = offsetof(struct ext4_inode, i_checksum_hi);
|
||||
csum = ext4_chksum(sbi, csum, (__u8 *)raw +
|
||||
EXT4_GOOD_OLD_INODE_SIZE,
|
||||
offset - EXT4_GOOD_OLD_INODE_SIZE);
|
||||
if (EXT4_FITS_IN_INODE(raw, ei, i_checksum_hi)) {
|
||||
csum = ext4_chksum(sbi, csum, (__u8 *)&dummy_csum,
|
||||
csum_size);
|
||||
offset += csum_size;
|
||||
}
|
||||
csum = ext4_chksum(sbi, csum, (__u8 *)raw + offset,
|
||||
EXT4_INODE_SIZE(inode->i_sb) - offset);
|
||||
}
|
||||
|
||||
Can you give that a try?
|
||||
|
||||
> tune2fs output for this filesystem, particularly the extra_isize and
|
||||
> inode size fields are likely relevant:
|
||||
>
|
||||
> tune2fs 1.43.1 (08-Jun-2016)
|
||||
> Filesystem volume name: root
|
||||
> Last mounted on: /
|
||||
> Filesystem UUID: 6c0f7fa7-d6c2-4054-bff3-3a878460bdc7
|
||||
> Filesystem magic number: 0xEF53
|
||||
> Filesystem revision #: 1 (dynamic)
|
||||
> Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
|
||||
> Filesystem flags: signed_directory_hash
|
||||
> Default mount options: (none)
|
||||
> Filesystem state: clean
|
||||
> Errors behavior: Continue
|
||||
> Filesystem OS type: Linux
|
||||
> Inode count: 65536
|
||||
> Block count: 262144
|
||||
> Reserved block count: 13107
|
||||
> Free blocks: 227009
|
||||
> Free inodes: 59499
|
||||
> First block: 0
|
||||
> Block size: 4096
|
||||
> Fragment size: 4096
|
||||
> Group descriptor size: 64
|
||||
> Reserved GDT blocks: 63
|
||||
> Blocks per group: 32768
|
||||
> Fragments per group: 32768
|
||||
> Inodes per group: 8192
|
||||
> Inode blocks per group: 512
|
||||
> RAID stripe width: 16
|
||||
> Flex block group size: 64
|
||||
> Filesystem created: Tue May 26 21:28:46 2009
|
||||
> Last mount time: Sun Sep 18 23:34:41 2016
|
||||
> Last write time: Mon Sep 19 13:51:59 2016
|
||||
> Mount count: 0
|
||||
> Maximum mount count: 36
|
||||
> Last checked: Mon Sep 19 13:51:59 2016
|
||||
> Check interval: 15552000 (6 months)
|
||||
> Next check after: Sat Mar 18 12:51:59 2017
|
||||
> Lifetime writes: 16 GB
|
||||
> Reserved blocks uid: 0 (user root)
|
||||
> Reserved blocks gid: 0 (group root)
|
||||
> First inode: 11
|
||||
> Inode size: 256
|
||||
> Required extra isize: 28
|
||||
> Desired extra isize: 28
|
||||
> Journal inode: 8
|
||||
> Default directory hash: half_md4
|
||||
> Directory Hash Seed: f1da2da0-057e-4ba0-a021-3d56db5b24ab
|
||||
> Journal backup: inode blocks
|
||||
> Checksum type: crc32c
|
||||
> Checksum: 0x92acf115
|
||||
>
|
||||
> This is an old, upgraded fs from before the days of checksums, but even
|
||||
> so I'm surprised that with a 256-byte inode and no xattrs in use,
|
||||
> EXT4_FITS_IN_INODE is false. Maybe the extra_isize isn't big enough?
|
||||
|
||||
It's zero, so yes. :)
|
||||
|
||||
> An lzipped e2image of the problematic filesystem is available from
|
||||
> <http://www.esperi.org.uk/~nix/temporary/csum-corruption.img.lz>:
|
||||
> I have verified that the problem recurs with this image.
|
||||
>
|
||||
> I can also replicate the problem in literally seconds if you need more
|
||||
> debugging output.
|
||||
>
|
||||
>
|
||||
> ... The mystery is why this isn't going wrong anywhere else: I have
|
||||
> metadata_csum working on every fs on a bunch of other ext4-using
|
||||
> systems, and indeed on every filesystem on this machine as well, as long
|
||||
> as c9274d8 is not applied. Many of them are similarly upgraded pre-csum
|
||||
> fses with the same inode size and extra_isize, but they work...
|
||||
|
||||
Hard to say, but this bug only affects inodes with 0 < i_extra_size <= 4
|
||||
i.e. 128 < inode-core-size <= 130. Maybe an old ext3 fs that was
|
||||
created with 256 bytes per inode but inode-core-size of 128?
|
||||
|
||||
Uck. Sorry about this mess.
|
||||
|
||||
--D
|
||||
|
||||
[bwh: Converted to a patch]
|
||||
---
|
||||
--- a/fs/ext4/inode.c
|
||||
+++ b/fs/ext4/inode.c
|
||||
@@ -71,10 +71,9 @@ static __u32 ext4_inode_csum(struct inod
|
||||
csum = ext4_chksum(sbi, csum, (__u8 *)&dummy_csum,
|
||||
csum_size);
|
||||
offset += csum_size;
|
||||
- csum = ext4_chksum(sbi, csum, (__u8 *)raw + offset,
|
||||
- EXT4_INODE_SIZE(inode->i_sb) -
|
||||
- offset);
|
||||
}
|
||||
+ csum = ext4_chksum(sbi, csum, (__u8 *)raw + offset,
|
||||
+ EXT4_INODE_SIZE(inode->i_sb) - offset);
|
||||
}
|
||||
|
||||
return csum;
|
|
@ -60,6 +60,7 @@ bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
|
|||
bugfix/all/disable-some-marvell-phys.patch
|
||||
bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
|
||||
bugfix/all/kbuild-do-not-use-hyphen-in-exported-variable-name.patch
|
||||
bugfix/all/ext4-fix-bug-838544.patch
|
||||
|
||||
# Miscellaneous features
|
||||
|
||||
|
|
|
@ -202,7 +202,6 @@ ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
|
|||
dh_installdocs $(INSTALLDOCS_ARGS)
|
||||
endif
|
||||
dh_installchangelogs
|
||||
dh_strip
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
dh_installdeb
|
||||
|
@ -399,7 +398,12 @@ install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR):
|
|||
dh_testroot
|
||||
dh_prep
|
||||
dh_installdirs 'boot'
|
||||
ifeq ($(IMAGE_FILE),vmlinux)
|
||||
# This is the unprocessed ELF image, so we need to strip debug symbols
|
||||
$(CROSS_COMPILE)objcopy --strip-debug '$(DIR)/vmlinux' $(INSTALL_DIR)/$(IMAGE_INSTALL_STEM)-$(REAL_VERSION)
|
||||
else
|
||||
install -m644 '$(DIR)/$(IMAGE_FILE)' $(INSTALL_DIR)/$(IMAGE_INSTALL_STEM)-$(REAL_VERSION)
|
||||
endif
|
||||
+$(MAKE_SELF) \
|
||||
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_dt \
|
||||
DIR='$(DIR)' PACKAGE_DIR='$(PACKAGE_DIR)' REAL_VERSION='$(REAL_VERSION)'
|
||||
|
@ -418,6 +422,7 @@ endif
|
|||
+$(MAKE_SELF) \
|
||||
install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_bug \
|
||||
PACKAGE_DIR='$(PACKAGE_DIR)' PACKAGE_NAME='$(PACKAGE_NAME)' REAL_VERSION='$(REAL_VERSION)'
|
||||
dh_strip --no-automatic-dbgsym
|
||||
+$(MAKE_SELF) install-base GENCONTROL_ARGS='-Vkernel:Recommends='"$$( \
|
||||
if grep -q '^CONFIG_SMP=y' $(DIR)/.config; then \
|
||||
printf irqbalance,; \
|
||||
|
|
Loading…
Reference in New Issue