GIT: wrapfs-3.14.y -- Wrapfs: update copyright year to 2015 (push to branch refs/heads/master)
ezk at fsl.cs.sunysb.edu
ezk at fsl.cs.sunysb.edu
Sun Dec 13 18:45:30 EST 2015
Push to branch refs/heads/master:
cc2f45a3dbd437fee315f7d83471107185fab1e3 -->
24237ab540976449a4c54b84b9d84fca94282b28
Documentation/filesystems/00-INDEX | 3 +
Documentation/filesystems/wrapfs.txt | 172 ++++++
MAINTAINERS | 9 +
Makefile | 2 +-
arch/arm/common/edma.c | 6 +-
arch/arm/mm/dma-mapping.c | 7 +
arch/arm/plat-orion/common.c | 2 +-
arch/arm64/include/asm/ptrace.h | 16 +-
arch/arm64/kernel/stacktrace.c | 6 +-
arch/powerpc/kernel/rtas.c | 3 +
arch/x86/kernel/cpu/common.c | 3 +-
arch/x86/kernel/head_64.S | 8 +
arch/x86/kernel/setup.c | 8 +
arch/x86/kernel/verify_cpu.S | 12 +-
arch/x86/xen/enlighten.c | 6 +-
crypto/ablkcipher.c | 2 +-
crypto/algapi.c | 2 +-
crypto/api.c | 6 +-
crypto/crypto_user.c | 2 +-
drivers/block/rbd.c | 67 ++-
drivers/block/xen-blkfront.c | 3 +-
drivers/bluetooth/ath3k.c | 4 +
drivers/bluetooth/btusb.c | 2 +
drivers/gpu/drm/i915/intel_display.c | 2 +
drivers/gpu/drm/nouveau/nouveau_gem.c | 5 +-
drivers/gpu/drm/radeon/radeon.h | 1 +
drivers/gpu/drm/radeon/radeon_pm.c | 35 +-
drivers/infiniband/core/cm.c | 10 +-
drivers/iommu/amd_iommu.c | 4 +-
drivers/iommu/amd_iommu_types.h | 1 +
drivers/md/md.c | 3 +-
drivers/md/persistent-data/dm-btree-remove.c | 17 +-
drivers/md/persistent-data/dm-btree.c | 2 +-
drivers/md/raid1.c | 2 +-
drivers/md/raid10.c | 2 +-
drivers/md/raid5.c | 6 +-
drivers/net/can/sja1000/sja1000.c | 3 +
drivers/net/ethernet/marvell/mvneta.c | 2 +-
drivers/net/ethernet/mellanox/mlx4/cmd.c | 2 +-
drivers/net/ethernet/mellanox/mlx4/eq.c | 2 +-
drivers/net/ethernet/sfc/selftest.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 7 +-
drivers/net/macvtap.c | 2 +-
drivers/net/ppp/pppoe.c | 2 +-
drivers/net/virtio_net.c | 4 +-
drivers/net/wireless/ath/ath9k/init.c | 1 +
drivers/net/wireless/iwlwifi/dvm/lib.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-7000.c | 2 +-
drivers/net/wireless/iwlwifi/mvm/d3.c | 12 +-
drivers/net/wireless/iwlwifi/pcie/drv.c | 5 +
drivers/net/wireless/mwifiex/debugfs.c | 14 +-
drivers/power/bq24190_charger.c | 2 +-
drivers/scsi/mvsas/mv_sas.c | 2 +
drivers/spi/spi-gpio.c | 2 +-
drivers/staging/iio/adc/mxs-lradc.c | 9 +-
drivers/staging/rtl8712/usb_intf.c | 1 +
drivers/tty/serial/8250/8250_pci.c | 46 +-
drivers/usb/class/usblp.c | 2 +-
drivers/usb/host/xhci-pci.c | 1 +
drivers/usb/host/xhci-ring.c | 20 +-
drivers/usb/musb/musb_core.c | 10 +-
drivers/usb/serial/option.c | 11 +
drivers/usb/serial/ti_usb_3410_5052.c | 2 +
drivers/usb/serial/ti_usb_3410_5052.h | 4 +
drivers/vhost/scsi.c | 6 +-
fs/Kconfig | 1 +
fs/Makefile | 1 +
fs/wrapfs/Kconfig | 8 +
fs/wrapfs/Makefile | 7 +
fs/wrapfs/dentry.c | 49 ++
fs/wrapfs/file.c | 379 +++++++++++++
fs/wrapfs/inode.c | 584 +++++++++++++++++++++
fs/wrapfs/lookup.c | 304 +++++++++++
fs/wrapfs/main.c | 174 ++++++
fs/wrapfs/mmap.c | 94 ++++
fs/wrapfs/super.c | 168 ++++++
fs/wrapfs/wrapfs.h | 206 ++++++++
include/linux/namei.h | 2 +
include/net/inet_common.h | 3 +-
include/sound/wm8904.h | 2 +-
include/uapi/linux/magic.h | 2 +
kernel/module.c | 8 +-
mm/filemap.c | 9 +-
net/bluetooth/hidp/core.c | 14 +
net/core/dst.c | 2 +-
net/ipv4/ipmr.c | 6 +-
net/irda/irlmp.c | 2 +-
net/mac80211/mlme.c | 2 +-
net/packet/af_packet.c | 80 +--
net/rds/connection.c | 6 +
net/rds/tcp_recv.c | 11 +-
sound/usb/midi.c | 46 ++
sound/usb/quirks-table.h | 11 +
sound/usb/quirks.c | 1 +
sound/usb/usbaudio.h | 1 +
95 files changed, 2616 insertions(+), 188 deletions(-)
commit 24237ab540976449a4c54b84b9d84fca94282b28
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 3 23:35:30 2015 -0500
Wrapfs: update copyright year to 2015
commit 3cdff07138ef5601d9877609cf7e6abf477b87ff
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 3 23:35:30 2015 -0500
Wrapfs: use vfs xattr helpers
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 3dbf19d195c7ea7e86e7bad5089bb94296b13168
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Aug 15 22:56:54 2014 -0400
Wrapfs: properly copy meta-data after AIO operations from lower inode
Signed-off-by: Mengyang Li <li.mengyang at stonybrook.edu>
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit b048094067f0cb94b5dbb56476c887cac138011a
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Aug 11 18:30:05 2014 -0400
Wrapfs: leave placeholders for updating upper inode after AIO
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit f414015caa4d2124b5e2c4ee957f91b95d95dee9
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Sun Aug 10 00:59:12 2014 -0400
Wrapfs: protect lower_file by ref-count during aio operation
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
Signed-off-by: Mengyang Li <li.mengyang at stonybrook.edu>
commit 7323960c8e879222b3f728543496ad8221238c71
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Wed Jun 25 22:40:51 2014 -0400
Wrapfs: fix ->llseek to update upper and lower offsets
Fixes bug: xfstests generic/257. f_pos consistently is required by and
only by dir_ops->wrapfs_readdir, main_ops is not affected.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
Signed-off-by: Mengyang Li <li.mengyang at stonybrook.edu>
commit c85839ba1b445ebf691d3c238e10c9ce5a5265fb
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Wed Jun 25 22:40:51 2014 -0400
Wrapfs: support extended attributes (xattr) operations
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
Signed-off-by: Mengyang Li <li.mengyang at stonybrook.edu>
commit 2d771517222dd145d13dcf680c1c2d5b5287a734
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Jun 20 20:03:07 2014 -0400
Wrapfs: support asynchronous-IO (AIO) operations
Signed-off-by: Li Mengyang <li.mengyang at stonybrook.edu>
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 46f8cb82677282bae98da1179249e6b383f5cc09
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Jun 20 20:03:07 2014 -0400
Wrapfs: support direct-IO (DIO) operations
Signed-off-by: Li Mengyang <li.mengyang at stonybrook.edu>
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 41e913b0fb80f9c599788283be2884724ae1dfb2
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Thu May 15 00:16:03 2014 -0400
Wrapfs: implement vm_ops->page_mkwrite
Some file systems (e.g., ext4) require it. Reported by Ted Ts'o.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit d3bdf0056b6fa6a0d15ea00981d1f2a1c4a551a2
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Thu Apr 3 13:24:28 2014 -0400
Wrapfs: update documentation
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit c969e6596a27baabfc10522e144a5e98ff9620f9
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Thu Apr 3 13:17:55 2014 -0400
Wrapfs: update maintainers
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit ca14716f28e6f6baf2535b0acba53ba157d642a9
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jan 21 03:03:00 2014 -0500
Wrapfs: update documentation
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit c00928763d93bd1ca4a5001abc2ab5520f779607
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jan 21 01:25:54 2014 -0500
Wrapfs: 2014 Copyright update
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit b4e9d17d772650c3160a2ea67cbfe2a65222f93d
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 26 23:05:22 2013 -0500
Wrapfs: use generic put_link helper
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 0b5190ca0f0e40c9bad1a73dbc406d1afe536f2d
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 26 23:03:46 2013 -0500
Wrapfs: remove unnecessary initializations
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit af2f4cebda93a50fa6e2386793f3860005b16c34
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Sun Nov 24 11:12:07 2013 -0500
Wrapfs: remove deprecated init_lower_nd
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 64bc06a93ea54a69d9a8cd472c94c411c18357b9
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 19:00:00 2013 -0500
Wrapfs: update MAINTAINERS info
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit f45b7bc9db3f5b6cd1705c9e72d6f0746ff5a424
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 18:59:47 2013 -0500
patch wrapfs-copyright-update.patch
commit efeaf4f970f2acac89bef0644e57048f82002de8
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 17:23:31 2013 -0500
Wrapfs: use DCACHE_OP_REVALIDATE flag in ->d_revalidate
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 02212ca6e131179612d6b0f916adb1c3d906683f
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 17:22:31 2013 -0500
Wrapfs: implement ->getattr
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 4ec53311480d9949c52f42b390e6471087f14f81
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 17:21:31 2013 -0500
Wrapfs: use file_inode helper
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 886305c409eb315d86f6bf7f72059ada3cf1c0e0
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 17:20:31 2013 -0500
Wrapfs: call filemap_write_and_wait in ->flush
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 6138d55ae9f98f68e00aea7e175f60654d6871e0
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 17:19:31 2013 -0500
Wrapfs: handle new VFS API with delegation support
For now, wrapfs isn't supporting NFS delegations.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 0f5aba84c619f7b8a0630193438cc305d51d7e01
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 17:18:31 2013 -0500
VFS: export vfs_path_lookup
In 3.12, this useful function was unexported: wrapfs needs a way to lookup
relative to a struct path and use a proper vfsmount, unlike lookup_one_len.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit ca0e0abf3c95eafd1b817c8bbcaeb6d0390152f7
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Nov 19 17:17:31 2013 -0500
Wrapfs: ->readdir op now ->iterate
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 68f1361a3ca96e462488daf3801a19525c7bccbb
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Wed Jun 5 01:36:58 2013 -0400
Wrapfs: copy lower inode attributes in ->ioctl
Some ioctls (e.g., EXT2_IOC_SETFLAGS) can change inode attributes, so copy
them from lower inode.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 86def459d17e49d0c754d58458e5b2e9efd4fd7f
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Wed Jun 5 01:36:58 2013 -0400
Wrapfs: remove unnecessary call to vm_unmap in ->mmap
Code is unnecessary and causes deadlocks in newer kernels.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 1078943f84f872c07d11f6b4d600c1d4e84cee38
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:32 2013 -0400
Wrapfs: declare MODULE_ALIAS_FS
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit bdc59cbe67ec95651614f150adc74d1a9b81c410
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:32 2013 -0400
Wrapfs: don't use FS_REVAL_DOT in fs_flags
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit b5f013213a3059253ecd56ce8284c8241cea0e9e
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:31 2013 -0400
Wrapfs: remove dependency on now-defunct CONFIG_EXPERIMENTAL
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 3a90970d8d8936d04536a0405d826053e3d0843e
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:31 2013 -0400
Wrapfs: dentry_open() no longer does mntput/dput
We need to grab a reference on the path before dentry_open, and drop it
after.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 4c586bf086b05d9ae5fcf95afed5b72b383ed65b
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:30 2013 -0400
Wrapfs: no need to call mnt_want_write any longer
Apparently this is now being done by the VFS.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 4b4c458bc61237dd3022dfc04d339f9a0b103271
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:30 2013 -0400
Wrapfs: remove VM_CAN_NONLINEAR flag use in ->mmap
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit aba69d90689a5227b232de13a2d32172dfaa1675
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:29 2013 -0400
Wrapfs: ->lookup takes flags not a nameidata
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 4083ac987c4e817a6f9638768caabb7695661686
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:29 2013 -0400
Wrapfs: ->create no longer takes a nameidata, only a flag
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit bf7af7568e7de4ce641916c0d1565611937eb28b
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:29 2013 -0400
Wrapfs: ->d_revalidate now takes namei flags, not nameidata
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 53b3466ac418f1d1f2ef5b6f0750d18b7a099fbe
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:28 2013 -0400
Wrapfs: struct nameidata no longer has an open-intent data
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit aa0fc519351f20df28a1c7080ea4603457ffcd1a
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:28 2013 -0400
Wrapfs: dentry_open now takes a struct path
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit cc93f9dd1648f79bc17b648577c46e84471f9223
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:27 2013 -0400
Wrapfs: use vm_munmap in ->mmap
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 73890c8b6e6cccf7dfc1f3ad054dddfe4691c3aa
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:27 2013 -0400
Wrapfs: use clear_inode in evict_inode
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit bfb435a64f36ec5595ed43510605209f687eebf9
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jun 4 23:19:26 2013 -0400
Wrapfs: use d_make_root
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 81a88f36a100c032bee44f3e98a1b012da6fc358
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jan 31 04:40:19 2012 -0500
Wrapfs: use mode_t
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit e5b036830f0e2d257ec3c995a8c49229c38fc3d8
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Sun Jan 29 20:34:27 2012 -0500
Wrapfs: use set_nlink()
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit c719bef12dc45b2a1400adb7bc93b2efe448308d
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Sep 9 00:47:49 2011 -0400
Wrapfs: drop our dentry in ->rmdir
Also clear nlinks on our inode.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 43f00436683c0040fa3dad51231841e18e298102
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Sep 6 00:10:32 2011 -0400
Wrapfs: use d_alloc_root
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit dc5c12a26123cd16e386a051119d7f9ed98bb5c7
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Sep 6 00:10:31 2011 -0400
Wrapfs: use d_set_d_op
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit e98db037cd92ffd446869b814d51e43d75d5a70f
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Sep 6 00:10:30 2011 -0400
Wrapfs: use updated vfs_path_lookup prototype
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit a262054292dcef3b8dd3e5212ddbe1e255761784
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Sep 6 00:10:30 2011 -0400
Wrapfs: ->fsync updates for new prototype
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 61abd5302d982cb2f2251f5a55c063c38e8ee828
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Sep 6 00:10:29 2011 -0400
Wrapfs: support LOOKUP_RCU in ->d_revalidate
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit cfa0370e1616bfa071305a923b91fde9dc288008
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Sep 6 00:10:28 2011 -0400
Wrapfs: new ->permission prototype and fixes.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 1e328ce3f78ccdb7d88c2dff15e564a4b639e4a9
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon May 2 02:00:02 2011 -0400
Wrapfs: lookup fixes
Don't use lookup_one_len any longer (doesn't work for NFS).
Initialize lower wrapfs_dentry_info so lower_path is NULL.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 7d47c65775b5d7838fc2a42e6b8d4b345ce35257
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Mar 18 13:14:28 2011 -0400
Wrapfs: remove extra debug in rmdir
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit f4d0218c6316083c603aa91f5cddabd31e9c873b
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Mar 18 12:38:01 2011 -0400
Wrapfs: checkpatch fixes
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 7ac8a4242b4da591c1c3d7be390fa86045f12ce4
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Mar 18 00:45:17 2011 -0400
Wrapfs: port to 2.6.39
Remove lock/unlock_kernel in ->fasync.
Convert from ->get_sb to ->mount op.
Remove include to smp_lock.h, added sched.h.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit d5fa65feaa8302353109d5dc430dd465fa255db0
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Thu Mar 17 23:21:55 2011 -0400
Wrapfs: copyright update for 2011
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit dddb8f59b50cac219ae0fd43c911d11db8e1950d
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Thu Mar 17 23:21:55 2011 -0400
Wrapfs: better handling of NFS silly-renamed files
In ->unlink, if we try to unlink an NFS silly-renamed file, NFS returns
-EBUSY. We have to treat it as a success and return 0 to the VFS. NFS will
remove silly-deleted files later on anyway.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit fde2b08c0940ce7d2e11f55582c798f1c05d29bc
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Thu Mar 17 23:21:55 2011 -0400
Wrapfs: update parent directory inode size in inode ops
After ->unlink, ->rmdir, and ->rename, we need to copy the (possibly
changed) inode size of the parent directory(ies) where the operation took
place.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit d54217bc1ab482cb8f53d70938a46a7341690095
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Thu Mar 17 23:21:55 2011 -0400
Wrapfs: remove unnecessary calls to copy lower inode->n_links
Removed from ->create, ->symlink, and ->mknod.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 3cf580b2151075e5d817062a688d4ca21cb78b5f
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Mar 7 23:20:33 2011 -0500
Wrapfs: ->setattr fixes
Call inode_change_ok on our inode, not lower.
Don't copy inode sizes (VFS does it).
Pass lower file in struct iattr passed to notify_change on lower inode.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 1810fd546790e62aa4467dd0b80de77ee868940f
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Sun Mar 6 16:23:16 2011 -0500
Wrapfs: update ->permission prototye and code for new iperm flag
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit d4528946157ec40de193b918d4956d09b9947409
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Nov 12 18:15:05 2010 -0500
Wrapfs: handle maxbytes properly
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit c98cafa24e5e5f58434fa505f4893545d00e2f78
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Sat Sep 11 15:49:33 2010 -0400
Wrapfs: support ->unlocked_ioctl and ->compat_ioctl
Old ->ioctl was split into ->unlocked_ioctl and ->compat_ioctl. Compat
version doesn't need to lock_kernel any longer.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 9a40273ff46bfd90271c16882c2ff50b0c37d5c0
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Aug 10 23:50:14 2010 -0400
Wrapfs: new vfs_statfs and ->evict_inode prototypes
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit cd673bf430b0dda34d111317b42c15babca52e5a
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Aug 6 23:37:29 2010 -0400
Wrapfs: update ->fsync prototype
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit fcb4f1a638ca12033092f740ca71b8fb9351e47b
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Apr 20 21:22:02 2010 -0400
Wrapfs: update documentation
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 38c1dffdd9583edab9dd6b23e4f79e30a1bb0528
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Apr 20 15:32:09 2010 -0400
Wrapfs: include slab.h
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit bb796b5f450b29d0a76bf1247891474f741abb81
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Apr 20 15:26:02 2010 -0400
Wrapfs: avoid an extra path_get/put pair in wrapfs_open
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit b678f477c0c46edca400813dcbf387a71bdfc57c
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Fri Feb 26 03:18:04 2010 -0500
Wrapfs: decrement nd_path on follow_link error
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit ff79e902bcba97704785a1d930c1e21e21d5c3cb
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Tue Jan 5 04:27:00 2010 -0500
Wrapfs: don't mention kernel version in modload message
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit a4c5b5f1f155959c0b1eda3a84a84326f4c69b00
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Kconfig: hook to configure Wrapfs
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 989e51007b5102ec022601d7ec60b05d66c16a42
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Makefile: hook to compile Wrapfs
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit f7ba430d529c430e3156b60989574edd6fcc2248
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: file system magic number
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 76f1b443a5b9683ee8fc5dcbdc8c4e40718a54ea
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: Kconfig options
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 66bafe4d60cb8f6f87112818a89a243e173baa94
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: main Makefile
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 6f2432e9413dfbb11151efc2fd8b8270502a33fb
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: vm_ops operations
Includes necessary address_space workaround ops.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 0f6a7dbacf483f2fedd2ac3ec7aaf496e740b837
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: mount-time and module-linkage functions
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit a177713f2e1dc1b3d2f0a7aaa1d0c8e4af6084c3
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: lookup-related functions
Main lookup function, nameidata helpers, and stacking-interposition
functions.
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit f37335eb3fea42e8c1513bc41d132f2ea74f2449
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: file operations
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 863ee6455f9918c59f0796c444aa81884667d357
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: dentry operations
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 6c930215cdbbf649d890499542bcc31eb5a5239f
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: inode operations
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit f64616760d15f3b5b5b32530012d7d6fbffc9dfe
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: superblock operations
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit c2bc67629f7f256a3f8f61b9c57c66e0bf62dc42
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: main header file
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 7fa2629824f6bf55dede85133581261ba601316d
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: Maintainers
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 222115baf93d3b8b2792c45ad4512ec30bf47285
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Documentation: index entry for Wrapfs
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit c4edebe4d634f733ffbbb818cceb3f0fc1e1d55b
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date: Mon Jan 4 20:45:06 2010 -0500
Wrapfs: introduction and usage documentation
Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>
commit 5d7b0fcc26d66db767a477574effc764022c19ac
Author: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
Date: Wed Dec 9 13:43:38 2015 -0500
Linux 3.14.58
commit b42629a7bbf8a820fdbb56a55bbd687266ee3775
Author: Clemens Ladisch <clemens at ladisch.de>
Date: Sun Nov 15 22:39:08 2015 +0100
ALSA: usb-audio: work around CH345 input SysEx corruption
commit a91e627e3f0ed820b11d86cdc04df38f65f33a70 upstream.
One of the many faults of the QinHeng CH345 USB MIDI interface chip is
that it does not handle received SysEx messages correctly -- every second
event packet has a wrong code index number, which is the one from the last
seen message, instead of 4. For example, the two messages "FE F0 01 02 03
04 05 06 07 08 09 0A 0B 0C 0D 0E F7" result in the following event
packets:
correct: CH345:
0F FE 00 00 0F FE 00 00
04 F0 01 02 04 F0 01 02
04 03 04 05 0F 03 04 05
04 06 07 08 04 06 07 08
04 09 0A 0B 0F 09 0A 0B
04 0C 0D 0E 04 0C 0D 0E
05 F7 00 00 05 F7 00 00
A class-compliant driver must interpret an event packet with CIN 15 as
having a single data byte, so the other two bytes would be ignored. The
message received by the host would then be missing two bytes out of six;
in this example, "F0 01 02 03 06 07 08 09 0C 0D 0E F7".
These corrupted SysEx event packages contain only data bytes, while the
CH345 uses event packets with a correct CIN value only for messages with
a status byte, so it is possible to distinguish between these two cases by
checking for the presence of this status byte.
(Other bugs in the CH345's input handling, such as the corruption resulting
from running status, cannot be worked around.)
Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
Signed-off-by: Takashi Iwai <tiwai at suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
commit d1f4bf8d843595e0ab08428cbcb063e4d5cba2ef
Author: Clemens Ladisch <clemens at ladisch.de>
Date: Sun Nov 15 22:38:29 2015 +0100
ALSA: usb-audio: prevent CH345 multiport output SysEx corruption
commit 1ca8b201309d842642f221db7f02f71c0af5be2d upstream.
The CH345 USB MIDI chip has two output ports. However, they are
multiplexed through one pin, and the number of ports cannot be reduced
even for hardware that implements only one connector, so for those
devices, data sent to either port ends up on the same hardware output.
This becomes a problem when both ports are used at the same time, as
longer MIDI commands (such as SysEx messages) are likely to be
interrupted by messages from the other port, and thus to get lost.
It would not be possible for the driver to detect how many ports the
device actually has, except that in practice, _all_ devices built with
the CH345 have only one port. So we can just ignore the device's
descriptors, and hardcode one output port.
Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
Signed-off-by: Takashi Iwai <tiwai at suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
commit 840ff74ffc06b2a1792226bd0234708cbab60eb7
Author: Clemens Ladisch <clemens at ladisch.de>
Date: Sun Nov 15 22:37:44 2015 +0100
ALSA: usb-audio: add packet size quirk for the Medeli DD305
commit 98d362becb6621bebdda7ed0eac7ad7ec6c37898 upstream.
Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
Signed-off-by: Takashi Iwai <tiwai at suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
commit ba3b1e0ea1c8bf8632ebbfe09459b73debdc0a96
Author: Bjørn Mork <bjorn at mork.no>
Date: Wed Nov 18 21:12:33 2015 +0100
USB: option: add XS Stick W100-2 from 4G Systems
commit 638148e20c7f8f6e95017fdc13bce8549a6925e0 upstream.
Thomas reports
"
4gsystems sells two total different LTE-surfsticks under the same name.
..
The newer version of XS Stick W100 is from "omega"
..
Under windows the driver switches to the same ID, and uses MI03\6 for
network and MI01\6 for modem.
..
echo "1c9e 9b01" > /sys/bus/usb/drivers/qmi_wwan/new_id
echo "1c9e 9b01" > /sys/bus/usb-serial/drivers/option1/new_id
T: Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 4 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1c9e ProdID=9b01 Rev=02.32
S: Manufacturer=USB Modem
S: Product=USB Modem
S: SerialNumber=
C: #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I: If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
I: If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
Now all important things are there:
wwp0s29f7u2i3 (net), ttyUSB2 (at), cdc-wdm0 (qmi), ttyUSB1 (at)
There is also ttyUSB0, but it is not usable, at least not for at.
The device works well with qmi and ModemManager-NetworkManager.
"
Reported-by: Thomas Schäfer <tschaefer at t-online.de>
Signed-off-by: Bjørn Mork <bjorn at mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
commit 0e95c29aa898ed05e638b96c9a273d7dcddaf727
Author: Aleksander Morgado <aleksander at aleksander.es>
Date: Wed Nov 11 19:51:40 2015 +0100
USB: serial: option: add support for Novatel MiFi USB620L
commit e07af133c3e2716db25e3e1e1d9f10c2088e9c1a upstream.
Also known as Verizon U620L.
The device is modeswitched from 1410:9020 to 1410:9022 by selecting the
4th USB configuration:
$ sudo usb_modeswitch âv 0x1410 âp 0x9020 âu 4
This configuration provides a ECM interface as well as TTYs ('Enterprise
Mode' according to the U620 Linux integration guide).
Signed-off-by: Aleksander Morgado <aleksander at aleksander.es>
Signed-off-by: Johan Hovold <johan at kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
commit 2201da91b2a7b0f5767540116ccaa09c78730087
Author: David Woodhouse <dwmw2 at infradead.org>
Date: Sat Nov 14 16:49:30 2015 +0000
USB: ti_usb_3410_5052: Add Honeywell HGI80 ID
commit 1bcb49e663f88bccee35b8688e6a3da2bea31fd4 upstream.
The Honeywell HGI80 is a wireless interface to the evohome connected
thermostat. It uses a TI 3410 USB-serial port.
Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
Signed-off-by: Johan Hovold <johan at kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
commit 9da23de71e10dcc94e5398aaa7d9d8a0ae1f58e9
Author: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
Date: Fri Oct 23 09:53:50 2015 +0200
usb: musb: core: fix order of arguments to ulpi write callback
commit 705e63d2b29c8bbf091119084544d353bda70393 upstream.
There is a bit of a mess in the order of arguments to the ulpi write
callback. There is
int ulpi_write(struct ulpi *ulpi, u8 addr, u8 val)
in drivers/usb/common/ulpi.c;
struct usb_phy_io_ops {
...
int (*write)(struct usb_phy *x, u32 val, u32 reg);
}
in include/linux/usb/phy.h.
The callback registered by the musb driver has to comply to the latter,
but up to now had "offset" first which effectively made the function
broken for correct users. So flip the order and while at it also
switch to the parameter names of struct usb_phy_io_ops's write.
Fixes: ffb865b1e460 ("usb: musb: add ulpi access operations")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
Signed-off-by: Felipe Balbi <balbi at ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
commit 043c43faae5df411dffe03f79e54d69ddf4eeb3d
Author: Jiri Slaby <jslaby at suse.cz>
Date: Mon Nov 2 10:27:00 2015 +0100
usblp: do not set TASK_INTERRUPTIBLE before lock
commit 19cd80a214821f4b558560ebd76bfb2c38b4f3d8 upstream.
It is not permitted to set task state before lock. usblp_wwait sets
the state to TASK_INTERRUPTIBLE and calls mutex_lock_interruptible.
Upon return from that function, the state will be TASK_RUNNING again.
This is clearly a bug and a warning is generated with LOCKDEP too:
WARNING: CPU: 1 PID: 5109 at kernel/sched/core.c:7404 __might_sleep+0x7d/0x90()
do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffa0c588d0>] usblp_wwait+0xa0/0x310 [usblp]
Modules linked in: ...
CPU: 1 PID: 5109 Comm: captmon Tainted: G W 4.2.5-0.gef2823b-default #1
Hardware name: LENOVO 23252SG/23252SG, BIOS G2ET33WW (1.13 ) 07/24/2012
ffffffff81a4edce ffff880236ec7ba8 ffffffff81716651 0000000000000000
ffff880236ec7bf8 ffff880236ec7be8 ffffffff8106e146 0000000000000282
ffffffff81a50119 000000000000028b 0000000000000000 ffff8802dab7c508
Call Trace:
...
[<ffffffff8106e1c6>] warn_slowpath_fmt+0x46/0x50
[<ffffffff8109a8bd>] __might_sleep+0x7d/0x90
[<ffffffff8171b20f>] mutex_lock_interruptible_nested+0x2f/0x4b0
[<ffffffffa0c588fc>] usblp_wwait+0xcc/0x310 [usblp]
[<ffffffffa0c58bb2>] usblp_write+0x72/0x350 [usblp]
[<ffffffff8121ed98>] __vfs_write+0x28/0xf0
...
Commit 7f477358e2384c54b190cc3b6ce28277050a041b (usblp: Implement the
ENOSPC convention) moved the set prior locking. So move it back after
the lock.
Signed-off-by: Jiri Slaby <jslaby at suse.cz>
Fixes: 7f477358e2 ("usblp: Implement the ENOSPC convention")
Acked-By: Pete Zaitcev <zaitcev at yahoo.com>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
commit 579fdc2ec7e246106142e6504102e2657b7540e4
Author: Robin Murphy <robin.murphy at arm.com>
Date: Thu Oct 22 15:41:52 2015 +0100
arm64: Fix compat register mappings
commit 5accd17d0eb523350c9ef754d655e379c9bb93b3 upstream.
For reasons not entirely apparent, but now enshrined in history, the
architectural mapping of AArch32 banked registers to AArch64 registers
actually orders SP_<mode> and LR_<mode> backwards compared to the
intuitive r13/r14 order, for all modes except FIQ.
Fix the compat_<reg>_<mode> macros accordingly, in the hope of avoiding
subtle bugs with KVM and AArch32 guests.
Signed-off-by: Robin Murphy <robin.murphy at arm.com>
Acked-by: Will Deacon <will.deacon at arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
diff --git a/Makefile b/Makefile
index 2a13d9d..48a4d0b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
VERSION = 3
PATCHLEVEL = 14
-SUBLEVEL = 56
+SUBLEVEL = 58
EXTRAVERSION =
NAME = Remembering Coco
diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
index 5339009..4873697 100644
--- a/arch/arm/common/edma.c
+++ b/arch/arm/common/edma.c
@@ -404,7 +404,8 @@ static irqreturn_t dma_irq_handler(int irq, void *data)
BIT(slot));
if (edma_cc[ctlr]->intr_data[channel].callback)
edma_cc[ctlr]->intr_data[channel].callback(
- channel, EDMA_DMA_COMPLETE,
+ EDMA_CTLR_CHAN(ctlr, channel),
+ EDMA_DMA_COMPLETE,
edma_cc[ctlr]->intr_data[channel].data);
}
} while (sh_ipr);
@@ -458,7 +459,8 @@ static irqreturn_t dma_ccerr_handler(int irq, void *data)
if (edma_cc[ctlr]->intr_data[k].
callback) {
edma_cc[ctlr]->intr_data[k].
- callback(k,
+ callback(
+ EDMA_CTLR_CHAN(ctlr, k),
EDMA_DMA_CC_ERROR,
edma_cc[ctlr]->intr_data
[k].data);
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index 42f2fb8..887b19e 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -1411,12 +1411,19 @@ static int arm_iommu_mmap_attrs(struct device *dev, struct vm_area_struct *vma,
unsigned long uaddr = vma->vm_start;
unsigned long usize = vma->vm_end - vma->vm_start;
struct page **pages = __iommu_get_pages(cpu_addr, attrs);
+ unsigned long nr_pages = PAGE_ALIGN(size) >> PAGE_SHIFT;
+ unsigned long off = vma->vm_pgoff;
vma->vm_page_prot = __get_dma_pgprot(attrs, vma->vm_page_prot);
if (!pages)
return -ENXIO;
+ if (off >= nr_pages || (usize >> PAGE_SHIFT) > nr_pages - off)
+ return -ENXIO;
+
+ pages += off;
+
do {
int ret = vm_insert_page(vma, uaddr, *pages++);
if (ret) {
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
index 830ff07..410e60e 100644
--- a/arch/arm/plat-orion/common.c
+++ b/arch/arm/plat-orion/common.c
@@ -499,7 +499,7 @@ void __init orion_ge00_switch_init(struct dsa_platform_data *d, int irq)
d->netdev = &orion_ge00.dev;
for (i = 0; i < d->nr_chips; i++)
- d->chip[i].mii_bus = &orion_ge00_shared.dev;
+ d->chip[i].mii_bus = &orion_ge_mvmdio.dev;
orion_switch_device.dev.platform_data = d;
platform_device_register(&orion_switch_device);
diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h
index 0e7fa49..428ae6f 100644
--- a/arch/arm64/include/asm/ptrace.h
+++ b/arch/arm64/include/asm/ptrace.h
@@ -71,14 +71,14 @@
#define compat_sp regs[13]
#define compat_lr regs[14]
#define compat_sp_hyp regs[15]
-#define compat_sp_irq regs[16]
-#define compat_lr_irq regs[17]
-#define compat_sp_svc regs[18]
-#define compat_lr_svc regs[19]
-#define compat_sp_abt regs[20]
-#define compat_lr_abt regs[21]
-#define compat_sp_und regs[22]
-#define compat_lr_und regs[23]
+#define compat_lr_irq regs[16]
+#define compat_sp_irq regs[17]
+#define compat_lr_svc regs[18]
+#define compat_sp_svc regs[19]
+#define compat_lr_abt regs[20]
+#define compat_sp_abt regs[21]
+#define compat_lr_und regs[22]
+#define compat_sp_und regs[23]
#define compat_r8_fiq regs[24]
#define compat_r9_fiq regs[25]
#define compat_r10_fiq regs[26]
diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c
index 38f0558..c3b6c63 100644
--- a/arch/arm64/kernel/stacktrace.c
+++ b/arch/arm64/kernel/stacktrace.c
@@ -48,11 +48,7 @@ int unwind_frame(struct stackframe *frame)
frame->sp = fp + 0x10;
frame->fp = *(unsigned long *)(fp);
- /*
- * -4 here because we care about the PC at time of bl,
- * not where the return will go.
- */
- frame->pc = *(unsigned long *)(fp + 8) - 4;
+ frame->pc = *(unsigned long *)(fp + 8);
return 0;
}
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
index c4bc8d6..e6b028d 100644
--- a/arch/powerpc/kernel/rtas.c
+++ b/arch/powerpc/kernel/rtas.c
@@ -1041,6 +1041,9 @@ asmlinkage int ppc_rtas(struct rtas_args __user *uargs)
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
+ if (!rtas.entry)
+ return -EINVAL;
+
if (copy_from_user(&args, uargs, 3 * sizeof(u32)) != 0)
return -EFAULT;
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index e6bddd5..e5194f3 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -280,10 +280,9 @@ __setup("nosmap", setup_disable_smap);
static __always_inline void setup_smap(struct cpuinfo_x86 *c)
{
- unsigned long eflags;
+ unsigned long eflags = native_save_fl();
/* This should have been cleared long ago */
- raw_local_save_flags(eflags);
BUG_ON(eflags & X86_EFLAGS_AC);
if (cpu_has(c, X86_FEATURE_SMAP)) {
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
index a2dc0ad..761fd69 100644
--- a/arch/x86/kernel/head_64.S
+++ b/arch/x86/kernel/head_64.S
@@ -65,6 +65,9 @@ startup_64:
* tables and then reload them.
*/
+ /* Sanitize CPU configuration */
+ call verify_cpu
+
/*
* Compute the delta between the address I am compiled to run at and the
* address I am actually running at.
@@ -174,6 +177,9 @@ ENTRY(secondary_startup_64)
* after the boot processor executes this code.
*/
+ /* Sanitize CPU configuration */
+ call verify_cpu
+
movq $(init_level4_pgt - __START_KERNEL_map), %rax
1:
@@ -288,6 +294,8 @@ ENTRY(secondary_startup_64)
pushq %rax # target address in negative space
lretq
+#include "verify_cpu.S"
+
#ifdef CONFIG_HOTPLUG_CPU
/*
* Boot CPU0 entry point. It's called from play_dead(). Everything has been set
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index ce72964..0407181 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1178,6 +1178,14 @@ void __init setup_arch(char **cmdline_p)
clone_pgd_range(initial_page_table + KERNEL_PGD_BOUNDARY,
swapper_pg_dir + KERNEL_PGD_BOUNDARY,
KERNEL_PGD_PTRS);
+
+ /*
+ * sync back low identity map too. It is used for example
+ * in the 32-bit EFI stub.
+ */
+ clone_pgd_range(initial_page_table,
+ swapper_pg_dir + KERNEL_PGD_BOUNDARY,
+ min(KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY));
#endif
tboot_probe();
diff --git a/arch/x86/kernel/verify_cpu.S b/arch/x86/kernel/verify_cpu.S
index b9242ba..4cf401f 100644
--- a/arch/x86/kernel/verify_cpu.S
+++ b/arch/x86/kernel/verify_cpu.S
@@ -34,10 +34,11 @@
#include <asm/msr-index.h>
verify_cpu:
- pushfl # Save caller passed flags
- pushl $0 # Kill any dangerous flags
- popfl
+ pushf # Save caller passed flags
+ push $0 # Kill any dangerous flags
+ popf
+#ifndef __x86_64__
pushfl # standard way to check for cpuid
popl %eax
movl %eax,%ebx
@@ -48,6 +49,7 @@ verify_cpu:
popl %eax
cmpl %eax,%ebx
jz verify_cpu_no_longmode # cpu has no cpuid
+#endif
movl $0x0,%eax # See if cpuid 1 is implemented
cpuid
@@ -130,10 +132,10 @@ verify_cpu_sse_test:
jmp verify_cpu_sse_test # try again
verify_cpu_no_longmode:
- popfl # Restore caller passed flags
+ popf # Restore caller passed flags
movl $1,%eax
ret
verify_cpu_sse_ok:
- popfl # Restore caller passed flags
+ popf # Restore caller passed flags
xorl %eax, %eax
ret
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 4dca0d5..a7fab60 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -33,7 +33,7 @@
#include <linux/memblock.h>
#include <linux/edd.h>
-#ifdef CONFIG_KEXEC_CORE
+#ifdef CONFIG_KEXEC
#include <linux/kexec.h>
#endif
@@ -1848,7 +1848,7 @@ static struct notifier_block xen_hvm_cpu_notifier = {
.notifier_call = xen_hvm_cpu_notify,
};
-#ifdef CONFIG_KEXEC_CORE
+#ifdef CONFIG_KEXEC
static void xen_hvm_shutdown(void)
{
native_machine_shutdown();
@@ -1879,7 +1879,7 @@ static void __init xen_hvm_guest_init(void)
x86_init.irqs.intr_init = xen_init_IRQ;
xen_hvm_init_time_ops();
xen_hvm_init_mmu_ops();
-#ifdef CONFIG_KEXEC_CORE
+#ifdef CONFIG_KEXEC
machine_ops.shutdown = xen_hvm_shutdown;
machine_ops.crash_shutdown = xen_hvm_crash_shutdown;
#endif
diff --git a/crypto/ablkcipher.c b/crypto/ablkcipher.c
index 40886c4..520729d 100644
--- a/crypto/ablkcipher.c
+++ b/crypto/ablkcipher.c
@@ -695,7 +695,7 @@ struct crypto_ablkcipher *crypto_alloc_ablkcipher(const char *alg_name,
err:
if (err != -EAGAIN)
break;
- if (signal_pending(current)) {
+ if (fatal_signal_pending(current)) {
err = -EINTR;
break;
}
diff --git a/crypto/algapi.c b/crypto/algapi.c
index 00d8d93..daf2f65 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -325,7 +325,7 @@ static void crypto_wait_for_test(struct crypto_larval *larval)
crypto_alg_tested(larval->alg.cra_driver_name, 0);
}
- err = wait_for_completion_interruptible(&larval->completion);
+ err = wait_for_completion_killable(&larval->completion);
WARN_ON(err);
out:
diff --git a/crypto/api.c b/crypto/api.c
index 2a81e98..7db2e89 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -172,7 +172,7 @@ static struct crypto_alg *crypto_larval_wait(struct crypto_alg *alg)
struct crypto_larval *larval = (void *)alg;
long timeout;
- timeout = wait_for_completion_interruptible_timeout(
+ timeout = wait_for_completion_killable_timeout(
&larval->completion, 60 * HZ);
alg = larval->adult;
@@ -435,7 +435,7 @@ struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask)
err:
if (err != -EAGAIN)
break;
- if (signal_pending(current)) {
+ if (fatal_signal_pending(current)) {
err = -EINTR;
break;
}
@@ -552,7 +552,7 @@ void *crypto_alloc_tfm(const char *alg_name,
err:
if (err != -EAGAIN)
break;
- if (signal_pending(current)) {
+ if (fatal_signal_pending(current)) {
err = -EINTR;
break;
}
diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
index 43665d0..c7666f4 100644
--- a/crypto/crypto_user.c
+++ b/crypto/crypto_user.c
@@ -361,7 +361,7 @@ static struct crypto_alg *crypto_user_aead_alg(const char *name, u32 type,
err = PTR_ERR(alg);
if (err != -EAGAIN)
break;
- if (signal_pending(current)) {
+ if (fatal_signal_pending(current)) {
err = -EINTR;
break;
}
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 2ea5155..eb3dff3 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -94,6 +94,8 @@ static int atomic_dec_return_safe(atomic_t *v)
#define RBD_MINORS_PER_MAJOR 256
#define RBD_SINGLE_MAJOR_PART_SHIFT 4
+#define RBD_MAX_PARENT_CHAIN_LEN 16
+
#define RBD_SNAP_DEV_NAME_PREFIX "snap_"
#define RBD_MAX_SNAP_NAME_LEN \
(NAME_MAX - (sizeof (RBD_SNAP_DEV_NAME_PREFIX) - 1))
@@ -411,7 +413,7 @@ static ssize_t rbd_add_single_major(struct bus_type *bus, const char *buf,
size_t count);
static ssize_t rbd_remove_single_major(struct bus_type *bus, const char *buf,
size_t count);
-static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping);
+static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth);
static void rbd_spec_put(struct rbd_spec *spec);
static int rbd_dev_id_to_minor(int dev_id)
@@ -3443,6 +3445,9 @@ static int rbd_init_disk(struct rbd_device *rbd_dev)
blk_queue_io_opt(q, segment_size);
blk_queue_merge_bvec(q, rbd_merge_bvec);
+ if (!ceph_test_opt(rbd_dev->rbd_client->client, NOCRC))
+ q->backing_dev_info.capabilities |= BDI_CAP_STABLE_WRITES;
+
disk->queue = q;
q->queuedata = rbd_dev;
@@ -4819,44 +4824,50 @@ out_err:
return ret;
}
-static int rbd_dev_probe_parent(struct rbd_device *rbd_dev)
+/*
+ * @depth is rbd_dev_image_probe() -> rbd_dev_probe_parent() ->
+ * rbd_dev_image_probe() recursion depth, which means it's also the
+ * length of the already discovered part of the parent chain.
+ */
+static int rbd_dev_probe_parent(struct rbd_device *rbd_dev, int depth)
{
struct rbd_device *parent = NULL;
- struct rbd_spec *parent_spec;
- struct rbd_client *rbdc;
int ret;
if (!rbd_dev->parent_spec)
return 0;
- /*
- * We need to pass a reference to the client and the parent
- * spec when creating the parent rbd_dev. Images related by
- * parent/child relationships always share both.
- */
- parent_spec = rbd_spec_get(rbd_dev->parent_spec);
- rbdc = __rbd_get_client(rbd_dev->rbd_client);
- ret = -ENOMEM;
- parent = rbd_dev_create(rbdc, parent_spec);
- if (!parent)
+ if (++depth > RBD_MAX_PARENT_CHAIN_LEN) {
+ pr_info("parent chain is too long (%d)\n", depth);
+ ret = -EINVAL;
goto out_err;
+ }
- ret = rbd_dev_image_probe(parent, false);
+ parent = rbd_dev_create(rbd_dev->rbd_client, rbd_dev->parent_spec);
+ if (!parent) {
+ ret = -ENOMEM;
+ goto out_err;
+ }
+
+ /*
+ * Images related by parent/child relationships always share
+ * rbd_client and spec/parent_spec, so bump their refcounts.
+ */
+ __rbd_get_client(rbd_dev->rbd_client);
+ rbd_spec_get(rbd_dev->parent_spec);
+
+ ret = rbd_dev_image_probe(parent, depth);
if (ret < 0)
goto out_err;
+
rbd_dev->parent = parent;
atomic_set(&rbd_dev->parent_ref, 1);
-
return 0;
+
out_err:
- if (parent) {
- rbd_dev_unparent(rbd_dev);
+ rbd_dev_unparent(rbd_dev);
+ if (parent)
rbd_dev_destroy(parent);
- } else {
- rbd_put_client(rbdc);
- rbd_spec_put(parent_spec);
- }
-
return ret;
}
@@ -4972,7 +4983,7 @@ static void rbd_dev_image_release(struct rbd_device *rbd_dev)
* parent), initiate a watch on its header object before using that
* object to get detailed information about the rbd image.
*/
-static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping)
+static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth)
{
int ret;
@@ -4992,7 +5003,7 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping)
if (ret)
goto err_out_format;
- if (mapping) {
+ if (!depth) {
ret = rbd_dev_header_watch_sync(rbd_dev);
if (ret)
goto out_header_name;
@@ -5009,7 +5020,7 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping)
if (ret)
goto err_out_probe;
- ret = rbd_dev_probe_parent(rbd_dev);
+ ret = rbd_dev_probe_parent(rbd_dev, depth);
if (ret)
goto err_out_probe;
@@ -5020,7 +5031,7 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping)
err_out_probe:
rbd_dev_unprobe(rbd_dev);
err_out_watch:
- if (mapping)
+ if (!depth)
rbd_dev_header_unwatch_sync(rbd_dev);
out_header_name:
kfree(rbd_dev->header_name);
@@ -5087,7 +5098,7 @@ static ssize_t do_rbd_add(struct bus_type *bus,
rbdc = NULL; /* rbd_dev now owns this */
spec = NULL; /* rbd_dev now owns this */
- rc = rbd_dev_image_probe(rbd_dev, true);
+ rc = rbd_dev_image_probe(rbd_dev, 0);
if (rc < 0)
goto err_out_rbd_dev;
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index e88556a..d428527 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -1917,7 +1917,8 @@ static void blkback_changed(struct xenbus_device *dev,
break;
/* Missed the backend's Closing state -- fallthrough */
case XenbusStateClosing:
- blkfront_closing(info);
+ if (info)
+ blkfront_closing(info);
break;
}
}
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
index 8ff2b3c..2a09de8 100644
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -90,6 +90,7 @@ static const struct usb_device_id ath3k_table[] = {
{ USB_DEVICE(0x04CA, 0x300b) },
{ USB_DEVICE(0x04CA, 0x3010) },
{ USB_DEVICE(0x0930, 0x0219) },
+ { USB_DEVICE(0x0930, 0x021c) },
{ USB_DEVICE(0x0930, 0x0220) },
{ USB_DEVICE(0x0930, 0x0227) },
{ USB_DEVICE(0x0b05, 0x17d0) },
@@ -101,6 +102,7 @@ static const struct usb_device_id ath3k_table[] = {
{ USB_DEVICE(0x0CF3, 0x311F) },
{ USB_DEVICE(0x0cf3, 0x3121) },
{ USB_DEVICE(0x0CF3, 0x817a) },
+ { USB_DEVICE(0x0CF3, 0x817b) },
{ USB_DEVICE(0x0cf3, 0xe003) },
{ USB_DEVICE(0x0CF3, 0xE004) },
{ USB_DEVICE(0x0CF3, 0xE005) },
@@ -146,6 +148,7 @@ static const struct usb_device_id ath3k_blist_tbl[] = {
{ USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0930, 0x021c), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0b05, 0x17d0), .driver_info = BTUSB_ATH3012 },
@@ -157,6 +160,7 @@ static const struct usb_device_id ath3k_blist_tbl[] = {
{ USB_DEVICE(0x0cf3, 0x311F), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0CF3, 0x817a), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0CF3, 0x817b), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0xe003), .driver_info = BTUSB_ATH3012 },
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index c23658e..5d5e999 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -168,6 +168,7 @@ static const struct usb_device_id blacklist_table[] = {
{ USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0930, 0x021c), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0b05, 0x17d0), .driver_info = BTUSB_ATH3012 },
@@ -179,6 +180,7 @@ static const struct usb_device_id blacklist_table[] = {
{ USB_DEVICE(0x0cf3, 0x311f), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0x817a), .driver_info = BTUSB_ATH3012 },
+ { USB_DEVICE(0x0cf3, 0x817b), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0xe003), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
{ USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 },
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index c514690..958b26d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1451,6 +1451,8 @@ static void i9xx_enable_pll(struct intel_crtc *crtc)
I915_WRITE(reg, dpll);
+ I915_WRITE(reg, dpll);
+
/* Wait for the clocks to stabilize. */
POSTING_READ(reg);
udelay(150);
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
index 27c3fd8..e855254 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
@@ -196,11 +196,12 @@ nouveau_gem_info(struct drm_file *file_priv, struct drm_gem_object *gem,
struct nouveau_bo *nvbo = nouveau_gem_object(gem);
struct nouveau_vma *vma;
- if (nvbo->bo.mem.mem_type == TTM_PL_TT)
+ if (is_power_of_2(nvbo->valid_domains))
+ rep->domain = nvbo->valid_domains;
+ else if (nvbo->bo.mem.mem_type == TTM_PL_TT)
rep->domain = NOUVEAU_GEM_DOMAIN_GART;
else
rep->domain = NOUVEAU_GEM_DOMAIN_VRAM;
-
rep->offset = nvbo->bo.offset;
if (cli->base.vm) {
vma = nouveau_bo_vma_find(nvbo, cli->base.vm);
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index b837e9f..1f14f32 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -1551,6 +1551,7 @@ struct radeon_pm {
struct device *int_hwmon_dev;
/* dpm */
bool dpm_enabled;
+ bool sysfs_initialized;
struct radeon_dpm dpm;
};
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index 214adc6..0b00de5 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -1350,19 +1350,23 @@ int radeon_pm_late_init(struct radeon_device *rdev)
if (rdev->pm.pm_method == PM_METHOD_DPM) {
if (rdev->pm.dpm_enabled) {
- ret = device_create_file(rdev->dev, &dev_attr_power_dpm_state);
- if (ret)
- DRM_ERROR("failed to create device file for dpm state\n");
- ret = device_create_file(rdev->dev, &dev_attr_power_dpm_force_performance_level);
- if (ret)
- DRM_ERROR("failed to create device file for dpm state\n");
- /* XXX: these are noops for dpm but are here for backwards compat */
- ret = device_create_file(rdev->dev, &dev_attr_power_profile);
- if (ret)
- DRM_ERROR("failed to create device file for power profile\n");
- ret = device_create_file(rdev->dev, &dev_attr_power_method);
- if (ret)
- DRM_ERROR("failed to create device file for power method\n");
+ if (!rdev->pm.sysfs_initialized) {
+ ret = device_create_file(rdev->dev, &dev_attr_power_dpm_state);
+ if (ret)
+ DRM_ERROR("failed to create device file for dpm state\n");
+ ret = device_create_file(rdev->dev, &dev_attr_power_dpm_force_performance_level);
+ if (ret)
+ DRM_ERROR("failed to create device file for dpm state\n");
+ /* XXX: these are noops for dpm but are here for backwards compat */
+ ret = device_create_file(rdev->dev, &dev_attr_power_profile);
+ if (ret)
+ DRM_ERROR("failed to create device file for power profile\n");
+ ret = device_create_file(rdev->dev, &dev_attr_power_method);
+ if (ret)
+ DRM_ERROR("failed to create device file for power method\n");
+ if (!ret)
+ rdev->pm.sysfs_initialized = true;
+ }
mutex_lock(&rdev->pm.mutex);
ret = radeon_dpm_late_enable(rdev);
@@ -1378,7 +1382,8 @@ int radeon_pm_late_init(struct radeon_device *rdev)
}
}
} else {
- if (rdev->pm.num_power_states > 1) {
+ if ((rdev->pm.num_power_states > 1) &&
+ (!rdev->pm.sysfs_initialized)) {
/* where's the best place to put these? */
ret = device_create_file(rdev->dev, &dev_attr_power_profile);
if (ret)
@@ -1386,6 +1391,8 @@ int radeon_pm_late_init(struct radeon_device *rdev)
ret = device_create_file(rdev->dev, &dev_attr_power_method);
if (ret)
DRM_ERROR("failed to create device file for power method\n");
+ if (!ret)
+ rdev->pm.sysfs_initialized = true;
}
}
return ret;
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index c323917..5311cac 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -860,6 +860,11 @@ retest:
case IB_CM_SIDR_REQ_RCVD:
spin_unlock_irq(&cm_id_priv->lock);
cm_reject_sidr_req(cm_id_priv, IB_SIDR_REJECT);
+ spin_lock_irq(&cm.lock);
+ if (!RB_EMPTY_NODE(&cm_id_priv->sidr_id_node))
+ rb_erase(&cm_id_priv->sidr_id_node,
+ &cm.remote_sidr_table);
+ spin_unlock_irq(&cm.lock);
break;
case IB_CM_REQ_SENT:
ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg);
@@ -3099,7 +3104,10 @@ int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id,
spin_unlock_irqrestore(&cm_id_priv->lock, flags);
spin_lock_irqsave(&cm.lock, flags);
- rb_erase(&cm_id_priv->sidr_id_node, &cm.remote_sidr_table);
+ if (!RB_EMPTY_NODE(&cm_id_priv->sidr_id_node)) {
+ rb_erase(&cm_id_priv->sidr_id_node, &cm.remote_sidr_table);
+ RB_CLEAR_NODE(&cm_id_priv->sidr_id_node);
+ }
spin_unlock_irqrestore(&cm.lock, flags);
return 0;
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 9359740..b0cb662 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -2152,8 +2152,8 @@ static void set_dte_entry(u16 devid, struct protection_domain *domain, bool ats)
static void clear_dte_entry(u16 devid)
{
/* remove entry from the device table seen by the hardware */
- amd_iommu_dev_table[devid].data[0] = IOMMU_PTE_P | IOMMU_PTE_TV;
- amd_iommu_dev_table[devid].data[1] = 0;
+ amd_iommu_dev_table[devid].data[0] = IOMMU_PTE_P | IOMMU_PTE_TV;
+ amd_iommu_dev_table[devid].data[1] &= DTE_FLAG_MASK;
amd_iommu_apply_erratum_63(devid);
}
diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
index e400fbe..e0c3994 100644
--- a/drivers/iommu/amd_iommu_types.h
+++ b/drivers/iommu/amd_iommu_types.h
@@ -283,6 +283,7 @@
#define IOMMU_PTE_IR (1ULL << 61)
#define IOMMU_PTE_IW (1ULL << 62)
+#define DTE_FLAG_MASK (0x3ffULL << 32)
#define DTE_FLAG_IOTLB (0x01UL << 32)
#define DTE_FLAG_GV (0x01ULL << 55)
#define DTE_GLX_SHIFT (56)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 31d14d8..af83731 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -7775,8 +7775,7 @@ static int remove_and_add_spares(struct mddev *mddev,
!test_bit(Bitmap_sync, &rdev->flags)))
continue;
- if (rdev->saved_raid_disk < 0)
- rdev->recovery_offset = 0;
+ rdev->recovery_offset = 0;
if (mddev->pers->
hot_add_disk(mddev, rdev) == 0) {
if (sysfs_link_rdev(mddev, rdev))
diff --git a/drivers/md/persistent-data/dm-btree-remove.c b/drivers/md/persistent-data/dm-btree-remove.c
index 7c0d755..92cd09f 100644
--- a/drivers/md/persistent-data/dm-btree-remove.c
+++ b/drivers/md/persistent-data/dm-btree-remove.c
@@ -301,11 +301,16 @@ static void redistribute3(struct dm_btree_info *info, struct btree_node *parent,
{
int s;
uint32_t max_entries = le32_to_cpu(left->header.max_entries);
- unsigned target = (nr_left + nr_center + nr_right) / 3;
- BUG_ON(target > max_entries);
+ unsigned total = nr_left + nr_center + nr_right;
+ unsigned target_right = total / 3;
+ unsigned remainder = (target_right * 3) != total;
+ unsigned target_left = target_right + remainder;
+
+ BUG_ON(target_left > max_entries);
+ BUG_ON(target_right > max_entries);
if (nr_left < nr_right) {
- s = nr_left - target;
+ s = nr_left - target_left;
if (s < 0 && nr_center < -s) {
/* not enough in central node */
@@ -316,10 +321,10 @@ static void redistribute3(struct dm_btree_info *info, struct btree_node *parent,
} else
shift(left, center, s);
- shift(center, right, target - nr_right);
+ shift(center, right, target_right - nr_right);
} else {
- s = target - nr_right;
+ s = target_right - nr_right;
if (s > 0 && nr_center < s) {
/* not enough in central node */
shift(center, right, nr_center);
@@ -329,7 +334,7 @@ static void redistribute3(struct dm_btree_info *info, struct btree_node *parent,
} else
shift(center, right, s);
- shift(left, center, nr_left - target);
+ shift(left, center, nr_left - target_left);
}
*key_ptr(parent, c->index) = center->keys[0];
diff --git a/drivers/md/persistent-data/dm-btree.c b/drivers/md/persistent-data/dm-btree.c
index c7726ce..d6e4703 100644
--- a/drivers/md/persistent-data/dm-btree.c
+++ b/drivers/md/persistent-data/dm-btree.c
@@ -523,7 +523,7 @@ static int btree_split_beneath(struct shadow_spine *s, uint64_t key)
r = new_block(s->info, &right);
if (r < 0) {
- /* FIXME: put left */
+ unlock_block(s->info, left);
return r;
}
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 47b7c31..0d91644 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -2251,7 +2251,7 @@ static int narrow_write_error(struct r1bio *r1_bio, int i)
bio_trim(wbio, sector - r1_bio->sector, sectors);
wbio->bi_iter.bi_sector += rdev->data_offset;
wbio->bi_bdev = rdev->bdev;
- if (submit_bio_wait(WRITE, wbio) == 0)
+ if (submit_bio_wait(WRITE, wbio) < 0)
/* failure! */
ok = rdev_set_badblocks(rdev, sector,
sectors, 0)
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 73c9f57..19bc2e1 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -2604,7 +2604,7 @@ static int narrow_write_error(struct r10bio *r10_bio, int i)
choose_data_offset(r10_bio, rdev) +
(sector - r10_bio->sector));
wbio->bi_bdev = rdev->bdev;
- if (submit_bio_wait(WRITE, wbio) == 0)
+ if (submit_bio_wait(WRITE, wbio) < 0)
/* Failure! */
ok = rdev_set_badblocks(rdev, sector,
sectors, 0)
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index b98c70e..1c829a0 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -3029,6 +3029,8 @@ static void handle_stripe_clean_event(struct r5conf *conf,
}
if (!discard_pending &&
test_bit(R5_Discard, &sh->dev[sh->pd_idx].flags)) {
+ int hash = sh->hash_lock_index;
+
clear_bit(R5_Discard, &sh->dev[sh->pd_idx].flags);
clear_bit(R5_UPTODATE, &sh->dev[sh->pd_idx].flags);
if (sh->qd_idx >= 0) {
@@ -3042,9 +3044,9 @@ static void handle_stripe_clean_event(struct r5conf *conf,
* no updated data, so remove it from hash list and the stripe
* will be reinitialized
*/
- spin_lock_irq(&conf->device_lock);
+ spin_lock_irq(conf->hash_locks + hash);
remove_hash(sh);
- spin_unlock_irq(&conf->device_lock);
+ spin_unlock_irq(conf->hash_locks + hash);
if (test_bit(STRIPE_SYNC_REQUESTED, &sh->state))
set_bit(STRIPE_HANDLE, &sh->state);
diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c
index f17c301..c2d0559 100644
--- a/drivers/net/can/sja1000/sja1000.c
+++ b/drivers/net/can/sja1000/sja1000.c
@@ -184,6 +184,9 @@ static void sja1000_start(struct net_device *dev)
priv->write_reg(priv, SJA1000_RXERR, 0x0);
priv->read_reg(priv, SJA1000_ECC);
+ /* clear interrupt flags */
+ priv->read_reg(priv, SJA1000_IR);
+
/* leave reset mode */
set_normal_mode(dev);
}
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 96fc7fe..c089fa1 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -950,7 +950,7 @@ static void mvneta_defaults_set(struct mvneta_port *pp)
/* Set CPU queue access map - all CPUs have access to all RX
* queues and to all TX queues
*/
- for (cpu = 0; cpu < CONFIG_NR_CPUS; cpu++)
+ for_each_present_cpu(cpu)
mvreg_write(pp, MVNETA_CPU_MAP(cpu),
(MVNETA_CPU_RXQ_ACCESS_ALL_MASK |
MVNETA_CPU_TXQ_ACCESS_ALL_MASK));
diff --git a/drivers/net/ethernet/mellanox/mlx4/cmd.c b/drivers/net/ethernet/mellanox/mlx4/cmd.c
index 0d02fba..54004a6 100644
--- a/drivers/net/ethernet/mellanox/mlx4/cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx4/cmd.c
@@ -1987,7 +1987,7 @@ int mlx4_multi_func_init(struct mlx4_dev *dev)
spin_lock_init(&s_state->lock);
}
- memset(&priv->mfunc.master.cmd_eqe, 0, dev->caps.eqe_size);
+ memset(&priv->mfunc.master.cmd_eqe, 0, sizeof(struct mlx4_eqe));
priv->mfunc.master.cmd_eqe.type = MLX4_EVENT_TYPE_CMD;
INIT_WORK(&priv->mfunc.master.comm_work,
mlx4_master_comm_channel);
diff --git a/drivers/net/ethernet/mellanox/mlx4/eq.c b/drivers/net/ethernet/mellanox/mlx4/eq.c
index e8a1baa..44c2df9 100644
--- a/drivers/net/ethernet/mellanox/mlx4/eq.c
+++ b/drivers/net/ethernet/mellanox/mlx4/eq.c
@@ -183,7 +183,7 @@ static void slave_event(struct mlx4_dev *dev, u8 slave, struct mlx4_eqe *eqe)
return;
}
- memcpy(s_eqe, eqe, dev->caps.eqe_size - 1);
+ memcpy(s_eqe, eqe, sizeof(struct mlx4_eqe) - 1);
s_eqe->slave_id = slave;
/* ensure all information is written before setting the ownersip bit */
wmb();
diff --git a/drivers/net/ethernet/sfc/selftest.c b/drivers/net/ethernet/sfc/selftest.c
index 2664181..c9fcf6f 100644
--- a/drivers/net/ethernet/sfc/selftest.c
+++ b/drivers/net/ethernet/sfc/selftest.c
@@ -46,7 +46,7 @@ struct efx_loopback_payload {
struct iphdr ip;
struct udphdr udp;
__be16 iteration;
- const char msg[64];
+ char msg[64];
} __packed;
/* Loopback test source MAC address */
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
index c5f9cb8..ff08be5 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -731,10 +731,13 @@ static int stmmac_get_ts_info(struct net_device *dev,
{
struct stmmac_priv *priv = netdev_priv(dev);
- if ((priv->hwts_tx_en) && (priv->hwts_rx_en)) {
+ if ((priv->dma_cap.time_stamp || priv->dma_cap.atime_stamp)) {
- info->so_timestamping = SOF_TIMESTAMPING_TX_HARDWARE |
+ info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE |
+ SOF_TIMESTAMPING_TX_HARDWARE |
+ SOF_TIMESTAMPING_RX_SOFTWARE |
SOF_TIMESTAMPING_RX_HARDWARE |
+ SOF_TIMESTAMPING_SOFTWARE |
SOF_TIMESTAMPING_RAW_HARDWARE;
if (priv->ptp_clock)
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
index e8c21f9..6185874 100644
--- a/drivers/net/macvtap.c
+++ b/drivers/net/macvtap.c
@@ -68,7 +68,7 @@ static const struct proto_ops macvtap_socket_ops;
#define TUN_OFFLOADS (NETIF_F_HW_CSUM | NETIF_F_TSO_ECN | NETIF_F_TSO | \
NETIF_F_TSO6 | NETIF_F_UFO)
#define RX_OFFLOADS (NETIF_F_GRO | NETIF_F_LRO)
-#define TAP_FEATURES (NETIF_F_GSO | NETIF_F_SG)
+#define TAP_FEATURES (NETIF_F_GSO | NETIF_F_SG | NETIF_F_FRAGLIST)
static struct macvlan_dev *macvtap_get_vlan_rcu(const struct net_device *dev)
{
diff --git a/drivers/net/ppp/pppoe.c b/drivers/net/ppp/pppoe.c
index f606b5b..5aa5631 100644
--- a/drivers/net/ppp/pppoe.c
+++ b/drivers/net/ppp/pppoe.c
@@ -569,7 +569,7 @@ static int pppoe_release(struct socket *sock)
po = pppox_sk(sk);
- if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) {
+ if (po->pppoe_dev) {
dev_put(po->pppoe_dev);
po->pppoe_dev = NULL;
}
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 841b608..5c150a0 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1652,9 +1652,9 @@ static int virtnet_probe(struct virtio_device *vdev)
/* Do we support "hardware" checksums? */
if (virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) {
/* This opens up the world of extra features. */
- dev->hw_features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
+ dev->hw_features |= NETIF_F_HW_CSUM | NETIF_F_SG;
if (csum)
- dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
+ dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG;
if (virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) {
dev->hw_features |= NETIF_F_TSO | NETIF_F_UFO
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 1fc2e5a..a72cac4 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -956,6 +956,7 @@ static void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
hw->max_rate_tries = 10;
hw->sta_data_size = sizeof(struct ath_node);
hw->vif_data_size = sizeof(struct ath_vif);
+ hw->extra_tx_headroom = 4;
hw->wiphy->available_antennas_rx = BIT(ah->caps.max_rxchains) - 1;
hw->wiphy->available_antennas_tx = BIT(ah->caps.max_txchains) - 1;
diff --git a/drivers/net/wireless/iwlwifi/dvm/lib.c b/drivers/net/wireless/iwlwifi/dvm/lib.c
index 576f7ee..78a155e 100644
--- a/drivers/net/wireless/iwlwifi/dvm/lib.c
+++ b/drivers/net/wireless/iwlwifi/dvm/lib.c
@@ -1022,7 +1022,7 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw,
u8 *pn = seq.ccmp.pn;
ieee80211_get_key_rx_seq(key, i, &seq);
- aes_sc->pn = cpu_to_le64(
+ aes_sc[i].pn = cpu_to_le64(
(u64)pn[5] |
((u64)pn[4] << 8) |
((u64)pn[3] << 16) |
diff --git a/drivers/net/wireless/iwlwifi/iwl-7000.c b/drivers/net/wireless/iwlwifi/iwl-7000.c
index e1d5466..28e18de 100644
--- a/drivers/net/wireless/iwlwifi/iwl-7000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-7000.c
More information about the unionfs-cvs
mailing list