Merge branch 'linux-4.14.y' of github.com:openela/kernel-lts into android13-4.14-msmnile

* 'linux-4.14.y' of github.com:openela/kernel-lts:
  LTS: Update to 4.14.355
  Revert "parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367"
  netns: restore ops before calling ops_exit_list
  cx82310_eth: fix error return code in cx82310_bind()
  rtmutex: Drop rt_mutex::wait_lock before scheduling
  locking/rtmutex: Handle non enqueued waiters gracefully in remove_waiter()
  drm/i915/fence: Mark debug_fence_free() with __maybe_unused
  ACPI: processor: Fix memory leaks in error paths of processor_add()
  ACPI: processor: Return an error if acpi_processor_get_info() fails in processor_add()
  netns: add pre_exit method to struct pernet_operations
  net: Add comment about pernet_operations methods and synchronization
  nilfs2: protect references to superblock parameters exposed in sysfs
  nilfs2: replace snprintf in show functions with sysfs_emit
  nilfs2: use time64_t internally
  tracing: Avoid possible softlockup in tracing_iter_reset()
  ring-buffer: Rename ring_buffer_read() to read_buffer_iter_advance()
  uprobes: Use kzalloc to allocate xol area
  clocksource/drivers/imx-tpm: Fix next event not taking effect sometime
  clocksource/drivers/imx-tpm: Fix return -ETIME when delta exceeds INT_MAX
  VMCI: Fix use-after-free when removing resource in vmci_resource_remove()
  nvmem: Fix return type of devm_nvmem_device_get() in kerneldoc
  iio: fix scale application in iio_convert_raw_to_processed_unlocked
  iio: buffer-dmaengine: fix releasing dma channel on error
  ata: pata_macio: Use WARN instead of BUG
  of/irq: Prevent device address out-of-bounds read in interrupt map walk
  Squashfs: sanity check symbolic link size
  usbnet: ipheth: race between ipheth_close and error handling
  Input: uinput - reject requests with unreasonable number of slots
  btrfs: initialize location to fix -Wmaybe-uninitialized in btrfs_lookup_dentry()
  PCI: Add missing bridge lock to pci_bus_lock()
  btrfs: clean up our handling of refs == 0 in snapshot delete
  btrfs: replace BUG_ON with ASSERT in walk_down_proc()
  smp: Add missing destroy_work_on_stack() call in smp_call_on_cpu()
  wifi: mwifiex: Do not return unused priv in mwifiex_get_priv_by_id()
  hwmon: (w83627ehf) Fix underflows seen when writing limit attributes
  hwmon: (nct6775-core) Fix underflows seen when writing limit attributes
  hwmon: (lm95234) Fix underflows seen when writing limit attributes
  hwmon: (adc128d818) Fix underflows seen when writing limit attributes
  pci/hotplug/pnv_php: Fix hotplug driver crash on Powernv
  devres: Initialize an uninitialized struct member
  um: line: always fill *error_out in setup_one_line()
  cgroup: Protect css->cgroup write under css_set_lock
  iommu/vt-d: Handle volatile descriptor status read
  rfkill: fix spelling mistake contidion to condition
  usbnet: modern method to get random MAC
  net: usb: don't write directly to netdev->dev_addr
  drivers/net/usb: Remove all strcpy() uses
  cx82310_eth: re-enable ethernet mode after router reboot
  igb: Fix not clearing TimeSync interrupts for 82580
  can: bcm: Remove proc entry when dev is unregistered.
  pcmcia: Use resource_size function on resource object
  media: qcom: camss: Add check for v4l2_fwnode_endpoint_parse
  wifi: brcmsmac: advertise MFP_CAPABLE to enable WPA3
  af_unix: Remove put_pid()/put_cred() in copy_peercred().
  irqchip/armada-370-xp: Do not allow mapping IRQ 0 and 1
  smack: unix sockets: fix accept()ed socket label
  ALSA: hda: Add input value sanity checks to HDMI channel map controls
  nilfs2: fix state management in error path of log writing function
  nilfs2: fix missing cleanup on rollforward recovery error
  fuse: use unsigned type for getxattr/listxattr size truncation
  mmc: dw_mmc: Fix IDMAC operation with pages bigger than 4K
  ALSA: hda/conexant: Add pincfg quirk to enable top speakers on Sirius devices
  sch/netem: fix use after free in netem_dequeue
  ALSA: usb-audio: Fix gpf in snd_usb_pipe_sanity_check
  ALSA: usb-audio: Sanity checks for each pipe and EP types
  ALSA: usb-audio: add boot quirk for Axe-Fx III
  udf: Limit file size to 4TB
  block: initialize integrity buffer to zero before writing it to media
  media: uvcvideo: Enforce alignment of frame and interval
  smack: tcp: ipv4, fix incorrect labeling
  usbip: Don't submit special requests twice
  apparmor: fix possible NULL pointer dereference
  drm/amdgpu: fix mc_data out-of-bounds read warning
  drm/amdgpu: fix ucode out-of-bounds read warning
  drm/amdgpu: fix overflowed array index read warning
  drm/amdgpu: Fix uninitialized variable warning in amdgpu_afmt_acr
  usb: dwc3: st: add missing depopulate in probe error path
  usb: dwc3: st: Add of_node_put() before return in probe function
  net: usb: qmi_wwan: add MeiG Smart SRM825L
  LTS: Update to 4.14.354
  drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var
  ipc: remove memcg accounting for sops objects in do_semtimedop()
  scsi: aacraid: Fix double-free on probe failure
  usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes()
  usb: dwc3: st: fix probed platform device ref count on probe error path
  usb: dwc3: core: Prevent USB core invalid event buffer address access
  usb: dwc3: omap: add missing depopulate in probe error path
  USB: serial: option: add MeiG Smart SRM825L
  cdc-acm: Add DISABLE_ECHO quirk for GE HealthCare UI Controller
  net: busy-poll: use ktime_get_ns() instead of local_clock()
  gtp: fix a potential NULL pointer dereference
  net: prevent mss overflow in skb_segment()
  ida: Fix crash in ida_free when the bitmap is empty
  net:rds: Fix possible deadlock in rds_message_put
  fbmem: Check virtual screen sizes in fb_set_var()
  fbcon: Prevent that screen size is smaller than font size
  printk: Export is_console_locked
  memcg: enable accounting of ipc resources
  cgroup/cpuset: Prevent UAF in proc_cpuset_show()
  media: uvcvideo: Fix integer overflow calculating timestamp
  media: uvcvideo: Use ktime_t for timestamps
  filelock: Correct the filelock owner in fcntl_setlk/fcntl_setlk64
  scsi: mpt3sas: Avoid IOMMU page faults on REPORT ZONES
  dm suspend: return -ERESTARTSYS instead of -EINTR
  wifi: mwifiex: duplicate static structs used in driver instances
  pinctrl: single: fix potential NULL dereference in pcs_get_function()
  drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc
  Input: MT - limit max slots
  Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO
  ALSA: timer: Relax start tick time check for slave timer elements
  mmc: dw_mmc: allow biu and ciu clocks to defer
  HID: wacom: Defer calculation of resolution until resolution_code is known
  Bluetooth: MGMT: Add error handling to pair_device()
  mmc: mmc_test: Fix NULL dereference on allocation failure
  net: xilinx: axienet: Always disable promiscuous mode
  ipv6: prevent UAF in ip6_send_skb()
  netfilter: nft_counter: Synchronize nft_counter_reset() against reader.
  kcm: Serialise kcm_sendmsg() for the same socket.
  Bluetooth: hci_core: Fix LE quote calculation
  Bluetooth: hci_core: Fix not handling link timeouts propertly
  Bluetooth: Make use of __check_timeout on hci_sched_le
  block: use "unsigned long" for blk_validate_block_size().
  gtp: pull network headers in gtp_dev_xmit()
  hrtimer: Prevent queuing of hrtimer without a function callback
  nvmet-rdma: fix possible bad dereference when freeing rsps
  ext4: set the type of max_zeroout to unsigned int to avoid overflow
  irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
  usb: dwc3: core: Skip setting event buffers for host only controllers
  s390/iucv: fix receive buffer virtual vs physical address confusion
  openrisc: Call setup_memory() earlier in the init sequence
  NFS: avoid infinite loop in pnfs_update_layout.
  Bluetooth: bnep: Fix out-of-bound access
  usb: gadget: fsl: Increase size of name buffer for endpoints
  f2fs: fix to do sanity check in update_sit_entry
  btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent()
  btrfs: send: handle unexpected data in header buffer in begin_cmd()
  btrfs: handle invalid root reference found in may_destroy_subvol()
  btrfs: change BUG_ON to assertion when checking for delayed_node root
  powerpc/boot: Only free if realloc() succeeds
  powerpc/boot: Handle allocation failure in simple_realloc()
  parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367
  md: clean up invalid BUG_ON in md_ioctl
  net/sun3_82586: Avoid reading past buffer in debug output
  scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list()
  fs: binfmt_elf_efpic: don't use missing interpreter's properties
  media: pci: cx23885: check cx23885_vdev_init() return
  quota: Remove BUG_ON from dqget()
  ext4: do not trim the group with corrupted block bitmap
  powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu
  wifi: iwlwifi: abort scan when rfkill on but device enabled
  gfs2: setattr_chown: Add missing initialization
  scsi: spi: Fix sshdr use
  binfmt_misc: cleanup on filesystem umount
  staging: ks7010: disable bh on tx_dev_lock
  wifi: cw1200: Avoid processing an invalid TIM IE
  ssb: Fix division by zero issue in ssb_calc_clock_rate
  atm: idt77252: prevent use after free in dequeue_rx()
  btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits()
  overflow: Implement size_t saturating arithmetic helpers
  overflow.h: Add flex_array_size() helper
  s390/cio: rename bitmap_size() -> idset_bitmap_size()
  memcg_write_event_control(): fix a user-triggerable oops
  drm/amdgpu: Actually check flags for all context ops.
  selinux: fix potential counting error in avc_add_xperms_decision()
  include/linux/bitmap.h: make bitmap_fill() and bitmap_zero() consistent
  dm persistent data: fix memory allocation failure
  dm resume: don't return EINVAL when signalled
  ALSA: usb-audio: Support Yamaha P-125 quirk entry
  fuse: Initialize beyond-EOF page contents before setting uptodate

 Conflicts:
	drivers/mmc/core/mmc_test.c
	drivers/net/usb/usbnet.c

Change-Id: I718c5312df474678aea17713b30a8a669bdae348
This commit is contained in:
Michael Bestas
2024-11-04 03:54:51 +02:00
170 changed files with 2750 additions and 545 deletions

View File

@@ -1,5 +1,5 @@
upstream_repo: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git upstream_repo: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
upstream_base: 4.19.304 upstream_base: 4.19.304
base: 4.14.336 base: 4.14.336
upstream_version: 4.19.320 upstream_version: 4.19.322
version: 4.14.353 version: 4.14.355

348
.elts/meta/4.14.354.yaml Normal file
View File

@@ -0,0 +1,348 @@
fcb5aec66ce07e8329a51583b152150aa659236a:
title: 'fuse: Initialize beyond-EOF page contents before setting uptodate'
mainline: 3c0da3d163eb32f1f91891efaade027fa9b245b9
upstream: 49934861514d36d0995be8e81bb3312a499d8d9a
3d810347c95892c8f2ad7524a9dfac7643a838d2:
title: 'ALSA: usb-audio: Support Yamaha P-125 quirk entry'
mainline: c286f204ce6ba7b48e3dcba53eda7df8eaa64dd9
upstream: 05c60b306979935e5e4f2339a0ceece783893813
ceb3e3f9e1dc2aabfbe3ad010e400a085270ea3b:
title: 'dm resume: don''t return EINVAL when signalled'
mainline: 7a636b4f03af9d541205f69e373672e7b2b60a8a
upstream: a809f6d8b10ce6d42e205a49c8855def77e1d452
058be20653b9ce45b758e8e9f41c91f4fd51eebc:
title: 'dm persistent data: fix memory allocation failure'
mainline: faada2174c08662ae98b439c69efe3e79382c538
upstream: 90a6b797e95d0f4bef30fbab423759f4e9999506
90707a9e8cb97a896468af8280e33c377c001ed2:
title: 'include/linux/bitmap.h: make bitmap_fill() and bitmap_zero() consistent'
e12d520dc158be6dc4177147186a5ae53ebc2aaa:
title: 'selinux: fix potential counting error in avc_add_xperms_decision()'
mainline: 379d9af3f3da2da1bbfa67baf1820c72a080d1f1
upstream: 5d93f05ed258c92a8925b74bc36101af36c22732
854d4d53234aa5ebf5ec8dc947cb5a8e3288bf9d:
title: 'drm/amdgpu: Actually check flags for all context ops.'
mainline: 0573a1e2ea7e35bff08944a40f1adf2bb35cea61
upstream: c5e2c86aef97d4b17ccb52879ab524a36a93566d
6f2b82ee5ceb2de5411a2742b352030f08ae183b:
title: 'memcg_write_event_control(): fix a user-triggerable oops'
mainline: 046667c4d3196938e992fba0dfcde570aa85cd0e
upstream: fa5bfdf6cb5846a00e712d630a43e3cf55ccb411
0671b47894f55a65eee7907574ae9a4e6a681be8:
title: 's390/cio: rename bitmap_size() -> idset_bitmap_size()'
mainline: c1023f5634b9bfcbfff0dc200245309e3cde9b54
upstream: 537201a9c9d82d3809de8e692465671b98d7cf77
ebb9622683941bdd58ebee5b744d9dd27d2cbe92:
title: 'overflow.h: Add flex_array_size() helper'
mainline: b19d57d0f3cc6f1022edf94daf1d70506a09e3c2
upstream: 81bec94f5d864318fa4fccfd06e5449c501885b7
c698c6c7ce9f267ce483b4276c10daedfae14295:
title: 'overflow: Implement size_t saturating arithmetic helpers'
mainline: e1be43d9b5d0d1310dbd90185a8e5c7145dde40f
upstream: 1f5cbd78177975aece64bb132948f611af2359c0
5e78e68997f6e81f5ea7b7d7adcb0299f6cbe0eb:
title: 'btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits()'
mainline: 4ca532d64648d4776d15512caed3efea05ca7195
upstream: eeca0881c04b07e053cd24b455012b6abd164328
9c791f3833511ef47bd93f0069b3f216dc800843:
title: 'atm: idt77252: prevent use after free in dequeue_rx()'
mainline: a9a18e8f770c9b0703dab93580d0b02e199a4c79
upstream: 628ea82190a678a56d2ec38cda3addf3b3a6248d
cb51898f8eec5dd8524115da29d9414c6a117f67:
title: 'ssb: Fix division by zero issue in ssb_calc_clock_rate'
mainline: e0b5127fa134fe0284d58877b6b3133939c8b3ce
upstream: b0862789cc11a214d31b6ff9c74bfede90dfb68d
f4d17cd8acb0d59a0c6e16c00d411e4047ce4af9:
title: 'wifi: cw1200: Avoid processing an invalid TIM IE'
mainline: b7bcea9c27b3d87b54075735c870500123582145
upstream: 2d109cefa3a51a6d826914f441a40d9efb1143b6
f22c4b1e57a22b1e5b6a0754286c8136ed290c14:
title: 'staging: ks7010: disable bh on tx_dev_lock'
mainline: 058cbee52ccd7be77e373d31a4f14670cfd32018
upstream: 936a24249747e0d995fc2d66524b043a3d158705
0f4437492406977e2f14c77e67956facd888765d:
title: 'binfmt_misc: cleanup on filesystem umount'
mainline: 1c5976ef0f7ad76319df748ccb99a4c7ba2ba464
upstream: 263bcebf5c2ab1fe949517225157f34015124620
5e532c67718aa680857ff1bf76bf470f93dbf92d:
title: 'scsi: spi: Fix sshdr use'
mainline: 0b149cee836aa53989ea089af1cb9d90d7c6ac9e
upstream: 5fe4af45db7988a0df3533d45aba085771654811
431cbbd124292f497b4862a88ac60015765adb49:
title: 'gfs2: setattr_chown: Add missing initialization'
mainline: 2d8d7990619878a848b1d916c2f936d3012ee17d
upstream: 686ef69ca191dcba8d325334c65a04a2589383e6
e0961317d13c9d29d8901ab4053bf102b9595b6e:
title: 'wifi: iwlwifi: abort scan when rfkill on but device enabled'
mainline: 3c6a0b1f0add72e7f522bc9145222b86d0a7712a
upstream: 6b344eb86f3b47e18d8fc2b0ae3e8e927f098994
4297287b1132064e10b140991aa9d465d1926c24:
title: 'powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu'
mainline: 45b1ba7e5d1f6881050d558baf9bc74a2ae13930
upstream: 479a0cffcca7e3672a7db5f9e23b147fb6cfba39
0c2fd9f775685c502a30310255f91b826b979cbf:
title: 'ext4: do not trim the group with corrupted block bitmap'
mainline: 172202152a125955367393956acf5f4ffd092e0d
upstream: cac7c9fcd15e92184c8e621b1f33d97d99505366
df321d5b02416398d284e7af74bf4dfce4879e83:
title: 'quota: Remove BUG_ON from dqget()'
mainline: 249f374eb9b6b969c64212dd860cc1439674c4a8
upstream: c08d02053b9e98dffea9b9b378dc90547e4621e8
4e2660eb12ff478bc6604d3b6d34d5052a2e5a3e:
title: 'media: pci: cx23885: check cx23885_vdev_init() return'
mainline: 15126b916e39b0cb67026b0af3c014bfeb1f76b3
upstream: 8e31b096e2e1949bc8f0be019c9ae70d414404c6
eba1af4c431230bd41b1018f1000f95e02f2ef92:
title: 'fs: binfmt_elf_efpic: don''t use missing interpreter''s properties'
mainline: 15fd1dc3dadb4268207fa6797e753541aca09a2a
upstream: 8ca5b21fa9b2c13aad93a97992b92f9360988fe9
7cb20343fea9c616687a8ba6feb41a543f94e57e:
title: 'scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list()'
mainline: 3d0f9342ae200aa1ddc4d6e7a573c6f8f068d994
upstream: 50568ec1402e601125845835c326310031c65c81
8ab663cd2711e234d222565fc86632a09319263a:
title: 'net/sun3_82586: Avoid reading past buffer in debug output'
mainline: 4bea747f3fbec33c16d369b2f51e55981d7c78d0
upstream: 7783533f788e59691102bae6e2df03f2109624de
7ce64ccc2ff813b5cccd19298f889c464cab3f4d:
title: 'md: clean up invalid BUG_ON in md_ioctl'
mainline: 9dd8702e7cd28ebf076ff838933f29cf671165ec
upstream: 5c11581df1f58c43ce8b2e9c14184ab1f75c883f
172e698211ff81d1c66161b4591efc8c21c350dc:
title: 'parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367'
mainline: 73cb4a2d8d7e0259f94046116727084f21e4599f
upstream: fea29d479eb470102cd025d9279503a2bfd28c60
d8893f4de9af18d7878cef063d94387d122e9901:
title: 'powerpc/boot: Handle allocation failure in simple_realloc()'
mainline: 69b0194ccec033c208b071e019032c1919c2822d
upstream: cd146e31691187ec22b404a2771db199d370d59d
8d63c5821851b1b13fe34eb0d41189cc05b498a9:
title: 'powerpc/boot: Only free if realloc() succeeds'
mainline: f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2
upstream: 1180feef209487d2a95ba8fede71ec6add2e8e52
b52a80ebbf8e6be987ee8e40a7a1d7e550cafe3f:
title: 'btrfs: change BUG_ON to assertion when checking for delayed_node root'
mainline: be73f4448b607e6b7ce41cd8ef2214fdf6e7986f
upstream: be9ce497c7cb293f93cf98ef563b6456bac75686
4ae1ece59eff262456026a20164702f8ecfa2875:
title: 'btrfs: handle invalid root reference found in may_destroy_subvol()'
mainline: 6fbc6f4ac1f4907da4fc674251527e7dc79ffbf6
upstream: ebce7d482d1a08392362ddf936ffdd9244fb1ece
b1410389811d63127bd09bd1f21adba03e686b23:
title: 'btrfs: send: handle unexpected data in header buffer in begin_cmd()'
mainline: e80e3f732cf53c64b0d811e1581470d67f6c3228
upstream: f0b54836bf2ff59b866a6db481f9ad46fa30b642
0a7ed5945f5b2fb92877188e2ebc78067937f7cc:
title: 'btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent()'
mainline: f40a3ea94881f668084f68f6b9931486b1606db0
upstream: 5ae1493c5eac1a7a7ced34970a24cb3a5680a63b
00705650825973da3c2fceae82def9e4eda121e4:
title: 'f2fs: fix to do sanity check in update_sit_entry'
mainline: 36959d18c3cf09b3c12157c6950e18652067de77
upstream: 3c2c864f19490da6e892290441ba7dcc7bae2576
7bc6f5f8bbb72993c108fa3f26283bd9c1406cc0:
title: 'usb: gadget: fsl: Increase size of name buffer for endpoints'
mainline: 87850f6cc20911e35eafcbc1d56b0d649ae9162d
upstream: 29d8f0e05a33200db97d4b38c995c843a70f71e5
4eb6b4890ed3c23303144f9a5cd341b7b22a1612:
title: 'Bluetooth: bnep: Fix out-of-bound access'
mainline: 0f0639b4d6f649338ce29c62da3ec0787fa08cd1
upstream: 01ed379cb5ddc0049a348786b971fe53a31e6255
cfe972295c3312e0a91aa910d94770ecd44179ac:
title: 'NFS: avoid infinite loop in pnfs_update_layout.'
mainline: 2fdbc20036acda9e5694db74a032d3c605323005
upstream: 4980d45cca2b1135a1ab3dea101425cf44da72cd
ca6e68d71ece21decaa46ff8b3694570e712b738:
title: 'openrisc: Call setup_memory() earlier in the init sequence'
mainline: 7b432bf376c9c198a7ff48f1ed14a14c0ffbe1fe
upstream: 3979298b8033989f86d74ab47745e5fbe84a4ebb
4832811162db2d2312cb89ee37849338312e6590:
title: 's390/iucv: fix receive buffer virtual vs physical address confusion'
mainline: 4e8477aeb46dfe74e829c06ea588dd00ba20c8cc
upstream: da6cc71ff6c8e6b5076e80550b4e79a3d8f111be
a4dc7b3a5f855afff980b9dcb0e2ceb24f7868d2:
title: 'usb: dwc3: core: Skip setting event buffers for host only controllers'
mainline: 89d7f962994604a3e3d480832788d06179abefc5
upstream: 320bb9a5a6b79ba123d1e1f746edb52b41c7c1fb
2236d13af575a3658cee60e8db880740509d5b66:
title: 'irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc'
mainline: 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3
upstream: 139510ec274c7cc8739bb8f63aed70e425c2f0d8
90ef0457118eaeab238228f223059b1f93389d73:
title: 'ext4: set the type of max_zeroout to unsigned int to avoid overflow'
mainline: 261341a932d9244cbcd372a3659428c8723e5a49
upstream: 2f64ae32831e5a2bfd0e404c6e63b399eb180a0a
2e31c2b032e1c2868c06b57b319907c83004eddc:
title: 'nvmet-rdma: fix possible bad dereference when freeing rsps'
mainline: 73964c1d07c054376f1b32a62548571795159148
upstream: 66fce1c83e2def702dd6a7fb77e986c062b20972
b02d82c6edb6abc9c87d281af2b3050e618f2fa1:
title: 'hrtimer: Prevent queuing of hrtimer without a function callback'
mainline: 5a830bbce3af16833fe0092dec47b6dd30279825
upstream: ccef3adcb84816a30b8e535c8c4fcb167904e7b1
8e448b4536e8b8cc387052bdb058ca595627bf1f:
title: 'gtp: pull network headers in gtp_dev_xmit()'
mainline: 3a3be7ff9224f424e485287b54be00d2c6bd9c40
upstream: 3d89d0c4a1c6d4d2a755e826351b0a101dbc86f3
30a1325eab21676ba9c453de44e70fe598a6b8e0:
title: 'block: use "unsigned long" for blk_validate_block_size().'
mainline: 37ae5a0f5287a52cf51242e76ccf198d02ffe495
upstream: ee12aa483f6c8cecbd5a4c794867fee0e068b822
52e5665bbc50c235e1498d2f40d1004c817a7895:
title: 'Bluetooth: Make use of __check_timeout on hci_sched_le'
mainline: 1b1d29e5149990e44634b2e681de71effd463591
upstream: 67cddb2a1b256941952ebf501f8fc4936b704c8b
874a31d69b75d57b7e017d7418a5e4ab4e537dc0:
title: 'Bluetooth: hci_core: Fix not handling link timeouts propertly'
mainline: 116523c8fac05d1d26f748fee7919a4ec5df67ea
upstream: edb7dbcf8c1e95dc18ada839526ff86df3258d11
ac7a5e553fe290082863eac89a4c79ec941a947c:
title: 'Bluetooth: hci_core: Fix LE quote calculation'
mainline: 932021a11805b9da4bd6abf66fe233cccd59fe0e
upstream: 08829a8ff1303b1a903d1417dc0a06ffc7d17044
6bff278ca0373109466e5e16c2b5b7feb2d275cc:
title: 'kcm: Serialise kcm_sendmsg() for the same socket.'
mainline: 807067bf014d4a3ae2cc55bd3de16f22a01eb580
upstream: 8c9cdbf600143bd6835c8b8351e5ac956da79aec
7308cdf114aa3e10b931d967f9c6224bea4da005:
title: 'netfilter: nft_counter: Synchronize nft_counter_reset() against reader.'
mainline: a0b39e2dc7017ac667b70bdeee5293e410fab2fb
upstream: 31c28919a99f5c491e3cce4fa7293b12e330e247
9011fa8f8e5bc75aa260d56c3c0f6fbfbd4f55d1:
title: 'ipv6: prevent UAF in ip6_send_skb()'
mainline: faa389b2fbaaec7fd27a390b4896139f9da662e3
upstream: 571567e0277008459750f0728f246086b2659429
019fc01257a13f075f7bd93a6fa8e02d822dacbd:
title: 'net: xilinx: axienet: Always disable promiscuous mode'
mainline: 4ae738dfef2c0323752ab81786e2d298c9939321
upstream: e15ae5f903e1e54594a55146973d1e615519ae97
a2b9cfe9687c3389a4cbc8b8e665baad4ef6087f:
title: 'mmc: mmc_test: Fix NULL dereference on allocation failure'
mainline: a1e627af32ed60713941cbfc8075d44cad07f6dd
upstream: e97be13a9f51284da450dd2a592e3fa87b49cdc9
ff165baf4bce33ecf7d628676ff606401ceb317f:
title: 'Bluetooth: MGMT: Add error handling to pair_device()'
mainline: 538fd3921afac97158d4177139a0ad39f056dbb2
upstream: 11b4b0e63f2621b33b2e107407a7d67a65994ca1
0ab5b59ccee3b6a0b46021458d60a8a7d3497bcc:
title: 'HID: wacom: Defer calculation of resolution until resolution_code is known'
mainline: 1b8f9c1fb464968a5b18d3acc1da8c00bad24fad
upstream: 10ddadfab0272f37c9c73095c089970e65b38824
9d1b2b527ab3dd13c18c3460b50f474ede01cacf:
title: 'mmc: dw_mmc: allow biu and ciu clocks to defer'
mainline: 6275c7bc8dd07644ea8142a1773d826800f0f3f7
upstream: 714ac96c0d6e594b50d89d79e07ae76d22040b73
408390db2ed1d018b5f958bec4dc86cf1d27fe77:
title: 'ALSA: timer: Relax start tick time check for slave timer elements'
mainline: ccbfcac05866ebe6eb3bc6d07b51d4ed4fcde436
upstream: bfe0ba951567d9e4a2c60424d12067000ee27158
2ec8267b2741c4c576ec568dbfb4802d2880345f:
title: 'Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO'
mainline: 9c33663af9ad115f90c076a1828129a3fbadea98
upstream: aea24ef5e9b2bbc5d5d05e39b10573971b91241c
f0ca8ebc5b58f920ed33dd6bd7d7e515744eb362:
title: 'Input: MT - limit max slots'
mainline: 99d3bf5f7377d42f8be60a6b9cb60fb0be34dceb
upstream: 2829c80614890624456337e47320289112785f3e
c3429e72b0b782a2bbaafb19d69018b65d0bd26f:
title: 'drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc'
mainline: 88a9a467c548d0b3c7761b4fd54a68e70f9c0944
upstream: d35cf41c8eb5d9fe95b21ae6ee2910f9ba4878e8
88f275a1e9972573add8003dc920818f17e8750a:
title: 'pinctrl: single: fix potential NULL dereference in pcs_get_function()'
mainline: 1c38a62f15e595346a1106025722869e87ffe044
upstream: 0a2bab5ed161318f57134716accba0a30f3af191
202eaab237a3cc7da4b688a77234744f62f31ccf:
title: 'wifi: mwifiex: duplicate static structs used in driver instances'
mainline: 27ec3c57fcadb43c79ed05b2ea31bc18c72d798a
upstream: 42a15750b777edcb9be4eeea16ea04c0c4869cdc
17fc0471635d9dca0781f8c90dbbd4161950b9fc:
title: 'dm suspend: return -ERESTARTSYS instead of -EINTR'
mainline: 1e1fd567d32fcf7544c6e09e0e5bc6c650da6e23
upstream: ac7f3b1e424f2f38e81d27d7e1ecb30dcd9dd651
2df5bdcc5b24b465d66f322073a523ba9ed852f3:
title: 'scsi: mpt3sas: Avoid IOMMU page faults on REPORT ZONES'
mainline: 82dbb57ac8d06dfe8227ba9ab11a49de2b475ae5
upstream: 868e60c28c2e838a005b41d2f69e923a07080a48
3ae8e605510b7e72f71d9537919b3d83f01d5e07:
title: 'filelock: Correct the filelock owner in fcntl_setlk/fcntl_setlk64'
63dc7ea2f1a4d9560772db5ce062b11574c6a7b0:
title: 'media: uvcvideo: Use ktime_t for timestamps'
16913ef7e6317548e59036f4ee331d6f2f7f8913:
title: 'media: uvcvideo: Fix integer overflow calculating timestamp'
mainline: 8676a5e796fa18f55897ca36a94b2adf7f73ebd1
upstream: 34666cab862a8154013713aaee0cc5da1241dd75
4284ad6ee12894faa3fdfcc584a32aa4ce2a4fbc:
title: 'cgroup/cpuset: Prevent UAF in proc_cpuset_show()'
mainline: 1be59c97c83ccd67a519d8a49486b3a8a73ca28a
upstream: 27d6dbdc6485d68075a0ebf8544d6425c1ed84bb
f477af54dbe386b3ab323b5b765910e0e7851180:
title: 'memcg: enable accounting of ipc resources'
mainline: 18319498fdd4cdf8c1c2c48cd432863b1f915d6f
upstream: 9e235ce6facfef2cbde3e2a5f1ccce28d341880f
38d216ce7ac318b8dfaef24bb378c51c7a1aa151:
title: 'printk: Export is_console_locked'
cb4213b43b1c11a9c6a01ab412a48a78f372ec69:
title: 'fbcon: Prevent that screen size is smaller than font size'
mainline: e64242caef18b4a5840b0e7a9bff37abd4f4f933
upstream: 54eaaac622d4547b4abae7e44763b29fa0687132
fc15b7d69dd3b6418c8de3a3ff52a2d380d76d92:
title: 'fbmem: Check virtual screen sizes in fb_set_var()'
mainline: 6c11df58fd1ac0aefcb3b227f72769272b939e56
upstream: f453f32f13320137f2317c0ad7ae1c20508effca
ae877b9999278eedaf73d6e0e2797d3ed613d802:
title: 'net:rds: Fix possible deadlock in rds_message_put'
mainline: f1acf1ac84d2ae97b7889b87223c1064df850069
upstream: 6a967835748472229da405bdb7780f98084c6ebc
2cd2e32fc40226fe651a178ec13c343b18a58ba5:
title: 'ida: Fix crash in ida_free when the bitmap is empty'
mainline: af73483f4e8b6f5c68c9aa63257bdd929a9c194a
upstream: 89db5346acb5a15e670c4fb3b8f3c30fa30ebc15
b9b5914ae919e100f936acf89c40564438eea7ca:
title: 'net: prevent mss overflow in skb_segment()'
mainline: 23d05d563b7e7b0314e65c8e882bc27eac2da8e7
upstream: 0d3ffbbf8631d6db0552f46250015648991c856f
05748e7d5793a9b4006096221f8c991a7eaf3849:
title: 'gtp: fix a potential NULL pointer dereference'
mainline: defd8b3c37b0f9cb3e0f60f47d3d78d459d57fda
upstream: 620fe9809752fae91b4190e897b81ed9976dfb39
843fa098a51e412907dcd804d8e7cc3c28945edd:
title: 'net: busy-poll: use ktime_get_ns() instead of local_clock()'
mainline: 0870b0d8b393dde53106678a1e2cec9dfa52f9b7
upstream: 1b1f0890fb51fc50bf990a800106a133f9036f32
0089d92552aa7a94e2edb2441fe9017e20c4f63d:
title: 'cdc-acm: Add DISABLE_ECHO quirk for GE HealthCare UI Controller'
mainline: 0b00583ecacb0b51712a5ecd34cf7e6684307c67
upstream: 43f8d47eaa36c16eb0beafdedbfba51220b4fe69
f44a24bcd5833a5b5d32a0bab95bed37a86cbf55:
title: 'USB: serial: option: add MeiG Smart SRM825L'
mainline: 9a471de516c35219d1722c13367191ce1f120fe9
upstream: 50f98b68051d01216bd59df5d0673d7a442d17cd
c180e1013eb6b4db7ddf220491a2e325b7fcf06e:
title: 'usb: dwc3: omap: add missing depopulate in probe error path'
mainline: 2aa765a43817ec8add990f83c8e54a9a5d87aa9c
upstream: 9c80a94d388528add073955108a1eeeed4c1c5ea
347ecd5288aaff7fcc0828d8e2bbd122cce42a43:
title: 'usb: dwc3: core: Prevent USB core invalid event buffer address access'
mainline: 14e497183df28c006603cc67fd3797a537eef7b9
upstream: eca3f543f817da87c00d1a5697b473efb548204f
f86e58bf1c74fcdfcfb78baecf156127409442be:
title: 'usb: dwc3: st: fix probed platform device ref count on probe error path'
mainline: ddfcfeba891064b88bb844208b43bef2ef970f0c
upstream: b0979a885b9d4df2a25b88e9d444ccaa5f9f495c
2a00c7c9045d6b359ab6b51e71ab4be6f4dac461:
title: 'usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes()'
mainline: 3a8839bbb86da7968a792123ed2296d063871a52
upstream: 0e9d60d0da23b5c344aaad9cb2088684f8548f9f
caebf7249fb7bd0cb68e7b6f8a88f033d82ac221:
title: 'scsi: aacraid: Fix double-free on probe failure'
mainline: 919ddf8336f0b84c0453bac583808c9f165a85c2
upstream: d237c7d06ffddcdb5d36948c527dc01284388218
30eb6ce857111743822a317414a1f183319a105a:
title: 'ipc: remove memcg accounting for sops objects in do_semtimedop()'
mainline: 6a4746ba06191e23d30230738e94334b26590a8a
upstream: 72793f5cc9e41f9ee33353d4594036817529b766
6c3aa8fda82fedf05e697ef8c57d92c3b9d838b8:
title: 'drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var'
mainline: 1935f0deb6116dd785ea64d8035eab0ff441255b
upstream: 0975670c14287183571d01858e8020114a14d76a

304
.elts/meta/4.14.355.yaml Normal file
View File

@@ -0,0 +1,304 @@
a1474ea9b7ab89dba81a2449bf4a4173115b06a7:
title: 'net: usb: qmi_wwan: add MeiG Smart SRM825L'
mainline: 1ca645a2f74a4290527ae27130c8611391b07dbf
upstream: 226a6773a78d4fd27c03cfdf1f811dbf278fb3d0
107fdbcb323ac570bf914e6f547a8d923b82c087:
title: 'usb: dwc3: st: Add of_node_put() before return in probe function'
mainline: e36721b90144bb46e1b6477be3ab63439c7fb79b
upstream: 82dde26c330f14cee56ea30bb1044f4b514c67b5
1dfc1828c8cfae2b2e8023a4a4eab6734214d2f9:
title: 'usb: dwc3: st: add missing depopulate in probe error path'
mainline: cd4897bfd14f6a5388b21ba45a066541a0425199
upstream: a3718c676adb9dbc24dc7b9b293020c9a20f3fdb
a1a53372278da6b1ddd71cdbfdae497c4dba7140:
title: 'drm/amdgpu: Fix uninitialized variable warning in amdgpu_afmt_acr'
mainline: c0d6bd3cd209419cc46ac49562bef1db65d90e70
upstream: f00ce6b3344b744af491d1edda9905b188f590a7
f8501ae9f302ddb01fd9011ac99b01c2c0f3a8b9:
title: 'drm/amdgpu: fix overflowed array index read warning'
mainline: ebbc2ada5c636a6a63d8316a3408753768f5aa9f
upstream: d1ab22df511cbe4a358421876153f4e1212132e2
4012cee5397a8c2a5f2caf45957ab78b2309f300:
title: 'drm/amdgpu: fix ucode out-of-bounds read warning'
mainline: 8944acd0f9db33e17f387fdc75d33bb473d7936f
upstream: 82ac8f1d02886b5d8aeb9e058989d3bd6fc581e2
ff8f82a22c6faf27e9feb0c9b241d2fdd8c02584:
title: 'drm/amdgpu: fix mc_data out-of-bounds read warning'
mainline: 51dfc0a4d609fe700750a62f41447f01b8c9ea50
upstream: 5fa4df25ecfc7b6c9006f5b871c46cfe25ea8826
2b98e85d650c2c302dd61cf66485f99db7cfd9d9:
title: 'apparmor: fix possible NULL pointer dereference'
mainline: 3dd384108d53834002be5630132ad5c3f32166ad
upstream: 8d9da10a392a32368392f7a16775e1f36e2a5346
570892930fbd745b1d6cf987586c4eddbe200732:
title: 'usbip: Don''t submit special requests twice'
mainline: 8b6b386f9aa936ed0c190446c71cf59d4a507690
upstream: ebc88484fc780068bce82e9a593513f7f9ed947c
4a9d23f110f9514fc28a67c5614565252b52965d:
title: 'smack: tcp: ipv4, fix incorrect labeling'
mainline: 2fe209d0ad2e2729f7e22b9b31a86cc3ff0db550
upstream: d3f56c653c65f170b172d3c23120bc64ada645d8
b0fb4622839090361ca56ed8b7d38780aca24f55:
title: 'media: uvcvideo: Enforce alignment of frame and interval'
mainline: c8931ef55bd325052ec496f242aea7f6de47dc9c
upstream: d1a4c613dd3ef57978fc366b4e3d72cd5083a1f9
18c1fde63128e9b0344b428cb18d2fb4b96b1399:
title: 'block: initialize integrity buffer to zero before writing it to media'
mainline: 899ee2c3829c5ac14bfc7d3c4a5846c0b709b78f
upstream: 9f4af4cf08f9a0329ade3d938f55d2220c40d0a6
a47099495b459b9993552d22ae3f76829108947b:
title: 'udf: Limit file size to 4TB'
mainline: c2efd13a2ed4f29bf9ef14ac2fbb7474084655f8
upstream: a6211d4d3df3a5f90d8bcd11acd91baf7a3c2b5d
a4a8eb20e62affb4b4ca51bcf8ea0861546acf22:
title: 'ALSA: usb-audio: add boot quirk for Axe-Fx III'
52e9edf6bcb1f0423742ad0ddf4baa5c2ffdf4db:
title: 'ALSA: usb-audio: Sanity checks for each pipe and EP types'
mainline: 801ebf1043ae7b182588554cc9b9ad3c14bc2ab5
upstream: 218f0478064e246c557d0319623eeb56f0827a8e
787a4aa45f59ee42152a1775f54050dbc6b13a06:
title: 'ALSA: usb-audio: Fix gpf in snd_usb_pipe_sanity_check'
mainline: 5d78e1c2b7f4be00bbe62141603a631dc7812f35
upstream: 5c4b0a778419d9deab8557265f4b3fd6f0e97e11
458dd5f94d634c30594a935563c1e2c8accd0656:
title: 'sch/netem: fix use after free in netem_dequeue'
mainline: 3b3a2a9c6349e25a025d2330f479bc33a6ccb54a
upstream: f0bddb4de043399f16d1969dad5ee5b984a64e7b
140cbd4f60beb751e66e7414f08df77f7f0d645b:
title: 'ALSA: hda/conexant: Add pincfg quirk to enable top speakers on Sirius devices'
mainline: 4178d78cd7a86510ba68d203f26fc01113c7f126
upstream: 94e0cace44fe2b888cffc1c6905d1a9bfcf57c7a
196ea167c8411ea8dbd90668b9fe48bf953bd474:
title: 'mmc: dw_mmc: Fix IDMAC operation with pages bigger than 4K'
mainline: 8396c793ffdf28bb8aee7cfe0891080f8cab7890
upstream: 32bd402f6760d57127d58a9888553b2db574bba6
a5a11287ead5951b4549f86b5d2abcc44a5efd6b:
title: 'fuse: use unsigned type for getxattr/listxattr size truncation'
mainline: b18915248a15eae7d901262f108d6ff0ffb4ffc1
upstream: 13d787bb4f21b6dbc8d8291bf179d36568893c25
812eaaab959885afdf5739337e7180e633b26734:
title: 'nilfs2: fix missing cleanup on rollforward recovery error'
mainline: 5787fcaab9eb5930f5378d6a1dd03d916d146622
upstream: 35a9a7a7d94662146396199b0cfd95f9517cdd14
faf0987376cc48fb3896f0f3298ebfeda8f1a515:
title: 'nilfs2: fix state management in error path of log writing function'
mainline: 6576dd6695f2afca3f4954029ac4a64f82ba60ab
upstream: 40a2757de2c376ef8a08d9ee9c81e77f3c750adf
19ece5b382d38b440e13d24e951cf79ec593ae68:
title: 'ALSA: hda: Add input value sanity checks to HDMI channel map controls'
mainline: 6278056e42d953e207e2afd416be39d09ed2d496
upstream: c6d593c2c931762848389d621e8e657367f62190
d92a8bb1955ce159fbbe0c309a1d17ffea5c043a:
title: 'smack: unix sockets: fix accept()ed socket label'
mainline: e86cac0acdb1a74f608bacefe702f2034133a047
upstream: 81e45ff912bbc43526d6f21c7a79cc5a7159a5f5
90e83f2f8444a176d359ff9bc4a40590427a3bc4:
title: 'irqchip/armada-370-xp: Do not allow mapping IRQ 0 and 1'
mainline: 3cef738208e5c3cb7084e208caf9bbf684f24feb
upstream: 1d755d4fb238315c3b3e50e6f3117a0d79f72c29
3652428ca171b8aed1217a4162dedccd3dde1b5a:
title: 'af_unix: Remove put_pid()/put_cred() in copy_peercred().'
mainline: e4bd881d987121dbf1a288641491955a53d9f8f7
upstream: 406fb2bc6548bbd61489637d1443606feaa7037a
26e28ffe556d6cd2f2fd43a8707e6b3d8dca24f3:
title: 'wifi: brcmsmac: advertise MFP_CAPABLE to enable WPA3'
mainline: dbb5265a5d7cca1cdba7736dba313ab7d07bc19d
upstream: c7167cbb59f0525f6726a621b37f2596ee1bbf83
e0cb5088960d975715d2731a706914498e7cb018:
title: 'media: qcom: camss: Add check for v4l2_fwnode_endpoint_parse'
mainline: 4caf6d93d9f2c11d6441c64e1c549c445fa322ed
upstream: 75f8136cd4e74fca5d115c35954ed598fc771a8f
b9fb4137c73f884e41edb16dfbec9ec490efb4d6:
title: 'pcmcia: Use resource_size function on resource object'
mainline: 24a025497e7e883bd2adef5d0ece1e9b9268009f
upstream: d51b471ec7bd3dd9649dea1d77635512e61eaad5
f9ab8f03569d4406fc0adf3c667bc0c450280181:
title: 'can: bcm: Remove proc entry when dev is unregistered.'
mainline: 76fe372ccb81b0c89b6cd2fec26e2f38c958be85
upstream: 5c680022c4e28ba18ea500f3e29f0428271afa92
7e95e0c1c4750d584a8dacaefa62f506af3e510d:
title: 'igb: Fix not clearing TimeSync interrupts for 82580'
mainline: ba8cf80724dbc09825b52498e4efacb563935408
upstream: 79c460784fc55ccf272fbe89290ff84d3e17341c
3f63ef4d3a6164cf90d31f26cb37976cbc32b5a9:
title: 'cx82310_eth: re-enable ethernet mode after router reboot'
mainline: ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808
upstream: 5adf7fbdfa3e9e425b04771e1d64c4e184ad8fdb
ef1cdbe7efb9d4f237238f3a58b115ccae662a8f:
title: 'drivers/net/usb: Remove all strcpy() uses'
mainline: 493c3ca6bd754d8587604496eb814f72e933075d
upstream: 3f255eda1818c6f2b4fb446c488339c66173dc6d
70135ce17759946d0f4ccdbed51c21caccf22445:
title: 'net: usb: don''t write directly to netdev->dev_addr'
mainline: 2674e7ea22ba0e22a2d1603bd51e0b8f6442a267
upstream: 40373e2bdf967ba982309ff06e3b8c7c79c4de0e
5fb805c245cf8daf1568247ba755e3164c361d96:
title: 'usbnet: modern method to get random MAC'
mainline: bab8eb0dd4cb995caa4a0529d5655531c2ec5e8e
upstream: c9c76962b49ff37ed8dcf880eabeb74df3e0686e
1c1073bf747c47629304662bd4e4acc3c347d499:
title: 'rfkill: fix spelling mistake contidion to condition'
mainline: f404c3ecc401b3617c454c06a3d36a43a01f1aaf
upstream: 2579dc71bfa05f908c13decb27989c18be775e2d
b3774dcec0995f6d31fa86bbfaeb74a5c6cda069:
title: 'iommu/vt-d: Handle volatile descriptor status read'
mainline: b5e86a95541cea737394a1da967df4cd4d8f7182
upstream: 75a34515eb1be431819ec00cd09fe3a3eb369cdb
9d86ad71865dd3a67f27923da2d87891801d26f2:
title: 'cgroup: Protect css->cgroup write under css_set_lock'
mainline: 57b56d16800e8961278ecff0dc755d46c4575092
upstream: 6760357063f593a17613e015aed2051cfd4197c6
def0afb4a7e7e30bc08b1b4699dfe6802b2cbde1:
title: 'um: line: always fill *error_out in setup_one_line()'
mainline: 824ac4a5edd3f7494ab1996826c4f47f8ef0f63d
upstream: 3bedb7ce080690d0d6172db790790c1219bcbdd5
463af1bdfe4037d2d5c274ae3df6a1bda26cd3aa:
title: 'devres: Initialize an uninitialized struct member'
mainline: 56a20ad349b5c51909cf8810f7c79b288864ad33
upstream: c57834f37dc73410ed2eb11e1cc3fecad169b065
33259e025b9efd8c18acbeaf5db24ff06db58459:
title: 'pci/hotplug/pnv_php: Fix hotplug driver crash on Powernv'
mainline: 335e35b748527f0c06ded9eebb65387f60647fda
upstream: 4eb4085c1346d19d4a05c55246eb93e74e671048
c0cc4bee13a524d7aceb27690ac6be7ed8e61b70:
title: 'hwmon: (adc128d818) Fix underflows seen when writing limit attributes'
mainline: 8cad724c8537fe3e0da8004646abc00290adae40
upstream: 05419d0056dcf7088687e561bb583cc06deba777
d93e9ac35391aef72db4a0aa274d27944dd0d673:
title: 'hwmon: (lm95234) Fix underflows seen when writing limit attributes'
mainline: af64e3e1537896337405f880c1e9ac1f8c0c6198
upstream: 93f0f5721d0cca45dac50af1ae6f9a9826c699fd
676ca195a7e32432c84de0516609c98560dcf66f:
title: 'hwmon: (nct6775-core) Fix underflows seen when writing limit attributes'
mainline: 0403e10bf0824bf0ec2bb135d4cf1c0cc3bf4bf0
upstream: 298a55f11edd811f2189b74eb8f53dee34d4f14c
9c01d650e13a9098fd147c080994be18cb0689c9:
title: 'hwmon: (w83627ehf) Fix underflows seen when writing limit attributes'
mainline: 5c1de37969b7bc0abcb20b86e91e70caebbd4f89
upstream: 93cf73a7bfdce683bde3a7bb65f270d3bd24497b
6d47528d1743bbefff3fc7928d1e45e3faf03cd8:
title: 'wifi: mwifiex: Do not return unused priv in mwifiex_get_priv_by_id()'
mainline: c145eea2f75ff7949392aebecf7ef0a81c1f6c14
upstream: a12cf97cbefa139ef8d95081f2ea047cbbd74b7a
86ed63497a70309bcc68c61bf706e65e305318e9:
title: 'smp: Add missing destroy_work_on_stack() call in smp_call_on_cpu()'
mainline: 77aeb1b685f9db73d276bad4bb30d48505a6fd23
upstream: 2d6a7a1ee3862d129c0e0fbd3cc147e185a379dc
8f9488fe41599c4aed2820b66097ab09f2bcfec8:
title: 'btrfs: replace BUG_ON with ASSERT in walk_down_proc()'
mainline: 1f9d44c0a12730a24f8bb75c5e1102207413cc9b
upstream: 2df0e48615f438cdf93f1469ed9f289f71440d2d
b6a6c52de6de81961175e7d2814f6d0193697a4c:
title: 'btrfs: clean up our handling of refs == 0 in snapshot delete'
mainline: b8ccef048354074a548f108e51d0557d6adfd3a3
upstream: c847b28a799733b04574060ab9d00f215970627d
dc087747546322a6d53d450c92456fcd0055a257:
title: 'PCI: Add missing bridge lock to pci_bus_lock()'
mainline: a4e772898f8bf2e7e1cf661a12c60a5612c4afab
upstream: 0790b89c7e911003b8c50ae50e3ac7645de1fae9
8f68d6f65ec245d7f7641b540ef6ffed262df9cf:
title: 'btrfs: initialize location to fix -Wmaybe-uninitialized in btrfs_lookup_dentry()'
mainline: b8e947e9f64cac9df85a07672b658df5b2bcff07
upstream: d09f1bf3d7f029558704f077097dbcd4dc5db8da
f406ab8753404479a45b87c930fed326b4db0f04:
title: 'Input: uinput - reject requests with unreasonable number of slots'
mainline: 206f533a0a7c683982af473079c4111f4a0f9f5e
upstream: 9c6d189f0c1c59ba9a32326ec82a0b367a3cd47b
b1981479ebd7e8d67c23753437a4282ef363b0a0:
title: 'usbnet: ipheth: race between ipheth_close and error handling'
mainline: e5876b088ba03a62124266fa20d00e65533c7269
upstream: 487f140d366f9b12edb11b97819c135676090bd2
a909f13b25b358d7f4683648b5166214c609668f:
title: 'Squashfs: sanity check symbolic link size'
mainline: 810ee43d9cd245d138a2733d87a24858a23f577d
upstream: f82cb7f24032ed023fc67d26ea9bf322d8431a90
8b67befd1d8e89bce21196d288327ef375731328:
title: 'of/irq: Prevent device address out-of-bounds read in interrupt map walk'
mainline: b739dffa5d570b411d4bdf4bb9b8dfd6b7d72305
upstream: d2a79494d8a5262949736fb2c3ac44d20a51b0d8
265da992cd6d9a6ae82917b3f0bd343f5754b4b9:
title: 'ata: pata_macio: Use WARN instead of BUG'
mainline: d4bc0a264fb482b019c84fbc7202dd3cab059087
upstream: cff08d637389f4bf4a49a08ff0474bd6c2b27b97
1753cb7f5cd1bf2bdecd6126d4670ae4c5ea31d5:
title: 'iio: buffer-dmaengine: fix releasing dma channel on error'
mainline: 84c65d8008764a8fb4e627ff02de01ec4245f2c4
upstream: 0edd1eac01afe0c2104bddd7d1cae985b0a4552c
0c91f6e9cee80725ead1a4db722a1b7a0b575162:
title: 'iio: fix scale application in iio_convert_raw_to_processed_unlocked'
mainline: 8a3dcc970dc57b358c8db2702447bf0af4e0d83a
upstream: a1cad4f0340c50037bd3211bd43deff662d5287e
1c8fea7bc7b888039874f237abf53f28264f3d42:
title: 'nvmem: Fix return type of devm_nvmem_device_get() in kerneldoc'
mainline: c69f37f6559a8948d70badd2b179db7714dedd62
upstream: 5e0a746e798cd962e478b54f50f6f39384f735bc
12663f3dcfaa591275c2b086a840edc9e86dc736:
title: 'VMCI: Fix use-after-free when removing resource in vmci_resource_remove()'
mainline: 48b9a8dabcc3cf5f961b2ebcd8933bf9204babb7
upstream: f6365931bf7c07b2b397dbb06a4f6573cc9fae73
3ed0ce0836c07ea1c3e635370ce04f5ab065ee90:
title: 'clocksource/drivers/imx-tpm: Fix return -ETIME when delta exceeds INT_MAX'
mainline: 5b8843fcd49827813da80c0f590a17ae4ce93c5d
upstream: eeec87f317abb8b1ebb04b5d6823e941649d8293
79b3fd21dd528f14d3d7f4f380db5a742f5903d4:
title: 'clocksource/drivers/imx-tpm: Fix next event not taking effect sometime'
mainline: 3d5c2f8e75a55cfb11a85086c71996af0354a1fb
upstream: 143674856ebffeb785759892b1a11a7f5ecbd1f5
967a7ce0d7d61c1256391a197e81ba2a400ecf07:
title: 'uprobes: Use kzalloc to allocate xol area'
mainline: e240b0fde52f33670d1336697c22d90a4fe33c84
upstream: 32bb3588ccf08406931c7f061f0ef7a37cd38414
ae2112e6a08779c541bc4b9b88ff58914f4ecf32:
title: 'ring-buffer: Rename ring_buffer_read() to read_buffer_iter_advance()'
mainline: bc1a72afdc4a91844928831cac85731566e03bc6
upstream: ac8ffa21dde0c1edcd9dd98b5555a0aa4eea3b1f
fdfd1ef491f5e5445d130169394ae68a45d1adcf:
title: 'tracing: Avoid possible softlockup in tracing_iter_reset()'
mainline: 49aa8a1f4d6800721c7971ed383078257f12e8f9
upstream: 84bd537aaefb210218b5e1d982411fa6ae8429a1
3b10ade515f59695e110647a1c4046df1f2ae228:
title: 'nilfs2: use time64_t internally'
c77787e1b99270f880dae53e1c8e9f7d8ec8f5a1:
title: 'nilfs2: replace snprintf in show functions with sysfs_emit'
mainline: 3bcd6c5bd483287f4a09d3d59a012d47677b6edc
upstream: 51af9b589ab68a94485ee55811d1243c6bf665b4
2d65330b265ca1170d35cd861a82b35536f57c4e:
title: 'nilfs2: protect references to superblock parameters exposed in sysfs'
mainline: 683408258917541bdb294cd717c210a04381931e
upstream: b90beafac05931cbfcb6b1bd4f67c1923f47040e
9e0063de11fca0d749169844cd3cd8cbe9061466:
title: 'net: Add comment about pernet_operations methods and synchronization'
9541fb132b07ee39fa0c6d07655684f7d961c171:
title: 'netns: add pre_exit method to struct pernet_operations'
mainline: d7d99872c144a2c2f5d9c9d83627fa833836cba5
upstream: bc596c2026c7f52dc12a784403ccfc3b152844e6
9e65e5135c7d8451ee68b36d44f674429df4271a:
title: 'ACPI: processor: Return an error if acpi_processor_get_info() fails in processor_add()'
mainline: fadf231f0a06a6748a7fc4a2c29ac9ef7bca6bfd
upstream: a30476afbaac69face9537cd8d0694d46d5d1ef5
89bbd019927a862339cb11beeb98a95c0269b25c:
title: 'ACPI: processor: Fix memory leaks in error paths of processor_add()'
mainline: 47ec9b417ed9b6b8ec2a941cd84d9de62adc358a
upstream: 00259ae5206a713234e3ac12a8a0f731e86b754b
c292e581abf5c0dfaf783e3ad2bda3502b5ab4be:
title: 'drm/i915/fence: Mark debug_fence_free() with __maybe_unused'
mainline: f99999536128b14b5d765a9982763b5134efdd79
upstream: 76b1dda1598fc151610d3f372e24be1fcc8b396e
5635c800bb018568edf984a2bc3df894c7f1d8b4:
title: 'locking/rtmutex: Handle non enqueued waiters gracefully in remove_waiter()'
11ae525157eb075f44f3c6460fdd9a5642ada728:
title: 'rtmutex: Drop rt_mutex::wait_lock before scheduling'
mainline: d33d26036a0274b472299d7dcdaa5fb34329f91b
upstream: 432efdbe7da5ecfcbc0c2180cfdbab1441752a38
8b8a84237a675ff0a73827b2ba05745765a97f13:
title: 'cx82310_eth: fix error return code in cx82310_bind()'
mainline: cfbaa8b33e022aca62a3f2815ffbc02874d4cb8b
upstream: e70c0b7e280415e1511fb258f4b72733d765b80e
61da5c1d99b77bb28d2579a64a05bfbf9447e43d:
title: 'netns: restore ops before calling ops_exit_list'
mainline: b272a0ad730103e84fb735fd0a8cc050cdf7f77c
upstream: 15605b333ddaa3e5e21dfebb65546c70bb167925
a66198e30ea76c75761c3f0323b31ba6be641824:
title: 'Revert "parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367"'
mainline: 73cb4a2d8d7e0259f94046116727084f21e4599f
upstream: 324954a057b3ab21a7be5c91e148c15c401332f0

View File

@@ -0,0 +1,394 @@
49934861514d36d0995be8e81bb3312a499d8d9a:
title: 'fuse: Initialize beyond-EOF page contents before setting uptodate'
mainline: 3c0da3d163eb32f1f91891efaade027fa9b245b9
backport: fcb5aec66ce07e8329a51583b152150aa659236a
05c60b306979935e5e4f2339a0ceece783893813:
title: 'ALSA: usb-audio: Support Yamaha P-125 quirk entry'
mainline: c286f204ce6ba7b48e3dcba53eda7df8eaa64dd9
backport: 3d810347c95892c8f2ad7524a9dfac7643a838d2
ef0a0e616b2789bb804a0ce5e161db03170a85b6:
title: 'xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration'
mainline: af8e119f52e9c13e556be9e03f27957554a84656
skipped: fixes patch not in branch
2fbc3c6736cb0a1c2738664bf9381d0c96fb7a06:
title: 'arm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE'
mainline: a21dcf0ea8566ebbe011c79d6ed08cdfea771de3
skipped: fixes patch not in branch
a809f6d8b10ce6d42e205a49c8855def77e1d452:
title: 'dm resume: don''t return EINVAL when signalled'
mainline: 7a636b4f03af9d541205f69e373672e7b2b60a8a
backport: ceb3e3f9e1dc2aabfbe3ad010e400a085270ea3b
90a6b797e95d0f4bef30fbab423759f4e9999506:
title: 'dm persistent data: fix memory allocation failure'
mainline: faada2174c08662ae98b439c69efe3e79382c538
backport: 058be20653b9ce45b758e8e9f41c91f4fd51eebc
188729977a0cfac6e04a59bf75f85ccd19ad4b4d:
title: 'bitmap: introduce generic optimized bitmap_size()'
mainline: a37fbe666c016fd89e4460d0ebfcea05baba46dc
skipped: commit did not cherry-pick cleanly
ee501f827f3db02d4e599afbbc1a7f8b792d05d7:
title: fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE
mainline: 9a2fa1472083580b6c66bdaf291f591e1170123a
skipped: commit did not cherry-pick cleanly
5d93f05ed258c92a8925b74bc36101af36c22732:
title: 'selinux: fix potential counting error in avc_add_xperms_decision()'
mainline: 379d9af3f3da2da1bbfa67baf1820c72a080d1f1
backport: e12d520dc158be6dc4177147186a5ae53ebc2aaa
c5e2c86aef97d4b17ccb52879ab524a36a93566d:
title: 'drm/amdgpu: Actually check flags for all context ops.'
mainline: 0573a1e2ea7e35bff08944a40f1adf2bb35cea61
backport: 854d4d53234aa5ebf5ec8dc947cb5a8e3288bf9d
fa5bfdf6cb5846a00e712d630a43e3cf55ccb411:
title: 'memcg_write_event_control(): fix a user-triggerable oops'
mainline: 046667c4d3196938e992fba0dfcde570aa85cd0e
backport: 6f2b82ee5ceb2de5411a2742b352030f08ae183b
537201a9c9d82d3809de8e692465671b98d7cf77:
title: 's390/cio: rename bitmap_size() -> idset_bitmap_size()'
mainline: c1023f5634b9bfcbfff0dc200245309e3cde9b54
backport: 0671b47894f55a65eee7907574ae9a4e6a681be8
81bec94f5d864318fa4fccfd06e5449c501885b7:
title: 'overflow.h: Add flex_array_size() helper'
mainline: b19d57d0f3cc6f1022edf94daf1d70506a09e3c2
backport: ebb9622683941bdd58ebee5b744d9dd27d2cbe92
1f5cbd78177975aece64bb132948f611af2359c0:
title: 'overflow: Implement size_t saturating arithmetic helpers'
mainline: e1be43d9b5d0d1310dbd90185a8e5c7145dde40f
backport: c698c6c7ce9f267ce483b4276c10daedfae14295
eeca0881c04b07e053cd24b455012b6abd164328:
title: 'btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits()'
mainline: 4ca532d64648d4776d15512caed3efea05ca7195
backport: 5e78e68997f6e81f5ea7b7d7adcb0299f6cbe0eb
fe8dfead9acd674715c993094280f0b3990ff359:
title: 'net/mlx5e: Correctly report errors for ethtool rx flows'
mainline: cbc796be1779c4dbc9a482c7233995e2a8b6bfb3
skipped: fixes patch not in branch
628ea82190a678a56d2ec38cda3addf3b3a6248d:
title: 'atm: idt77252: prevent use after free in dequeue_rx()'
mainline: a9a18e8f770c9b0703dab93580d0b02e199a4c79
backport: 9c791f3833511ef47bd93f0069b3f216dc800843
bf845a2bcc6c8e373108b8fa940bfa9aac3ff9dd:
title: 'net: dsa: vsc73xx: pass value in phy_write operation'
mainline: 5b9eebc2c7a5f0cc7950d918c1e8a4ad4bed5010
skipped: fixes patch not in branch
b0862789cc11a214d31b6ff9c74bfede90dfb68d:
title: 'ssb: Fix division by zero issue in ssb_calc_clock_rate'
mainline: e0b5127fa134fe0284d58877b6b3133939c8b3ce
backport: cb51898f8eec5dd8524115da29d9414c6a117f67
2d109cefa3a51a6d826914f441a40d9efb1143b6:
title: 'wifi: cw1200: Avoid processing an invalid TIM IE'
mainline: b7bcea9c27b3d87b54075735c870500123582145
backport: f4d17cd8acb0d59a0c6e16c00d411e4047ce4af9
ce13105a492c91dce263198708b86773569ce370:
title: 'i2c: riic: avoid potential division by zero'
mainline: 7890fce6201aed46d3576e3d641f9ee5c1f0e16f
skipped: fixes non-present commit d982d66514192cdbe74eababa63d0a69be4b0ce1
936a24249747e0d995fc2d66524b043a3d158705:
title: 'staging: ks7010: disable bh on tx_dev_lock'
mainline: 058cbee52ccd7be77e373d31a4f14670cfd32018
backport: f22c4b1e57a22b1e5b6a0754286c8136ed290c14
263bcebf5c2ab1fe949517225157f34015124620:
title: 'binfmt_misc: cleanup on filesystem umount'
mainline: 1c5976ef0f7ad76319df748ccb99a4c7ba2ba464
backport: 0f4437492406977e2f14c77e67956facd888765d
5fe4af45db7988a0df3533d45aba085771654811:
title: 'scsi: spi: Fix sshdr use'
mainline: 0b149cee836aa53989ea089af1cb9d90d7c6ac9e
backport: 5e532c67718aa680857ff1bf76bf470f93dbf92d
686ef69ca191dcba8d325334c65a04a2589383e6:
title: 'gfs2: setattr_chown: Add missing initialization'
mainline: 2d8d7990619878a848b1d916c2f936d3012ee17d
backport: 431cbbd124292f497b4862a88ac60015765adb49
6b344eb86f3b47e18d8fc2b0ae3e8e927f098994:
title: 'wifi: iwlwifi: abort scan when rfkill on but device enabled'
mainline: 3c6a0b1f0add72e7f522bc9145222b86d0a7712a
backport: e0961317d13c9d29d8901ab4053bf102b9595b6e
479a0cffcca7e3672a7db5f9e23b147fb6cfba39:
title: 'powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu'
mainline: 45b1ba7e5d1f6881050d558baf9bc74a2ae13930
backport: 4297287b1132064e10b140991aa9d465d1926c24
cac7c9fcd15e92184c8e621b1f33d97d99505366:
title: 'ext4: do not trim the group with corrupted block bitmap'
mainline: 172202152a125955367393956acf5f4ffd092e0d
backport: 0c2fd9f775685c502a30310255f91b826b979cbf
c08d02053b9e98dffea9b9b378dc90547e4621e8:
title: 'quota: Remove BUG_ON from dqget()'
mainline: 249f374eb9b6b969c64212dd860cc1439674c4a8
backport: df321d5b02416398d284e7af74bf4dfce4879e83
8e31b096e2e1949bc8f0be019c9ae70d414404c6:
title: 'media: pci: cx23885: check cx23885_vdev_init() return'
mainline: 15126b916e39b0cb67026b0af3c014bfeb1f76b3
backport: 4e2660eb12ff478bc6604d3b6d34d5052a2e5a3e
8ca5b21fa9b2c13aad93a97992b92f9360988fe9:
title: 'fs: binfmt_elf_efpic: don''t use missing interpreter''s properties'
mainline: 15fd1dc3dadb4268207fa6797e753541aca09a2a
backport: eba1af4c431230bd41b1018f1000f95e02f2ef92
50568ec1402e601125845835c326310031c65c81:
title: 'scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list()'
mainline: 3d0f9342ae200aa1ddc4d6e7a573c6f8f068d994
backport: 7cb20343fea9c616687a8ba6feb41a543f94e57e
7783533f788e59691102bae6e2df03f2109624de:
title: 'net/sun3_82586: Avoid reading past buffer in debug output'
mainline: 4bea747f3fbec33c16d369b2f51e55981d7c78d0
backport: 8ab663cd2711e234d222565fc86632a09319263a
5c11581df1f58c43ce8b2e9c14184ab1f75c883f:
title: 'md: clean up invalid BUG_ON in md_ioctl'
mainline: 9dd8702e7cd28ebf076ff838933f29cf671165ec
backport: 7ce64ccc2ff813b5cccd19298f889c464cab3f4d
fea29d479eb470102cd025d9279503a2bfd28c60:
title: 'parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367'
mainline: 73cb4a2d8d7e0259f94046116727084f21e4599f
backport: 172e698211ff81d1c66161b4591efc8c21c350dc
cd146e31691187ec22b404a2771db199d370d59d:
title: 'powerpc/boot: Handle allocation failure in simple_realloc()'
mainline: 69b0194ccec033c208b071e019032c1919c2822d
backport: d8893f4de9af18d7878cef063d94387d122e9901
1180feef209487d2a95ba8fede71ec6add2e8e52:
title: 'powerpc/boot: Only free if realloc() succeeds'
mainline: f2d5bccaca3e8c09c9b9c8485375f7bdbb2631d2
backport: 8d63c5821851b1b13fe34eb0d41189cc05b498a9
be9ce497c7cb293f93cf98ef563b6456bac75686:
title: 'btrfs: change BUG_ON to assertion when checking for delayed_node root'
mainline: be73f4448b607e6b7ce41cd8ef2214fdf6e7986f
backport: b52a80ebbf8e6be987ee8e40a7a1d7e550cafe3f
ebce7d482d1a08392362ddf936ffdd9244fb1ece:
title: 'btrfs: handle invalid root reference found in may_destroy_subvol()'
mainline: 6fbc6f4ac1f4907da4fc674251527e7dc79ffbf6
backport: 4ae1ece59eff262456026a20164702f8ecfa2875
f0b54836bf2ff59b866a6db481f9ad46fa30b642:
title: 'btrfs: send: handle unexpected data in header buffer in begin_cmd()'
mainline: e80e3f732cf53c64b0d811e1581470d67f6c3228
backport: b1410389811d63127bd09bd1f21adba03e686b23
5ae1493c5eac1a7a7ced34970a24cb3a5680a63b:
title: 'btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent()'
mainline: f40a3ea94881f668084f68f6b9931486b1606db0
backport: 0a7ed5945f5b2fb92877188e2ebc78067937f7cc
3c2c864f19490da6e892290441ba7dcc7bae2576:
title: 'f2fs: fix to do sanity check in update_sit_entry'
mainline: 36959d18c3cf09b3c12157c6950e18652067de77
backport: 00705650825973da3c2fceae82def9e4eda121e4
29d8f0e05a33200db97d4b38c995c843a70f71e5:
title: 'usb: gadget: fsl: Increase size of name buffer for endpoints'
mainline: 87850f6cc20911e35eafcbc1d56b0d649ae9162d
backport: 7bc6f5f8bbb72993c108fa3f26283bd9c1406cc0
01ed379cb5ddc0049a348786b971fe53a31e6255:
title: 'Bluetooth: bnep: Fix out-of-bound access'
mainline: 0f0639b4d6f649338ce29c62da3ec0787fa08cd1
backport: 4eb6b4890ed3c23303144f9a5cd341b7b22a1612
4980d45cca2b1135a1ab3dea101425cf44da72cd:
title: 'NFS: avoid infinite loop in pnfs_update_layout.'
mainline: 2fdbc20036acda9e5694db74a032d3c605323005
backport: cfe972295c3312e0a91aa910d94770ecd44179ac
3979298b8033989f86d74ab47745e5fbe84a4ebb:
title: 'openrisc: Call setup_memory() earlier in the init sequence'
mainline: 7b432bf376c9c198a7ff48f1ed14a14c0ffbe1fe
backport: ca6e68d71ece21decaa46ff8b3694570e712b738
da6cc71ff6c8e6b5076e80550b4e79a3d8f111be:
title: 's390/iucv: fix receive buffer virtual vs physical address confusion'
mainline: 4e8477aeb46dfe74e829c06ea588dd00ba20c8cc
backport: 4832811162db2d2312cb89ee37849338312e6590
320bb9a5a6b79ba123d1e1f746edb52b41c7c1fb:
title: 'usb: dwc3: core: Skip setting event buffers for host only controllers'
mainline: 89d7f962994604a3e3d480832788d06179abefc5
backport: a4dc7b3a5f855afff980b9dcb0e2ceb24f7868d2
139510ec274c7cc8739bb8f63aed70e425c2f0d8:
title: 'irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc'
mainline: 382d2ffe86efb1e2fa803d2cf17e5bfc34e574f3
backport: 2236d13af575a3658cee60e8db880740509d5b66
2f64ae32831e5a2bfd0e404c6e63b399eb180a0a:
title: 'ext4: set the type of max_zeroout to unsigned int to avoid overflow'
mainline: 261341a932d9244cbcd372a3659428c8723e5a49
backport: 90ef0457118eaeab238228f223059b1f93389d73
66fce1c83e2def702dd6a7fb77e986c062b20972:
title: 'nvmet-rdma: fix possible bad dereference when freeing rsps'
mainline: 73964c1d07c054376f1b32a62548571795159148
backport: 2e31c2b032e1c2868c06b57b319907c83004eddc
ccef3adcb84816a30b8e535c8c4fcb167904e7b1:
title: 'hrtimer: Prevent queuing of hrtimer without a function callback'
mainline: 5a830bbce3af16833fe0092dec47b6dd30279825
backport: b02d82c6edb6abc9c87d281af2b3050e618f2fa1
3d89d0c4a1c6d4d2a755e826351b0a101dbc86f3:
title: 'gtp: pull network headers in gtp_dev_xmit()'
mainline: 3a3be7ff9224f424e485287b54be00d2c6bd9c40
backport: 8e448b4536e8b8cc387052bdb058ca595627bf1f
ee12aa483f6c8cecbd5a4c794867fee0e068b822:
title: 'block: use "unsigned long" for blk_validate_block_size().'
mainline: 37ae5a0f5287a52cf51242e76ccf198d02ffe495
backport: 30a1325eab21676ba9c453de44e70fe598a6b8e0
67cddb2a1b256941952ebf501f8fc4936b704c8b:
title: 'Bluetooth: Make use of __check_timeout on hci_sched_le'
mainline: 1b1d29e5149990e44634b2e681de71effd463591
backport: 52e5665bbc50c235e1498d2f40d1004c817a7895
edb7dbcf8c1e95dc18ada839526ff86df3258d11:
title: 'Bluetooth: hci_core: Fix not handling link timeouts propertly'
mainline: 116523c8fac05d1d26f748fee7919a4ec5df67ea
backport: 874a31d69b75d57b7e017d7418a5e4ab4e537dc0
08829a8ff1303b1a903d1417dc0a06ffc7d17044:
title: 'Bluetooth: hci_core: Fix LE quote calculation'
mainline: 932021a11805b9da4bd6abf66fe233cccd59fe0e
backport: ac7a5e553fe290082863eac89a4c79ec941a947c
8c9cdbf600143bd6835c8b8351e5ac956da79aec:
title: 'kcm: Serialise kcm_sendmsg() for the same socket.'
mainline: 807067bf014d4a3ae2cc55bd3de16f22a01eb580
backport: 6bff278ca0373109466e5e16c2b5b7feb2d275cc
31c28919a99f5c491e3cce4fa7293b12e330e247:
title: 'netfilter: nft_counter: Synchronize nft_counter_reset() against reader.'
mainline: a0b39e2dc7017ac667b70bdeee5293e410fab2fb
backport: 7308cdf114aa3e10b931d967f9c6224bea4da005
571567e0277008459750f0728f246086b2659429:
title: 'ipv6: prevent UAF in ip6_send_skb()'
mainline: faa389b2fbaaec7fd27a390b4896139f9da662e3
backport: 9011fa8f8e5bc75aa260d56c3c0f6fbfbd4f55d1
e15ae5f903e1e54594a55146973d1e615519ae97:
title: 'net: xilinx: axienet: Always disable promiscuous mode'
mainline: 4ae738dfef2c0323752ab81786e2d298c9939321
backport: 019fc01257a13f075f7bd93a6fa8e02d822dacbd
2eb83c10a7a5df6ba6f03bb50a22bf5b1145b050:
title: 'drm/msm: use drm_debug_enabled() to check for debug categories'
mainline: d8db0b36d888b6a5eb392f112dc156e694de2369
skipped: missing comming 25fdd5933e4c0f5fe2ea5cd59994f8ac5fbe90ef
a996a9abce790d5bd417fac336117f0436b9f87c:
title: 'drm/msm/dpu: don''t play tricks with debug macros'
mainline: df24373435f5899a2a98b7d377479c8d4376613b
skipped: fixes patch not in branch
e97be13a9f51284da450dd2a592e3fa87b49cdc9:
title: 'mmc: mmc_test: Fix NULL dereference on allocation failure'
mainline: a1e627af32ed60713941cbfc8075d44cad07f6dd
backport: a2b9cfe9687c3389a4cbc8b8e665baad4ef6087f
11b4b0e63f2621b33b2e107407a7d67a65994ca1:
title: 'Bluetooth: MGMT: Add error handling to pair_device()'
mainline: 538fd3921afac97158d4177139a0ad39f056dbb2
backport: ff165baf4bce33ecf7d628676ff606401ceb317f
10ddadfab0272f37c9c73095c089970e65b38824:
title: 'HID: wacom: Defer calculation of resolution until resolution_code is known'
mainline: 1b8f9c1fb464968a5b18d3acc1da8c00bad24fad
backport: 0ab5b59ccee3b6a0b46021458d60a8a7d3497bcc
4ffb49d818131d1243b85e19cae23bbc27f4a409:
title: 'cxgb4: add forgotten u64 ivlan cast before shift'
mainline: 80a1e7b83bb1834b5568a3872e64c05795d88f31
skipped: fixes patch not in branch
714ac96c0d6e594b50d89d79e07ae76d22040b73:
title: 'mmc: dw_mmc: allow biu and ciu clocks to defer'
mainline: 6275c7bc8dd07644ea8142a1773d826800f0f3f7
backport: 9d1b2b527ab3dd13c18c3460b50f474ede01cacf
bfe0ba951567d9e4a2c60424d12067000ee27158:
title: 'ALSA: timer: Relax start tick time check for slave timer elements'
mainline: ccbfcac05866ebe6eb3bc6d07b51d4ed4fcde436
backport: 408390db2ed1d018b5f958bec4dc86cf1d27fe77
aea24ef5e9b2bbc5d5d05e39b10573971b91241c:
title: 'Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO'
mainline: 9c33663af9ad115f90c076a1828129a3fbadea98
backport: 2ec8267b2741c4c576ec568dbfb4802d2880345f
2829c80614890624456337e47320289112785f3e:
title: 'Input: MT - limit max slots'
mainline: 99d3bf5f7377d42f8be60a6b9cb60fb0be34dceb
backport: f0ca8ebc5b58f920ed33dd6bd7d7e515744eb362
bef72d1acb7fadfc7a9d896da5004dfa5beb106c:
title: 'tools: move alignment-related macros to new <linux/align.h>'
mainline: 10a04ff09bcc39e0044190ffe9f00f998f13647c
skipped: (unknown reason)
d35cf41c8eb5d9fe95b21ae6ee2910f9ba4878e8:
title: 'drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc'
mainline: 88a9a467c548d0b3c7761b4fd54a68e70f9c0944
backport: c3429e72b0b782a2bbaafb19d69018b65d0bd26f
0a2bab5ed161318f57134716accba0a30f3af191:
title: 'pinctrl: single: fix potential NULL dereference in pcs_get_function()'
mainline: 1c38a62f15e595346a1106025722869e87ffe044
backport: 88f275a1e9972573add8003dc920818f17e8750a
42a15750b777edcb9be4eeea16ea04c0c4869cdc:
title: 'wifi: mwifiex: duplicate static structs used in driver instances'
mainline: 27ec3c57fcadb43c79ed05b2ea31bc18c72d798a
backport: 202eaab237a3cc7da4b688a77234744f62f31ccf
ac7f3b1e424f2f38e81d27d7e1ecb30dcd9dd651:
title: 'dm suspend: return -ERESTARTSYS instead of -EINTR'
mainline: 1e1fd567d32fcf7544c6e09e0e5bc6c650da6e23
backport: 17fc0471635d9dca0781f8c90dbbd4161950b9fc
868e60c28c2e838a005b41d2f69e923a07080a48:
title: 'scsi: mpt3sas: Avoid IOMMU page faults on REPORT ZONES'
mainline: 82dbb57ac8d06dfe8227ba9ab11a49de2b475ae5
backport: 2df5bdcc5b24b465d66f322073a523ba9ed852f3
a1177ea83da87a87cc352aa41f24d61c08c80b5d:
title: 'filelock: Correct the filelock owner in fcntl_setlk/fcntl_setlk64'
34666cab862a8154013713aaee0cc5da1241dd75:
title: 'media: uvcvideo: Fix integer overflow calculating timestamp'
mainline: 8676a5e796fa18f55897ca36a94b2adf7f73ebd1
backport: 16913ef7e6317548e59036f4ee331d6f2f7f8913
d9c4df80b1b009de1eb77c07e3bb4d45bd212aa5:
title: 'ata: libata-core: Fix null pointer dereference on error'
mainline: 5d92c7c566dc76d96e0e19e481d926bbe6631c1e
skipped: fixes commit 2623c7a5f2799569d8bb05eb211da524a8144cb3 not in 4.14
27d6dbdc6485d68075a0ebf8544d6425c1ed84bb:
title: 'cgroup/cpuset: Prevent UAF in proc_cpuset_show()'
mainline: 1be59c97c83ccd67a519d8a49486b3a8a73ca28a
backport: 4284ad6ee12894faa3fdfcc584a32aa4ce2a4fbc
9e235ce6facfef2cbde3e2a5f1ccce28d341880f:
title: 'memcg: enable accounting of ipc resources'
mainline: 18319498fdd4cdf8c1c2c48cd432863b1f915d6f
backport: f477af54dbe386b3ab323b5b765910e0e7851180
54eaaac622d4547b4abae7e44763b29fa0687132:
title: 'fbcon: Prevent that screen size is smaller than font size'
mainline: e64242caef18b4a5840b0e7a9bff37abd4f4f933
backport: cb4213b43b1c11a9c6a01ab412a48a78f372ec69
f453f32f13320137f2317c0ad7ae1c20508effca:
title: 'fbmem: Check virtual screen sizes in fb_set_var()'
mainline: 6c11df58fd1ac0aefcb3b227f72769272b939e56
backport: fc15b7d69dd3b6418c8de3a3ff52a2d380d76d92
6a967835748472229da405bdb7780f98084c6ebc:
title: 'net:rds: Fix possible deadlock in rds_message_put'
mainline: f1acf1ac84d2ae97b7889b87223c1064df850069
backport: ae877b9999278eedaf73d6e0e2797d3ed613d802
89db5346acb5a15e670c4fb3b8f3c30fa30ebc15:
title: 'ida: Fix crash in ida_free when the bitmap is empty'
mainline: af73483f4e8b6f5c68c9aa63257bdd929a9c194a
backport: 2cd2e32fc40226fe651a178ec13c343b18a58ba5
0d3ffbbf8631d6db0552f46250015648991c856f:
title: 'net: prevent mss overflow in skb_segment()'
mainline: 23d05d563b7e7b0314e65c8e882bc27eac2da8e7
backport: b9b5914ae919e100f936acf89c40564438eea7ca
2d63d5363dea478efd3ea37274332e399f4e5447:
title: 'soundwire: stream: fix programming slave ports for non-continous port maps'
mainline: ab8d66d132bc8f1992d3eb6cab8d32dda6733c84
skipped: fixes patch not in branch
620fe9809752fae91b4190e897b81ed9976dfb39:
title: 'gtp: fix a potential NULL pointer dereference'
mainline: defd8b3c37b0f9cb3e0f60f47d3d78d459d57fda
backport: 05748e7d5793a9b4006096221f8c991a7eaf3849
1b1f0890fb51fc50bf990a800106a133f9036f32:
title: 'net: busy-poll: use ktime_get_ns() instead of local_clock()'
mainline: 0870b0d8b393dde53106678a1e2cec9dfa52f9b7
backport: 843fa098a51e412907dcd804d8e7cc3c28945edd
43f8d47eaa36c16eb0beafdedbfba51220b4fe69:
title: 'cdc-acm: Add DISABLE_ECHO quirk for GE HealthCare UI Controller'
mainline: 0b00583ecacb0b51712a5ecd34cf7e6684307c67
backport: 0089d92552aa7a94e2edb2441fe9017e20c4f63d
50f98b68051d01216bd59df5d0673d7a442d17cd:
title: 'USB: serial: option: add MeiG Smart SRM825L'
mainline: 9a471de516c35219d1722c13367191ce1f120fe9
backport: f44a24bcd5833a5b5d32a0bab95bed37a86cbf55
9c80a94d388528add073955108a1eeeed4c1c5ea:
title: 'usb: dwc3: omap: add missing depopulate in probe error path'
mainline: 2aa765a43817ec8add990f83c8e54a9a5d87aa9c
backport: c180e1013eb6b4db7ddf220491a2e325b7fcf06e
eca3f543f817da87c00d1a5697b473efb548204f:
title: 'usb: dwc3: core: Prevent USB core invalid event buffer address access'
mainline: 14e497183df28c006603cc67fd3797a537eef7b9
backport: 347ecd5288aaff7fcc0828d8e2bbd122cce42a43
b0979a885b9d4df2a25b88e9d444ccaa5f9f495c:
title: 'usb: dwc3: st: fix probed platform device ref count on probe error path'
mainline: ddfcfeba891064b88bb844208b43bef2ef970f0c
backport: f86e58bf1c74fcdfcfb78baecf156127409442be
0e9d60d0da23b5c344aaad9cb2088684f8548f9f:
title: 'usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes()'
mainline: 3a8839bbb86da7968a792123ed2296d063871a52
backport: 2a00c7c9045d6b359ab6b51e71ab4be6f4dac461
d237c7d06ffddcdb5d36948c527dc01284388218:
title: 'scsi: aacraid: Fix double-free on probe failure'
mainline: 919ddf8336f0b84c0453bac583808c9f165a85c2
backport: caebf7249fb7bd0cb68e7b6f8a88f033d82ac221
72793f5cc9e41f9ee33353d4594036817529b766:
title: 'ipc: remove memcg accounting for sops objects in do_semtimedop()'
mainline: 6a4746ba06191e23d30230738e94334b26590a8a
backport: 30eb6ce857111743822a317414a1f183319a105a
0975670c14287183571d01858e8020114a14d76a:
title: 'drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var'
mainline: 1935f0deb6116dd785ea64d8035eab0ff441255b
backport: 6c3aa8fda82fedf05e697ef8c57d92c3b9d838b8

View File

@@ -0,0 +1,384 @@
226a6773a78d4fd27c03cfdf1f811dbf278fb3d0:
title: 'net: usb: qmi_wwan: add MeiG Smart SRM825L'
mainline: 1ca645a2f74a4290527ae27130c8611391b07dbf
backport: a1474ea9b7ab89dba81a2449bf4a4173115b06a7
82dde26c330f14cee56ea30bb1044f4b514c67b5:
title: 'usb: dwc3: st: Add of_node_put() before return in probe function'
mainline: e36721b90144bb46e1b6477be3ab63439c7fb79b
backport: 107fdbcb323ac570bf914e6f547a8d923b82c087
a3718c676adb9dbc24dc7b9b293020c9a20f3fdb:
title: 'usb: dwc3: st: add missing depopulate in probe error path'
mainline: cd4897bfd14f6a5388b21ba45a066541a0425199
backport: 1dfc1828c8cfae2b2e8023a4a4eab6734214d2f9
f00ce6b3344b744af491d1edda9905b188f590a7:
title: 'drm/amdgpu: Fix uninitialized variable warning in amdgpu_afmt_acr'
mainline: c0d6bd3cd209419cc46ac49562bef1db65d90e70
backport: a1a53372278da6b1ddd71cdbfdae497c4dba7140
d1ab22df511cbe4a358421876153f4e1212132e2:
title: 'drm/amdgpu: fix overflowed array index read warning'
mainline: ebbc2ada5c636a6a63d8316a3408753768f5aa9f
backport: f8501ae9f302ddb01fd9011ac99b01c2c0f3a8b9
82ac8f1d02886b5d8aeb9e058989d3bd6fc581e2:
title: 'drm/amdgpu: fix ucode out-of-bounds read warning'
mainline: 8944acd0f9db33e17f387fdc75d33bb473d7936f
backport: 4012cee5397a8c2a5f2caf45957ab78b2309f300
5fa4df25ecfc7b6c9006f5b871c46cfe25ea8826:
title: 'drm/amdgpu: fix mc_data out-of-bounds read warning'
mainline: 51dfc0a4d609fe700750a62f41447f01b8c9ea50
backport: ff8f82a22c6faf27e9feb0c9b241d2fdd8c02584
456eb7de5747bcb505ce326dcaf9938f94735d16:
title: 'drm/amdkfd: Reconcile the definition and use of oem_id in struct kfd_topology_device'
mainline: 10f624ef239bd136cdcc5bbc626157a57b938a31
skipped: missing commit 520b8fb755ccfb07d8d743da5753cff1fcb74b9f
8d9da10a392a32368392f7a16775e1f36e2a5346:
title: 'apparmor: fix possible NULL pointer dereference'
mainline: 3dd384108d53834002be5630132ad5c3f32166ad
backport: 2b98e85d650c2c302dd61cf66485f99db7cfd9d9
ebc88484fc780068bce82e9a593513f7f9ed947c:
title: 'usbip: Don''t submit special requests twice'
mainline: 8b6b386f9aa936ed0c190446c71cf59d4a507690
backport: 570892930fbd745b1d6cf987586c4eddbe200732
d3f56c653c65f170b172d3c23120bc64ada645d8:
title: 'smack: tcp: ipv4, fix incorrect labeling'
mainline: 2fe209d0ad2e2729f7e22b9b31a86cc3ff0db550
backport: 4a9d23f110f9514fc28a67c5614565252b52965d
d1a4c613dd3ef57978fc366b4e3d72cd5083a1f9:
title: 'media: uvcvideo: Enforce alignment of frame and interval'
mainline: c8931ef55bd325052ec496f242aea7f6de47dc9c
backport: b0fb4622839090361ca56ed8b7d38780aca24f55
9f4af4cf08f9a0329ade3d938f55d2220c40d0a6:
title: 'block: initialize integrity buffer to zero before writing it to media'
mainline: 899ee2c3829c5ac14bfc7d3c4a5846c0b709b78f
backport: 18c1fde63128e9b0344b428cb18d2fb4b96b1399
19ac6f29bf64304ef04630c8ab56ecd2059d7aa1:
title: 'virtio_net: Fix napi_skb_cache_put warning'
mainline: f8321fa75102246d7415a6af441872f6637c93ab
skipped: fixes patch not in branch
a6211d4d3df3a5f90d8bcd11acd91baf7a3c2b5d:
title: 'udf: Limit file size to 4TB'
mainline: c2efd13a2ed4f29bf9ef14ac2fbb7474084655f8
backport: a47099495b459b9993552d22ae3f76829108947b
218f0478064e246c557d0319623eeb56f0827a8e:
title: 'ALSA: usb-audio: Sanity checks for each pipe and EP types'
mainline: 801ebf1043ae7b182588554cc9b9ad3c14bc2ab5
backport: 52e9edf6bcb1f0423742ad0ddf4baa5c2ffdf4db
5c4b0a778419d9deab8557265f4b3fd6f0e97e11:
title: 'ALSA: usb-audio: Fix gpf in snd_usb_pipe_sanity_check'
mainline: 5d78e1c2b7f4be00bbe62141603a631dc7812f35
backport: 787a4aa45f59ee42152a1775f54050dbc6b13a06
f0bddb4de043399f16d1969dad5ee5b984a64e7b:
title: 'sch/netem: fix use after free in netem_dequeue'
mainline: 3b3a2a9c6349e25a025d2330f479bc33a6ccb54a
backport: 458dd5f94d634c30594a935563c1e2c8accd0656
94e0cace44fe2b888cffc1c6905d1a9bfcf57c7a:
title: 'ALSA: hda/conexant: Add pincfg quirk to enable top speakers on Sirius devices'
mainline: 4178d78cd7a86510ba68d203f26fc01113c7f126
backport: 140cbd4f60beb751e66e7414f08df77f7f0d645b
f7827b47e9b2c72de0fa7cde388fdd407797be1b:
title: 'ata: libata: Fix memory leak for error path in ata_host_alloc()'
mainline: 284b75a3d83c7631586d98f6dede1d90f128f0db
skipped: fixes patch not in branch
32bd402f6760d57127d58a9888553b2db574bba6:
title: 'mmc: dw_mmc: Fix IDMAC operation with pages bigger than 4K'
mainline: 8396c793ffdf28bb8aee7cfe0891080f8cab7890
backport: 196ea167c8411ea8dbd90668b9fe48bf953bd474
13d787bb4f21b6dbc8d8291bf179d36568893c25:
title: 'fuse: use unsigned type for getxattr/listxattr size truncation'
mainline: b18915248a15eae7d901262f108d6ff0ffb4ffc1
backport: a5a11287ead5951b4549f86b5d2abcc44a5efd6b
30f9f759d7ed96735d5fe70330aab3a65456ba5f:
title: 'clk: qcom: clk-alpha-pll: Fix the pll post div mask'
mainline: 2c4553e6c485a96b5d86989eb9654bf20e51e6dd
skipped: fixes patch not in branch
35a9a7a7d94662146396199b0cfd95f9517cdd14:
title: 'nilfs2: fix missing cleanup on rollforward recovery error'
mainline: 5787fcaab9eb5930f5378d6a1dd03d916d146622
backport: 812eaaab959885afdf5739337e7180e633b26734
40a2757de2c376ef8a08d9ee9c81e77f3c750adf:
title: 'nilfs2: fix state management in error path of log writing function'
mainline: 6576dd6695f2afca3f4954029ac4a64f82ba60ab
backport: faf0987376cc48fb3896f0f3298ebfeda8f1a515
c6d593c2c931762848389d621e8e657367f62190:
title: 'ALSA: hda: Add input value sanity checks to HDMI channel map controls'
mainline: 6278056e42d953e207e2afd416be39d09ed2d496
backport: 19ece5b382d38b440e13d24e951cf79ec593ae68
81e45ff912bbc43526d6f21c7a79cc5a7159a5f5:
title: 'smack: unix sockets: fix accept()ed socket label'
mainline: e86cac0acdb1a74f608bacefe702f2034133a047
backport: d92a8bb1955ce159fbbe0c309a1d17ffea5c043a
1d755d4fb238315c3b3e50e6f3117a0d79f72c29:
title: 'irqchip/armada-370-xp: Do not allow mapping IRQ 0 and 1'
mainline: 3cef738208e5c3cb7084e208caf9bbf684f24feb
backport: 90e83f2f8444a176d359ff9bc4a40590427a3bc4
406fb2bc6548bbd61489637d1443606feaa7037a:
title: 'af_unix: Remove put_pid()/put_cred() in copy_peercred().'
mainline: e4bd881d987121dbf1a288641491955a53d9f8f7
backport: 3652428ca171b8aed1217a4162dedccd3dde1b5a
471b1417b35eb52913a48ca97492f06ab918569d:
title: 'netfilter: nf_conncount: fix wrong variable type'
mainline: 0b88d1654d556264bcd24a9cb6383f0888e30131
skipped: missing commit 625c556118f3c2fd28bb8ef6da18c53bd4037be4
c0c23130d38e8bc28e9ef581443de9b1fc749966:
title: 'udf: Avoid excessive partition lengths'
mainline: ebbe26fd54a9621994bc16b14f2ba8f84c089693
skipped: commit did not cherry-pick cleanly
c7167cbb59f0525f6726a621b37f2596ee1bbf83:
title: 'wifi: brcmsmac: advertise MFP_CAPABLE to enable WPA3'
mainline: dbb5265a5d7cca1cdba7736dba313ab7d07bc19d
backport: 26e28ffe556d6cd2f2fd43a8707e6b3d8dca24f3
75f8136cd4e74fca5d115c35954ed598fc771a8f:
title: 'media: qcom: camss: Add check for v4l2_fwnode_endpoint_parse'
mainline: 4caf6d93d9f2c11d6441c64e1c549c445fa322ed
backport: e0cb5088960d975715d2731a706914498e7cb018
d51b471ec7bd3dd9649dea1d77635512e61eaad5:
title: 'pcmcia: Use resource_size function on resource object'
mainline: 24a025497e7e883bd2adef5d0ece1e9b9268009f
backport: b9fb4137c73f884e41edb16dfbec9ec490efb4d6
5c680022c4e28ba18ea500f3e29f0428271afa92:
title: 'can: bcm: Remove proc entry when dev is unregistered.'
mainline: 76fe372ccb81b0c89b6cd2fec26e2f38c958be85
backport: f9ab8f03569d4406fc0adf3c667bc0c450280181
79c460784fc55ccf272fbe89290ff84d3e17341c:
title: 'igb: Fix not clearing TimeSync interrupts for 82580'
mainline: ba8cf80724dbc09825b52498e4efacb563935408
backport: 7e95e0c1c4750d584a8dacaefa62f506af3e510d
5f3806adb62e1360a561cbac0c15f9310740608b:
title: 'platform/x86: dell-smbios: Fix error path in dell_smbios_init()'
mainline: ffc17e1479e8e9459b7afa80e5d9d40d0dd78abb
skipped: fixes patch not in branch
5adf7fbdfa3e9e425b04771e1d64c4e184ad8fdb:
title: 'cx82310_eth: re-enable ethernet mode after router reboot'
mainline: ca139d76b0d9e59d18f2d2ec8f0d81b82acd6808
backport: 3f63ef4d3a6164cf90d31f26cb37976cbc32b5a9
3f255eda1818c6f2b4fb446c488339c66173dc6d:
title: 'drivers/net/usb: Remove all strcpy() uses'
mainline: 493c3ca6bd754d8587604496eb814f72e933075d
backport: ef1cdbe7efb9d4f237238f3a58b115ccae662a8f
40373e2bdf967ba982309ff06e3b8c7c79c4de0e:
title: 'net: usb: don''t write directly to netdev->dev_addr'
mainline: 2674e7ea22ba0e22a2d1603bd51e0b8f6442a267
backport: 70135ce17759946d0f4ccdbed51c21caccf22445
c9c76962b49ff37ed8dcf880eabeb74df3e0686e:
title: 'usbnet: modern method to get random MAC'
mainline: bab8eb0dd4cb995caa4a0529d5655531c2ec5e8e
backport: 5fb805c245cf8daf1568247ba755e3164c361d96
2579dc71bfa05f908c13decb27989c18be775e2d:
title: 'rfkill: fix spelling mistake contidion to condition'
mainline: f404c3ecc401b3617c454c06a3d36a43a01f1aaf
backport: 1c1073bf747c47629304662bd4e4acc3c347d499
c5a0142c4d33b5948879cd5ec0af50eb92109465:
title: 'net: bridge: add support for sticky fdb entries'
mainline: 435f2e7cc0b783615d7fbcf08f5f00d289f9caeb
skipped: commit did not cherry-pick cleanly
76c1d0d1cbedf122ed90cb64a05c440eedd39664:
title: 'bridge: switchdev: Allow clearing FDB entry offload indication'
mainline: e9ba0fbc7dd23a74e77960c98c988f59a1ff75aa
skipped: commit did not cherry-pick cleanly
9969873b374eac5b5ddd2948fbac886b50d850a8:
title: 'net: bridge: fdb: convert is_local to bitops'
mainline: 6869c3b02b596eba931a754f56875d2e2ac612db
skipped: commit did not cherry-pick cleanly
806d9b874077deb1b8a8c1cc1a600576603f03bb:
title: 'net: bridge: fdb: convert is_static to bitops'
mainline: 29e63fffd666f1945756882d4b02bc7bec132101
skipped: commit did not cherry-pick cleanly
f210d06825042341c7de635898115cb5e840023e:
title: 'net: bridge: fdb: convert is_sticky to bitops'
mainline: e0458d9a733ba71a2821d0c3fc0745baac697db0
skipped: commit did not cherry-pick cleanly
4b1bf0ea37f0a21fa948e364c623676730657795:
title: 'net: bridge: fdb: convert added_by_user to bitops'
mainline: ac3ca6af443aa495c7907e5010ac77fbd2450eaa
skipped: commit did not cherry-pick cleanly
d3bc290bdd518e056f5cfe82accb93d5ad8643c2:
title: 'net: bridge: fdb: convert added_by_external_learn to use bitops'
mainline: b5cd9f7c42480ede119a390607a9dbe6263f6795
skipped: commit did not cherry-pick cleanly
7d9933cb9990b8300075a853f5b2a5d3e4349629:
title: 'net: bridge: br_fdb_external_learn_add(): always set EXT_LEARN'
mainline: bee2ef946d3184e99077be526567d791c473036f
skipped: fixes patch not in branch
4c709ad8feaff418ded4561c6a87bcf4078f4a03:
title: 'net: dsa: vsc73xx: fix possible subblocks range of CAPT block'
mainline: 8e69c96df771ab469cec278edb47009351de4da6
skipped: fixes patch not in branch
75a34515eb1be431819ec00cd09fe3a3eb369cdb:
title: 'iommu/vt-d: Handle volatile descriptor status read'
mainline: b5e86a95541cea737394a1da967df4cd4d8f7182
backport: b3774dcec0995f6d31fa86bbfaeb74a5c6cda069
6760357063f593a17613e015aed2051cfd4197c6:
title: 'cgroup: Protect css->cgroup write under css_set_lock'
mainline: 57b56d16800e8961278ecff0dc755d46c4575092
backport: 9d86ad71865dd3a67f27923da2d87891801d26f2
3bedb7ce080690d0d6172db790790c1219bcbdd5:
title: 'um: line: always fill *error_out in setup_one_line()'
mainline: 824ac4a5edd3f7494ab1996826c4f47f8ef0f63d
backport: def0afb4a7e7e30bc08b1b4699dfe6802b2cbde1
c57834f37dc73410ed2eb11e1cc3fecad169b065:
title: 'devres: Initialize an uninitialized struct member'
mainline: 56a20ad349b5c51909cf8810f7c79b288864ad33
backport: 463af1bdfe4037d2d5c274ae3df6a1bda26cd3aa
4eb4085c1346d19d4a05c55246eb93e74e671048:
title: 'pci/hotplug/pnv_php: Fix hotplug driver crash on Powernv'
mainline: 335e35b748527f0c06ded9eebb65387f60647fda
backport: 33259e025b9efd8c18acbeaf5db24ff06db58459
05419d0056dcf7088687e561bb583cc06deba777:
title: 'hwmon: (adc128d818) Fix underflows seen when writing limit attributes'
mainline: 8cad724c8537fe3e0da8004646abc00290adae40
backport: c0cc4bee13a524d7aceb27690ac6be7ed8e61b70
93f0f5721d0cca45dac50af1ae6f9a9826c699fd:
title: 'hwmon: (lm95234) Fix underflows seen when writing limit attributes'
mainline: af64e3e1537896337405f880c1e9ac1f8c0c6198
backport: d93e9ac35391aef72db4a0aa274d27944dd0d673
298a55f11edd811f2189b74eb8f53dee34d4f14c:
title: 'hwmon: (nct6775-core) Fix underflows seen when writing limit attributes'
mainline: 0403e10bf0824bf0ec2bb135d4cf1c0cc3bf4bf0
backport: 676ca195a7e32432c84de0516609c98560dcf66f
93cf73a7bfdce683bde3a7bb65f270d3bd24497b:
title: 'hwmon: (w83627ehf) Fix underflows seen when writing limit attributes'
mainline: 5c1de37969b7bc0abcb20b86e91e70caebbd4f89
backport: 9c01d650e13a9098fd147c080994be18cb0689c9
a12cf97cbefa139ef8d95081f2ea047cbbd74b7a:
title: 'wifi: mwifiex: Do not return unused priv in mwifiex_get_priv_by_id()'
mainline: c145eea2f75ff7949392aebecf7ef0a81c1f6c14
backport: 6d47528d1743bbefff3fc7928d1e45e3faf03cd8
2d6a7a1ee3862d129c0e0fbd3cc147e185a379dc:
title: 'smp: Add missing destroy_work_on_stack() call in smp_call_on_cpu()'
mainline: 77aeb1b685f9db73d276bad4bb30d48505a6fd23
backport: 86ed63497a70309bcc68c61bf706e65e305318e9
2df0e48615f438cdf93f1469ed9f289f71440d2d:
title: 'btrfs: replace BUG_ON with ASSERT in walk_down_proc()'
mainline: 1f9d44c0a12730a24f8bb75c5e1102207413cc9b
backport: 8f9488fe41599c4aed2820b66097ab09f2bcfec8
c847b28a799733b04574060ab9d00f215970627d:
title: 'btrfs: clean up our handling of refs == 0 in snapshot delete'
mainline: b8ccef048354074a548f108e51d0557d6adfd3a3
backport: b6a6c52de6de81961175e7d2814f6d0193697a4c
0790b89c7e911003b8c50ae50e3ac7645de1fae9:
title: 'PCI: Add missing bridge lock to pci_bus_lock()'
mainline: a4e772898f8bf2e7e1cf661a12c60a5612c4afab
backport: dc087747546322a6d53d450c92456fcd0055a257
d09f1bf3d7f029558704f077097dbcd4dc5db8da:
title: 'btrfs: initialize location to fix -Wmaybe-uninitialized in btrfs_lookup_dentry()'
mainline: b8e947e9f64cac9df85a07672b658df5b2bcff07
backport: 8f68d6f65ec245d7f7641b540ef6ffed262df9cf
e239e44dcd419b13cf840e2a3a833204e4329714:
title: 'HID: cougar: fix slab-out-of-bounds Read in cougar_report_fixup'
mainline: a6e9c391d45b5865b61e569146304cff72821a5d
skipped: missing commit b8e759b8f6dab1c473c30ac12709095d0b81078e
9c6d189f0c1c59ba9a32326ec82a0b367a3cd47b:
title: 'Input: uinput - reject requests with unreasonable number of slots'
mainline: 206f533a0a7c683982af473079c4111f4a0f9f5e
backport: f406ab8753404479a45b87c930fed326b4db0f04
487f140d366f9b12edb11b97819c135676090bd2:
title: 'usbnet: ipheth: race between ipheth_close and error handling'
mainline: e5876b088ba03a62124266fa20d00e65533c7269
backport: b1981479ebd7e8d67c23753437a4282ef363b0a0
f82cb7f24032ed023fc67d26ea9bf322d8431a90:
title: 'Squashfs: sanity check symbolic link size'
mainline: 810ee43d9cd245d138a2733d87a24858a23f577d
backport: a909f13b25b358d7f4683648b5166214c609668f
d2a79494d8a5262949736fb2c3ac44d20a51b0d8:
title: 'of/irq: Prevent device address out-of-bounds read in interrupt map walk'
mainline: b739dffa5d570b411d4bdf4bb9b8dfd6b7d72305
backport: 8b67befd1d8e89bce21196d288327ef375731328
cff08d637389f4bf4a49a08ff0474bd6c2b27b97:
title: 'ata: pata_macio: Use WARN instead of BUG'
mainline: d4bc0a264fb482b019c84fbc7202dd3cab059087
backport: 265da992cd6d9a6ae82917b3f0bd343f5754b4b9
0edd1eac01afe0c2104bddd7d1cae985b0a4552c:
title: 'iio: buffer-dmaengine: fix releasing dma channel on error'
mainline: 84c65d8008764a8fb4e627ff02de01ec4245f2c4
backport: 1753cb7f5cd1bf2bdecd6126d4670ae4c5ea31d5
a1cad4f0340c50037bd3211bd43deff662d5287e:
title: 'iio: fix scale application in iio_convert_raw_to_processed_unlocked'
mainline: 8a3dcc970dc57b358c8db2702447bf0af4e0d83a
backport: 0c91f6e9cee80725ead1a4db722a1b7a0b575162
5e0a746e798cd962e478b54f50f6f39384f735bc:
title: 'nvmem: Fix return type of devm_nvmem_device_get() in kerneldoc'
mainline: c69f37f6559a8948d70badd2b179db7714dedd62
backport: 1c8fea7bc7b888039874f237abf53f28264f3d42
3d414b64ecf6fd717d7510ffb893c6f23acbf50e:
title: 'uio_hv_generic: Fix kernel NULL pointer dereference in hv_uio_rescind'
mainline: fb1adbd7e50f3d2de56d0a2bb0700e2e819a329e
skipped: fixes patch not in branch
45ab92b650f4ec42528b8c199b0a3ae04a71ea8b:
title: 'Drivers: hv: vmbus: Fix rescind handling in uio_hv_generic'
mainline: 6fd28941447bf2c8ca0f26fda612a1cabc41663f
skipped: fixes patch not in branch
f6365931bf7c07b2b397dbb06a4f6573cc9fae73:
title: 'VMCI: Fix use-after-free when removing resource in vmci_resource_remove()'
mainline: 48b9a8dabcc3cf5f961b2ebcd8933bf9204babb7
backport: 12663f3dcfaa591275c2b086a840edc9e86dc736
eeec87f317abb8b1ebb04b5d6823e941649d8293:
title: 'clocksource/drivers/imx-tpm: Fix return -ETIME when delta exceeds INT_MAX'
mainline: 5b8843fcd49827813da80c0f590a17ae4ce93c5d
backport: 3ed0ce0836c07ea1c3e635370ce04f5ab065ee90
143674856ebffeb785759892b1a11a7f5ecbd1f5:
title: 'clocksource/drivers/imx-tpm: Fix next event not taking effect sometime'
mainline: 3d5c2f8e75a55cfb11a85086c71996af0354a1fb
backport: 79b3fd21dd528f14d3d7f4f380db5a742f5903d4
32bb3588ccf08406931c7f061f0ef7a37cd38414:
title: 'uprobes: Use kzalloc to allocate xol area'
mainline: e240b0fde52f33670d1336697c22d90a4fe33c84
backport: 967a7ce0d7d61c1256391a197e81ba2a400ecf07
ac8ffa21dde0c1edcd9dd98b5555a0aa4eea3b1f:
title: 'ring-buffer: Rename ring_buffer_read() to read_buffer_iter_advance()'
mainline: bc1a72afdc4a91844928831cac85731566e03bc6
backport: ae2112e6a08779c541bc4b9b88ff58914f4ecf32
84bd537aaefb210218b5e1d982411fa6ae8429a1:
title: 'tracing: Avoid possible softlockup in tracing_iter_reset()'
mainline: 49aa8a1f4d6800721c7971ed383078257f12e8f9
backport: fdfd1ef491f5e5445d130169394ae68a45d1adcf
51af9b589ab68a94485ee55811d1243c6bf665b4:
title: 'nilfs2: replace snprintf in show functions with sysfs_emit'
mainline: 3bcd6c5bd483287f4a09d3d59a012d47677b6edc
backport: c77787e1b99270f880dae53e1c8e9f7d8ec8f5a1
b90beafac05931cbfcb6b1bd4f67c1923f47040e:
title: 'nilfs2: protect references to superblock parameters exposed in sysfs'
mainline: 683408258917541bdb294cd717c210a04381931e
backport: 2d65330b265ca1170d35cd861a82b35536f57c4e
bc596c2026c7f52dc12a784403ccfc3b152844e6:
title: 'netns: add pre_exit method to struct pernet_operations'
mainline: d7d99872c144a2c2f5d9c9d83627fa833836cba5
backport: 9541fb132b07ee39fa0c6d07655684f7d961c171
43d34110882b97ba1ec66cc8234b18983efb9abf:
title: 'ila: call nf_unregister_net_hooks() sooner'
mainline: 031ae72825cef43e4650140b800ad58bf7a6a466
skipped: commit did not cherry-pick cleanly
a30476afbaac69face9537cd8d0694d46d5d1ef5:
title: 'ACPI: processor: Return an error if acpi_processor_get_info() fails in processor_add()'
mainline: fadf231f0a06a6748a7fc4a2c29ac9ef7bca6bfd
backport: 9e65e5135c7d8451ee68b36d44f674429df4271a
00259ae5206a713234e3ac12a8a0f731e86b754b:
title: 'ACPI: processor: Fix memory leaks in error paths of processor_add()'
mainline: 47ec9b417ed9b6b8ec2a941cd84d9de62adc358a
backport: 89bbd019927a862339cb11beeb98a95c0269b25c
60e02cb604a8e2c755a9f0407d63539b586d3310:
title: 'drm/i915/fence: Mark debug_fence_init_onstack() with __maybe_unused'
mainline: fcd9e8afd546f6ced378d078345a89bf346d065e
skipped: fixes patch not in branch
76b1dda1598fc151610d3f372e24be1fcc8b396e:
title: 'drm/i915/fence: Mark debug_fence_free() with __maybe_unused'
mainline: f99999536128b14b5d765a9982763b5134efdd79
backport: c292e581abf5c0dfaf783e3ad2bda3502b5ab4be
432efdbe7da5ecfcbc0c2180cfdbab1441752a38:
title: 'rtmutex: Drop rt_mutex::wait_lock before scheduling'
mainline: d33d26036a0274b472299d7dcdaa5fb34329f91b
backport: 11ae525157eb075f44f3c6460fdd9a5642ada728
bc790261218952635f846aaf90bcc0974f6f62c6:
title: 'net, sunrpc: Remap EPERM in case of connection failure in xs_tcp_setup_socket'
mainline: 626dfed5fa3bfb41e0dffd796032b555b69f9cde
skipped: fixes patch not in branch
e70c0b7e280415e1511fb258f4b72733d765b80e:
title: 'cx82310_eth: fix error return code in cx82310_bind()'
mainline: cfbaa8b33e022aca62a3f2815ffbc02874d4cb8b
backport: 8b8a84237a675ff0a73827b2ba05745765a97f13
15605b333ddaa3e5e21dfebb65546c70bb167925:
title: 'netns: restore ops before calling ops_exit_list'
mainline: b272a0ad730103e84fb735fd0a8cc050cdf7f77c
backport: 61da5c1d99b77bb28d2579a64a05bfbf9447e43d
324954a057b3ab21a7be5c91e148c15c401332f0:
title: 'Revert "parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367"'
mainline: 73cb4a2d8d7e0259f94046116727084f21e4599f
backport: a66198e30ea76c75761c3f0323b31ba6be641824

View File

@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
VERSION = 4 VERSION = 4
PATCHLEVEL = 14 PATCHLEVEL = 14
SUBLEVEL = 353 SUBLEVEL = 355
EXTRAVERSION = -openela EXTRAVERSION = -openela
NAME = Petit Gorille NAME = Petit Gorille

View File

@@ -266,6 +266,9 @@ void calibrate_delay(void)
void __init setup_arch(char **cmdline_p) void __init setup_arch(char **cmdline_p)
{ {
/* setup memblock allocator */
setup_memory();
unflatten_and_copy_device_tree(); unflatten_and_copy_device_tree();
setup_cpuinfo(); setup_cpuinfo();
@@ -286,9 +289,6 @@ void __init setup_arch(char **cmdline_p)
initrd_below_start_ok = 1; initrd_below_start_ok = 1;
#endif #endif
/* setup memblock allocator */
setup_memory();
/* paging_init() sets up the MMU and marks all pages as reserved */ /* paging_init() sets up the MMU and marks all pages as reserved */
paging_init(); paging_init();

View File

@@ -114,8 +114,11 @@ static void *simple_realloc(void *ptr, unsigned long size)
return ptr; return ptr;
new = simple_malloc(size); new = simple_malloc(size);
memcpy(new, ptr, p->size); if (new) {
simple_free(ptr); memcpy(new, ptr, p->size);
simple_free(ptr);
}
return new; return new;
} }

View File

@@ -240,6 +240,8 @@ static int __init icp_native_map_one_cpu(int hw_id, unsigned long addr,
rname = kasprintf(GFP_KERNEL, "CPU %d [0x%x] Interrupt Presentation", rname = kasprintf(GFP_KERNEL, "CPU %d [0x%x] Interrupt Presentation",
cpu, hw_id); cpu, hw_id);
if (!rname)
return -ENOMEM;
if (!request_mem_region(addr, size, rname)) { if (!request_mem_region(addr, size, rname)) {
pr_warning("icp_native: Could not reserve ICP MMIO" pr_warning("icp_native: Could not reserve ICP MMIO"
" for CPU %d, interrupt server #0x%x\n", " for CPU %d, interrupt server #0x%x\n",

View File

@@ -391,6 +391,7 @@ int setup_one_line(struct line *lines, int n, char *init,
parse_chan_pair(NULL, line, n, opts, error_out); parse_chan_pair(NULL, line, n, opts, error_out);
err = 0; err = 0;
} }
*error_out = "configured as 'none'";
} else { } else {
char *new = kstrdup(init, GFP_KERNEL); char *new = kstrdup(init, GFP_KERNEL);
if (!new) { if (!new) {
@@ -414,6 +415,7 @@ int setup_one_line(struct line *lines, int n, char *init,
} }
} }
if (err) { if (err) {
*error_out = "failed to parse channel pair";
line->init_str = NULL; line->init_str = NULL;
line->valid = 0; line->valid = 0;
kfree(new); kfree(new);

View File

@@ -244,6 +244,7 @@ bool bio_integrity_prep(struct bio *bio)
unsigned int bytes, offset, i; unsigned int bytes, offset, i;
unsigned int intervals; unsigned int intervals;
blk_status_t status; blk_status_t status;
gfp_t gfp = GFP_NOIO;
if (!bi) if (!bi)
return true; return true;
@@ -266,12 +267,20 @@ bool bio_integrity_prep(struct bio *bio)
if (!bi->profile->generate_fn || if (!bi->profile->generate_fn ||
!(bi->flags & BLK_INTEGRITY_GENERATE)) !(bi->flags & BLK_INTEGRITY_GENERATE))
return true; return true;
/*
* Zero the memory allocated to not leak uninitialized kernel
* memory to disk. For PI this only affects the app tag, but
* for non-integrity metadata it affects the entire metadata
* buffer.
*/
gfp |= __GFP_ZERO;
} }
intervals = bio_integrity_intervals(bi, bio_sectors(bio)); intervals = bio_integrity_intervals(bi, bio_sectors(bio));
/* Allocate kernel buffer for protection data */ /* Allocate kernel buffer for protection data */
len = intervals * bi->tuple_size; len = intervals * bi->tuple_size;
buf = kmalloc(len, GFP_NOIO | q->bounce_gfp); buf = kmalloc(len, gfp | q->bounce_gfp);
status = BLK_STS_RESOURCE; status = BLK_STS_RESOURCE;
if (unlikely(buf == NULL)) { if (unlikely(buf == NULL)) {
printk(KERN_ERR "could not allocate integrity buffer\n"); printk(KERN_ERR "could not allocate integrity buffer\n");

View File

@@ -390,7 +390,7 @@ static int acpi_processor_add(struct acpi_device *device,
result = acpi_processor_get_info(device); result = acpi_processor_get_info(device);
if (result) /* Processor is not physically present or unavailable */ if (result) /* Processor is not physically present or unavailable */
return 0; goto err_clear_driver_data;
BUG_ON(pr->id >= nr_cpu_ids); BUG_ON(pr->id >= nr_cpu_ids);
@@ -405,7 +405,7 @@ static int acpi_processor_add(struct acpi_device *device,
"BIOS reported wrong ACPI id %d for the processor\n", "BIOS reported wrong ACPI id %d for the processor\n",
pr->id); pr->id);
/* Give up, but do not abort the namespace scan. */ /* Give up, but do not abort the namespace scan. */
goto err; goto err_clear_driver_data;
} }
/* /*
* processor_device_array is not cleared on errors to allow buggy BIOS * processor_device_array is not cleared on errors to allow buggy BIOS
@@ -417,12 +417,12 @@ static int acpi_processor_add(struct acpi_device *device,
dev = get_cpu_device(pr->id); dev = get_cpu_device(pr->id);
if (!dev) { if (!dev) {
result = -ENODEV; result = -ENODEV;
goto err; goto err_clear_per_cpu;
} }
result = acpi_bind_one(dev, device); result = acpi_bind_one(dev, device);
if (result) if (result)
goto err; goto err_clear_per_cpu;
pr->dev = dev; pr->dev = dev;
@@ -433,10 +433,11 @@ static int acpi_processor_add(struct acpi_device *device,
dev_err(dev, "Processor driver could not be attached\n"); dev_err(dev, "Processor driver could not be attached\n");
acpi_unbind_one(dev); acpi_unbind_one(dev);
err: err_clear_per_cpu:
free_cpumask_var(pr->throttling.shared_cpu_map);
device->driver_data = NULL;
per_cpu(processors, pr->id) = NULL; per_cpu(processors, pr->id) = NULL;
err_clear_driver_data:
device->driver_data = NULL;
free_cpumask_var(pr->throttling.shared_cpu_map);
err_free_pr: err_free_pr:
kfree(pr); kfree(pr);
return result; return result;

View File

@@ -537,7 +537,8 @@ static enum ata_completion_errors pata_macio_qc_prep(struct ata_queued_cmd *qc)
while (sg_len) { while (sg_len) {
/* table overflow should never happen */ /* table overflow should never happen */
BUG_ON (pi++ >= MAX_DCMDS); if (WARN_ON_ONCE(pi >= MAX_DCMDS))
return AC_ERR_SYSTEM;
len = (sg_len < MAX_DBDMA_SEG) ? sg_len : MAX_DBDMA_SEG; len = (sg_len < MAX_DBDMA_SEG) ? sg_len : MAX_DBDMA_SEG;
table->command = cpu_to_le16(write ? OUTPUT_MORE: INPUT_MORE); table->command = cpu_to_le16(write ? OUTPUT_MORE: INPUT_MORE);
@@ -549,11 +550,13 @@ static enum ata_completion_errors pata_macio_qc_prep(struct ata_queued_cmd *qc)
addr += len; addr += len;
sg_len -= len; sg_len -= len;
++table; ++table;
++pi;
} }
} }
/* Should never happen according to Tejun */ /* Should never happen according to Tejun */
BUG_ON(!pi); if (WARN_ON_ONCE(!pi))
return AC_ERR_SYSTEM;
/* Convert the last command to an input/output */ /* Convert the last command to an input/output */
table--; table--;

View File

@@ -1117,8 +1117,8 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
rpp->len += skb->len; rpp->len += skb->len;
if (stat & SAR_RSQE_EPDU) { if (stat & SAR_RSQE_EPDU) {
unsigned int len, truesize;
unsigned char *l1l2; unsigned char *l1l2;
unsigned int len;
l1l2 = (unsigned char *) ((unsigned long) skb->data + skb->len - 6); l1l2 = (unsigned char *) ((unsigned long) skb->data + skb->len - 6);
@@ -1188,14 +1188,15 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
ATM_SKB(skb)->vcc = vcc; ATM_SKB(skb)->vcc = vcc;
__net_timestamp(skb); __net_timestamp(skb);
truesize = skb->truesize;
vcc->push(vcc, skb); vcc->push(vcc, skb);
atomic_inc(&vcc->stats->rx); atomic_inc(&vcc->stats->rx);
if (skb->truesize > SAR_FB_SIZE_3) if (truesize > SAR_FB_SIZE_3)
add_rx_skb(card, 3, SAR_FB_SIZE_3, 1); add_rx_skb(card, 3, SAR_FB_SIZE_3, 1);
else if (skb->truesize > SAR_FB_SIZE_2) else if (truesize > SAR_FB_SIZE_2)
add_rx_skb(card, 2, SAR_FB_SIZE_2, 1); add_rx_skb(card, 2, SAR_FB_SIZE_2, 1);
else if (skb->truesize > SAR_FB_SIZE_1) else if (truesize > SAR_FB_SIZE_1)
add_rx_skb(card, 1, SAR_FB_SIZE_1, 1); add_rx_skb(card, 1, SAR_FB_SIZE_1, 1);
else else
add_rx_skb(card, 0, SAR_FB_SIZE_0, 1); add_rx_skb(card, 0, SAR_FB_SIZE_0, 1);

View File

@@ -555,6 +555,7 @@ void * devres_open_group(struct device *dev, void *id, gfp_t gfp)
grp->id = grp; grp->id = grp;
if (id) if (id)
grp->id = id; grp->id = id;
grp->color = 0;
spin_lock_irqsave(&dev->devres_lock, flags); spin_lock_irqsave(&dev->devres_lock, flags);
add_dr(dev, &grp->node[0]); add_dr(dev, &grp->node[0]);

View File

@@ -769,7 +769,8 @@ static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file *file,
break; break;
case HCIUARTGETPROTO: case HCIUARTGETPROTO:
if (test_bit(HCI_UART_PROTO_SET, &hu->flags)) if (test_bit(HCI_UART_PROTO_SET, &hu->flags) &&
test_bit(HCI_UART_PROTO_READY, &hu->flags))
err = hu->proto->id; err = hu->proto->id;
else else
err = -EUNATCH; err = -EUNATCH;

View File

@@ -94,20 +94,28 @@ static int __init tpm_clocksource_init(unsigned long rate)
static int tpm_set_next_event(unsigned long delta, static int tpm_set_next_event(unsigned long delta,
struct clock_event_device *evt) struct clock_event_device *evt)
{ {
unsigned long next, now; unsigned long next, prev, now;
next = tpm_read_counter(); prev = tpm_read_counter();
next += delta; next = prev + delta;
writel(next, timer_base + TPM_C0V); writel(next, timer_base + TPM_C0V);
now = tpm_read_counter(); now = tpm_read_counter();
/*
* Need to wait CNT increase at least 1 cycle to make sure
* the C0V has been updated into HW.
*/
if ((next & 0xffffffff) != readl(timer_base + TPM_C0V))
while (now == tpm_read_counter())
;
/* /*
* NOTE: We observed in a very small probability, the bus fabric * NOTE: We observed in a very small probability, the bus fabric
* contention between GPU and A7 may results a few cycles delay * contention between GPU and A7 may results a few cycles delay
* of writing CNT registers which may cause the min_delta event got * of writing CNT registers which may cause the min_delta event got
* missed, so we need add a ETIME check here in case it happened. * missed, so we need add a ETIME check here in case it happened.
*/ */
return (int)(next - now) <= 0 ? -ETIME : 0; return (now - prev) >= delta ? -ETIME : 0;
} }
static int tpm_set_state_oneshot(struct clock_event_device *evt) static int tpm_set_state_oneshot(struct clock_event_device *evt)

View File

@@ -100,6 +100,7 @@ struct amdgpu_afmt_acr amdgpu_afmt_acr(uint32_t clock)
amdgpu_afmt_calc_cts(clock, &res.cts_32khz, &res.n_32khz, 32000); amdgpu_afmt_calc_cts(clock, &res.cts_32khz, &res.n_32khz, 32000);
amdgpu_afmt_calc_cts(clock, &res.cts_44_1khz, &res.n_44_1khz, 44100); amdgpu_afmt_calc_cts(clock, &res.cts_44_1khz, &res.n_44_1khz, 44100);
amdgpu_afmt_calc_cts(clock, &res.cts_48khz, &res.n_48khz, 48000); amdgpu_afmt_calc_cts(clock, &res.cts_48khz, &res.n_48khz, 48000);
res.clock = clock;
return res; return res;
} }

View File

@@ -1624,6 +1624,8 @@ int amdgpu_atombios_init_mc_reg_table(struct amdgpu_device *adev,
(u32)le32_to_cpu(*((u32 *)reg_data + j)); (u32)le32_to_cpu(*((u32 *)reg_data + j));
j++; j++;
} else if ((reg_table->mc_reg_address[i].pre_reg_data & LOW_NIBBLE_MASK) == DATA_EQU_PREV) { } else if ((reg_table->mc_reg_address[i].pre_reg_data & LOW_NIBBLE_MASK) == DATA_EQU_PREV) {
if (i == 0)
continue;
reg_table->mc_reg_table_entry[num_ranges].mc_data[i] = reg_table->mc_reg_table_entry[num_ranges].mc_data[i] =
reg_table->mc_reg_table_entry[num_ranges].mc_data[i - 1]; reg_table->mc_reg_table_entry[num_ranges].mc_data[i - 1];
} }

View File

@@ -639,6 +639,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
struct amdgpu_firmware_info *ucode; struct amdgpu_firmware_info *ucode;
id = fw_type_convert(cgs_device, type); id = fw_type_convert(cgs_device, type);
if (id >= AMDGPU_UCODE_ID_MAXIMUM)
return -EINVAL;
ucode = &adev->firmware.ucode[id]; ucode = &adev->firmware.ucode[id];
if (ucode->fw == NULL) if (ucode->fw == NULL)
return -EINVAL; return -EINVAL;

View File

@@ -203,13 +203,19 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data,
switch (args->in.op) { switch (args->in.op) {
case AMDGPU_CTX_OP_ALLOC_CTX: case AMDGPU_CTX_OP_ALLOC_CTX:
if (args->in.flags)
return -EINVAL;
r = amdgpu_ctx_alloc(adev, fpriv, &id); r = amdgpu_ctx_alloc(adev, fpriv, &id);
args->out.alloc.ctx_id = id; args->out.alloc.ctx_id = id;
break; break;
case AMDGPU_CTX_OP_FREE_CTX: case AMDGPU_CTX_OP_FREE_CTX:
if (args->in.flags)
return -EINVAL;
r = amdgpu_ctx_free(fpriv, id); r = amdgpu_ctx_free(fpriv, id);
break; break;
case AMDGPU_CTX_OP_QUERY_STATE: case AMDGPU_CTX_OP_QUERY_STATE:
if (args->in.flags)
return -EINVAL;
r = amdgpu_ctx_query(adev, fpriv, id, &args->out); r = amdgpu_ctx_query(adev, fpriv, id, &args->out);
break; break;
default: default:

View File

@@ -383,8 +383,9 @@ static ssize_t amdgpu_debugfs_ring_read(struct file *f, char __user *buf,
size_t size, loff_t *pos) size_t size, loff_t *pos)
{ {
struct amdgpu_ring *ring = file_inode(f)->i_private; struct amdgpu_ring *ring = file_inode(f)->i_private;
int r, i;
uint32_t value, result, early[3]; uint32_t value, result, early[3];
loff_t i;
int r;
if (*pos & 3 || size & 3) if (*pos & 3 || size & 3)
return -EINVAL; return -EINVAL;

View File

@@ -647,7 +647,8 @@ int amdgpu_vce_ring_parse_cs(struct amdgpu_cs_parser *p, uint32_t ib_idx)
uint32_t created = 0; uint32_t created = 0;
uint32_t allocated = 0; uint32_t allocated = 0;
uint32_t tmp, handle = 0; uint32_t tmp, handle = 0;
uint32_t *size = &tmp; uint32_t dummy = 0xffffffff;
uint32_t *size = &dummy;
int i, r = 0, idx = 0; int i, r = 0, idx = 0;
p->job->vm = NULL; p->job->vm = NULL;

View File

@@ -1601,6 +1601,9 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,
return -EINVAL; return -EINVAL;
} }
var->xres_virtual = fb->width;
var->yres_virtual = fb->height;
/* /*
* Workaround for SDL 1.2, which is known to be setting all pixel format * Workaround for SDL 1.2, which is known to be setting all pixel format
* fields values to zero in some cases. We treat this situation as a * fields values to zero in some cases. We treat this situation as a

View File

@@ -61,7 +61,7 @@ static inline void debug_fence_destroy(struct i915_sw_fence *fence)
debug_object_destroy(fence, &i915_sw_fence_debug_descr); debug_object_destroy(fence, &i915_sw_fence_debug_descr);
} }
static inline void debug_fence_free(struct i915_sw_fence *fence) static inline __maybe_unused void debug_fence_free(struct i915_sw_fence *fence)
{ {
debug_object_free(fence, &i915_sw_fence_debug_descr); debug_object_free(fence, &i915_sw_fence_debug_descr);
smp_wmb(); /* flush the change in state before reallocation */ smp_wmb(); /* flush the change in state before reallocation */
@@ -95,7 +95,7 @@ static inline void debug_fence_destroy(struct i915_sw_fence *fence)
{ {
} }
static inline void debug_fence_free(struct i915_sw_fence *fence) static inline __maybe_unused void debug_fence_free(struct i915_sw_fence *fence)
{ {
} }

View File

@@ -1735,12 +1735,14 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,
int fmax = field->logical_maximum; int fmax = field->logical_maximum;
unsigned int equivalent_usage = wacom_equivalent_usage(usage->hid); unsigned int equivalent_usage = wacom_equivalent_usage(usage->hid);
int resolution_code = code; int resolution_code = code;
int resolution = hidinput_calc_abs_res(field, resolution_code); int resolution;
if (equivalent_usage == HID_DG_TWIST) { if (equivalent_usage == HID_DG_TWIST) {
resolution_code = ABS_RZ; resolution_code = ABS_RZ;
} }
resolution = hidinput_calc_abs_res(field, resolution_code);
if (equivalent_usage == HID_GD_X) { if (equivalent_usage == HID_GD_X) {
fmin += features->offset_left; fmin += features->offset_left;
fmax -= features->offset_right; fmax -= features->offset_right;

View File

@@ -184,7 +184,7 @@ static ssize_t adc128_set_in(struct device *dev, struct device_attribute *attr,
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
/* 10 mV LSB on limit registers */ /* 10 mV LSB on limit registers */
regval = clamp_val(DIV_ROUND_CLOSEST(val, 10), 0, 255); regval = DIV_ROUND_CLOSEST(clamp_val(val, 0, 2550), 10);
data->in[index][nr] = regval << 4; data->in[index][nr] = regval << 4;
reg = index == 1 ? ADC128_REG_IN_MIN(nr) : ADC128_REG_IN_MAX(nr); reg = index == 1 ? ADC128_REG_IN_MIN(nr) : ADC128_REG_IN_MAX(nr);
i2c_smbus_write_byte_data(data->client, reg, regval); i2c_smbus_write_byte_data(data->client, reg, regval);
@@ -222,7 +222,7 @@ static ssize_t adc128_set_temp(struct device *dev,
return err; return err;
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
regval = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -128, 127); regval = DIV_ROUND_CLOSEST(clamp_val(val, -128000, 127000), 1000);
data->temp[index] = regval << 1; data->temp[index] = regval << 1;
i2c_smbus_write_byte_data(data->client, i2c_smbus_write_byte_data(data->client,
index == 1 ? ADC128_REG_TEMP_MAX index == 1 ? ADC128_REG_TEMP_MAX

View File

@@ -310,7 +310,8 @@ static ssize_t set_tcrit2(struct device *dev, struct device_attribute *attr,
if (ret < 0) if (ret < 0)
return ret; return ret;
val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), 0, index ? 255 : 127); val = DIV_ROUND_CLOSEST(clamp_val(val, 0, (index ? 255 : 127) * 1000),
1000);
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->tcrit2[index] = val; data->tcrit2[index] = val;
@@ -359,7 +360,7 @@ static ssize_t set_tcrit1(struct device *dev, struct device_attribute *attr,
if (ret < 0) if (ret < 0)
return ret; return ret;
val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), 0, 255); val = DIV_ROUND_CLOSEST(clamp_val(val, 0, 255000), 1000);
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->tcrit1[index] = val; data->tcrit1[index] = val;
@@ -400,7 +401,7 @@ static ssize_t set_tcrit1_hyst(struct device *dev,
if (ret < 0) if (ret < 0)
return ret; return ret;
val = DIV_ROUND_CLOSEST(val, 1000); val = DIV_ROUND_CLOSEST(clamp_val(val, -255000, 255000), 1000);
val = clamp_val((int)data->tcrit1[index] - val, 0, 31); val = clamp_val((int)data->tcrit1[index] - val, 0, 31);
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
@@ -440,7 +441,7 @@ static ssize_t set_offset(struct device *dev, struct device_attribute *attr,
return ret; return ret;
/* Accuracy is 1/2 degrees C */ /* Accuracy is 1/2 degrees C */
val = clamp_val(DIV_ROUND_CLOSEST(val, 500), -128, 127); val = DIV_ROUND_CLOSEST(clamp_val(val, -64000, 63500), 500);
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->toffset[index] = val; data->toffset[index] = val;

View File

@@ -2200,7 +2200,7 @@ store_temp_offset(struct device *dev, struct device_attribute *attr,
if (err < 0) if (err < 0)
return err; return err;
val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -128, 127); val = DIV_ROUND_CLOSEST(clamp_val(val, -128000, 127000), 1000);
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->temp_offset[nr] = val; data->temp_offset[nr] = val;

View File

@@ -1519,7 +1519,7 @@ store_target_temp(struct device *dev, struct device_attribute *attr,
if (err < 0) if (err < 0)
return err; return err;
val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), 0, 127); val = DIV_ROUND_CLOSEST(clamp_val(val, 0, 127000), 1000);
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->target_temp[nr] = val; data->target_temp[nr] = val;
@@ -1545,7 +1545,7 @@ store_tolerance(struct device *dev, struct device_attribute *attr,
return err; return err;
/* Limit the temp to 0C - 15C */ /* Limit the temp to 0C - 15C */
val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), 0, 15); val = DIV_ROUND_CLOSEST(clamp_val(val, 0, 15000), 1000);
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
if (sio_data->kind == nct6775 || sio_data->kind == nct6776) { if (sio_data->kind == nct6775 || sio_data->kind == nct6776) {

View File

@@ -159,7 +159,7 @@ struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev,
ret = dma_get_slave_caps(chan, &caps); ret = dma_get_slave_caps(chan, &caps);
if (ret < 0) if (ret < 0)
goto err_free; goto err_release;
/* Needs to be aligned to the maximum of the minimums */ /* Needs to be aligned to the maximum of the minimums */
if (caps.src_addr_widths) if (caps.src_addr_widths)
@@ -184,6 +184,8 @@ struct iio_buffer *iio_dmaengine_buffer_alloc(struct device *dev,
return &dmaengine_buffer->queue.buffer; return &dmaengine_buffer->queue.buffer;
err_release:
dma_release_channel(chan);
err_free: err_free:
kfree(dmaengine_buffer); kfree(dmaengine_buffer);
return ERR_PTR(ret); return ERR_PTR(ret);

View File

@@ -640,17 +640,17 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,
break; break;
case IIO_VAL_INT_PLUS_MICRO: case IIO_VAL_INT_PLUS_MICRO:
if (scale_val2 < 0) if (scale_val2 < 0)
*processed = -raw64 * scale_val; *processed = -raw64 * scale_val * scale;
else else
*processed = raw64 * scale_val; *processed = raw64 * scale_val * scale;
*processed += div_s64(raw64 * (s64)scale_val2 * scale, *processed += div_s64(raw64 * (s64)scale_val2 * scale,
1000000LL); 1000000LL);
break; break;
case IIO_VAL_INT_PLUS_NANO: case IIO_VAL_INT_PLUS_NANO:
if (scale_val2 < 0) if (scale_val2 < 0)
*processed = -raw64 * scale_val; *processed = -raw64 * scale_val * scale;
else else
*processed = raw64 * scale_val; *processed = raw64 * scale_val * scale;
*processed += div_s64(raw64 * (s64)scale_val2 * scale, *processed += div_s64(raw64 * (s64)scale_val2 * scale,
1000000000LL); 1000000000LL);
break; break;

View File

@@ -48,6 +48,9 @@ int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots,
return 0; return 0;
if (mt) if (mt)
return mt->num_slots != num_slots ? -EINVAL : 0; return mt->num_slots != num_slots ? -EINVAL : 0;
/* Arbitrary limit for avoiding too large memory allocation. */
if (num_slots > 1024)
return -EINVAL;
mt = kzalloc(sizeof(*mt) + num_slots * sizeof(*mt->slots), GFP_KERNEL); mt = kzalloc(sizeof(*mt) + num_slots * sizeof(*mt->slots), GFP_KERNEL);
if (!mt) if (!mt)

View File

@@ -378,6 +378,20 @@ static int uinput_validate_absinfo(struct input_dev *dev, unsigned int code,
return -EINVAL; return -EINVAL;
} }
/*
* Limit number of contacts to a reasonable value (100). This
* ensures that we need less than 2 pages for struct input_mt
* (we are not using in-kernel slot assignment so not going to
* allocate memory for the "red" table), and we should have no
* trouble getting this much memory.
*/
if (code == ABS_MT_SLOT && max > 99) {
printk(KERN_DEBUG
"%s: unreasonably large number of slots requested: %d\n",
UINPUT_NAME, max);
return -EINVAL;
}
return 0; return 0;
} }

View File

@@ -1289,7 +1289,7 @@ restart:
*/ */
writel(qi->free_head << DMAR_IQ_SHIFT, iommu->reg + DMAR_IQT_REG); writel(qi->free_head << DMAR_IQ_SHIFT, iommu->reg + DMAR_IQT_REG);
while (qi->desc_status[wait_index] != QI_DONE) { while (READ_ONCE(qi->desc_status[wait_index]) != QI_DONE) {
/* /*
* We will leave the interrupts disabled, to prevent interrupt * We will leave the interrupts disabled, to prevent interrupt
* context to queue another cmd while a cmd is already submitted * context to queue another cmd while a cmd is already submitted

View File

@@ -346,6 +346,10 @@ static struct irq_chip armada_370_xp_irq_chip = {
static int armada_370_xp_mpic_irq_map(struct irq_domain *h, static int armada_370_xp_mpic_irq_map(struct irq_domain *h,
unsigned int virq, irq_hw_number_t hw) unsigned int virq, irq_hw_number_t hw)
{ {
/* IRQs 0 and 1 cannot be mapped, they are handled internally */
if (hw <= 1)
return -EINVAL;
armada_370_xp_irq_mask(irq_get_irq_data(virq)); armada_370_xp_irq_mask(irq_get_irq_data(virq));
if (!is_percpu_irq(hw)) if (!is_percpu_irq(hw))
writel(hw, per_cpu_int_base + writel(hw, per_cpu_int_base +

View File

@@ -2692,8 +2692,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
struct page *vprop_page; struct page *vprop_page;
int base, nr_ids, i, err = 0; int base, nr_ids, i, err = 0;
BUG_ON(!vm);
bitmap = its_lpi_alloc_chunks(nr_irqs, &base, &nr_ids); bitmap = its_lpi_alloc_chunks(nr_irqs, &base, &nr_ids);
if (!bitmap) if (!bitmap)
return -ENOMEM; return -ENOMEM;

View File

@@ -1039,8 +1039,26 @@ static int do_resume(struct dm_ioctl *param)
suspend_flags &= ~DM_SUSPEND_LOCKFS_FLAG; suspend_flags &= ~DM_SUSPEND_LOCKFS_FLAG;
if (param->flags & DM_NOFLUSH_FLAG) if (param->flags & DM_NOFLUSH_FLAG)
suspend_flags |= DM_SUSPEND_NOFLUSH_FLAG; suspend_flags |= DM_SUSPEND_NOFLUSH_FLAG;
if (!dm_suspended_md(md)) if (!dm_suspended_md(md)) {
dm_suspend(md, suspend_flags); r = dm_suspend(md, suspend_flags);
if (r) {
down_write(&_hash_lock);
hc = dm_get_mdptr(md);
if (hc && !hc->new_map) {
hc->new_map = new_map;
new_map = NULL;
} else {
r = -ENXIO;
}
up_write(&_hash_lock);
if (new_map) {
dm_sync_table(md);
dm_table_destroy(new_map);
}
dm_put(md);
return r;
}
}
old_map = dm_swap_table(md, new_map); old_map = dm_swap_table(md, new_map);
if (IS_ERR(old_map)) { if (IS_ERR(old_map)) {

View File

@@ -2396,7 +2396,7 @@ static int dm_wait_for_completion(struct mapped_device *md, long task_state)
break; break;
if (signal_pending_state(task_state, current)) { if (signal_pending_state(task_state, current)) {
r = -EINTR; r = -ERESTARTSYS;
break; break;
} }

View File

@@ -7215,11 +7215,6 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
mddev = bdev->bd_disk->private_data; mddev = bdev->bd_disk->private_data;
if (!mddev) {
BUG();
goto out;
}
/* Some actions do not requires the mutex */ /* Some actions do not requires the mutex */
switch (cmd) { switch (cmd) {
case GET_ARRAY_INFO: case GET_ARRAY_INFO:

View File

@@ -274,7 +274,7 @@ static void sm_metadata_destroy(struct dm_space_map *sm)
{ {
struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm); struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm);
kfree(smm); kvfree(smm);
} }
static int sm_metadata_get_nr_blocks(struct dm_space_map *sm, dm_block_t *count) static int sm_metadata_get_nr_blocks(struct dm_space_map *sm, dm_block_t *count)
@@ -758,7 +758,7 @@ struct dm_space_map *dm_sm_metadata_init(void)
{ {
struct sm_metadata *smm; struct sm_metadata *smm;
smm = kmalloc(sizeof(*smm), GFP_KERNEL); smm = kvmalloc(sizeof(*smm), GFP_KERNEL);
if (!smm) if (!smm)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);

View File

@@ -1293,6 +1293,10 @@ int cx23885_video_register(struct cx23885_dev *dev)
/* register Video device */ /* register Video device */
dev->video_dev = cx23885_vdev_init(dev, dev->pci, dev->video_dev = cx23885_vdev_init(dev, dev->pci,
&cx23885_video_template, "video"); &cx23885_video_template, "video");
if (!dev->video_dev) {
err = -ENOMEM;
goto fail_unreg;
}
dev->video_dev->queue = &dev->vb2_vidq; dev->video_dev->queue = &dev->vb2_vidq;
err = video_register_device(dev->video_dev, VFL_TYPE_GRABBER, err = video_register_device(dev->video_dev, VFL_TYPE_GRABBER,
video_nr[dev->nr]); video_nr[dev->nr]);
@@ -1307,6 +1311,10 @@ int cx23885_video_register(struct cx23885_dev *dev)
/* register VBI device */ /* register VBI device */
dev->vbi_dev = cx23885_vdev_init(dev, dev->pci, dev->vbi_dev = cx23885_vdev_init(dev, dev->pci,
&cx23885_vbi_template, "vbi"); &cx23885_vbi_template, "vbi");
if (!dev->vbi_dev) {
err = -ENOMEM;
goto fail_unreg;
}
dev->vbi_dev->queue = &dev->vb2_vbiq; dev->vbi_dev->queue = &dev->vb2_vbiq;
err = video_register_device(dev->vbi_dev, VFL_TYPE_VBI, err = video_register_device(dev->vbi_dev, VFL_TYPE_VBI,
vbi_nr[dev->nr]); vbi_nr[dev->nr]);

View File

@@ -261,8 +261,11 @@ static int camss_of_parse_endpoint_node(struct device *dev,
struct v4l2_fwnode_bus_mipi_csi2 *mipi_csi2; struct v4l2_fwnode_bus_mipi_csi2 *mipi_csi2;
struct v4l2_fwnode_endpoint vep = { { 0 } }; struct v4l2_fwnode_endpoint vep = { { 0 } };
unsigned int i; unsigned int i;
int ret;
v4l2_fwnode_endpoint_parse(of_fwnode_handle(node), &vep); ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(node), &vep);
if (ret)
return ret;
csd->interface.csiphy_id = vep.base.port; csd->interface.csiphy_id = vep.base.port;

View File

@@ -821,16 +821,26 @@ static int uvc_parse_streaming(struct uvc_device *dev,
goto error; goto error;
} }
size = nformats * sizeof *format + nframes * sizeof *frame /*
+ nintervals * sizeof *interval; * Allocate memory for the formats, the frames and the intervals,
* plus any required padding to guarantee that everything has the
* correct alignment.
*/
size = nformats * sizeof(*format);
size = ALIGN(size, __alignof__(*frame)) + nframes * sizeof(*frame);
size = ALIGN(size, __alignof__(*interval))
+ nintervals * sizeof(*interval);
format = kzalloc(size, GFP_KERNEL); format = kzalloc(size, GFP_KERNEL);
if (format == NULL) { if (!format) {
ret = -ENOMEM; ret = -ENOMEM;
goto error; goto error;
} }
frame = (struct uvc_frame *)&format[nformats]; frame = (void *)format + nformats * sizeof(*format);
interval = (__u32 *)&frame[nframes]; frame = PTR_ALIGN(frame, __alignof__(*frame));
interval = (void *)frame + nframes * sizeof(*frame);
interval = PTR_ALIGN(interval, __alignof__(*interval));
streaming->format = format; streaming->format = format;
streaming->nformats = nformats; streaming->nformats = nformats;

View File

@@ -408,12 +408,12 @@ static int uvc_commit_video(struct uvc_streaming *stream,
* Clocks and timestamps * Clocks and timestamps
*/ */
static inline void uvc_video_get_ts(struct timespec *ts) static inline ktime_t uvc_video_get_time(void)
{ {
if (uvc_clock_param == CLOCK_MONOTONIC) if (uvc_clock_param == CLOCK_MONOTONIC)
ktime_get_ts(ts); return ktime_get();
else else
ktime_get_real_ts(ts); return ktime_get_real();
} }
static void static void
@@ -425,7 +425,7 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,
bool has_pts = false; bool has_pts = false;
bool has_scr = false; bool has_scr = false;
unsigned long flags; unsigned long flags;
struct timespec ts; ktime_t time;
u16 host_sof; u16 host_sof;
u16 dev_sof; u16 dev_sof;
u32 dev_stc; u32 dev_stc;
@@ -504,7 +504,7 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,
stream->clock.last_sof = dev_sof; stream->clock.last_sof = dev_sof;
host_sof = usb_get_current_frame_number(stream->dev->udev); host_sof = usb_get_current_frame_number(stream->dev->udev);
uvc_video_get_ts(&ts); time = uvc_video_get_time();
/* The UVC specification allows device implementations that can't obtain /* The UVC specification allows device implementations that can't obtain
* the USB frame number to keep their own frame counters as long as they * the USB frame number to keep their own frame counters as long as they
@@ -541,7 +541,7 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,
sample->dev_stc = dev_stc; sample->dev_stc = dev_stc;
sample->dev_sof = dev_sof; sample->dev_sof = dev_sof;
sample->host_sof = host_sof; sample->host_sof = host_sof;
sample->host_ts = ts; sample->host_time = time;
/* Update the sliding window head and count. */ /* Update the sliding window head and count. */
stream->clock.head = (stream->clock.head + 1) % stream->clock.size; stream->clock.head = (stream->clock.head + 1) % stream->clock.size;
@@ -681,15 +681,13 @@ void uvc_video_clock_update(struct uvc_streaming *stream,
struct uvc_clock_sample *first; struct uvc_clock_sample *first;
struct uvc_clock_sample *last; struct uvc_clock_sample *last;
unsigned long flags; unsigned long flags;
struct timespec ts; u64 timestamp;
u32 delta_stc; u32 delta_stc;
u32 y1, y2; u32 y1;
u32 x1, x2; u32 x1, x2;
u32 mean; u32 mean;
u32 sof; u32 sof;
u32 div; u64 y, y2;
u32 rem;
u64 y;
if (!uvc_hw_timestamps_param) if (!uvc_hw_timestamps_param)
return; return;
@@ -729,7 +727,7 @@ void uvc_video_clock_update(struct uvc_streaming *stream,
sof = y; sof = y;
uvc_trace(UVC_TRACE_CLOCK, "%s: PTS %u y %llu.%06llu SOF %u.%06llu " uvc_trace(UVC_TRACE_CLOCK, "%s: PTS %u y %llu.%06llu SOF %u.%06llu "
"(x1 %u x2 %u y1 %u y2 %u SOF offset %u)\n", "(x1 %u x2 %u y1 %u y2 %llu SOF offset %u)\n",
stream->dev->name, buf->pts, stream->dev->name, buf->pts,
y >> 16, div_u64((y & 0xffff) * 1000000, 65536), y >> 16, div_u64((y & 0xffff) * 1000000, 65536),
sof >> 16, div_u64(((u64)sof & 0xffff) * 1000000LLU, 65536), sof >> 16, div_u64(((u64)sof & 0xffff) * 1000000LLU, 65536),
@@ -743,9 +741,8 @@ void uvc_video_clock_update(struct uvc_streaming *stream,
if (x1 == x2) if (x1 == x2)
goto done; goto done;
ts = timespec_sub(last->host_ts, first->host_ts);
y1 = NSEC_PER_SEC; y1 = NSEC_PER_SEC;
y2 = (ts.tv_sec + 1) * NSEC_PER_SEC + ts.tv_nsec; y2 = ktime_to_ns(ktime_sub(last->host_time, first->host_time)) + y1;
/* Interpolated and host SOF timestamps can wrap around at slightly /* Interpolated and host SOF timestamps can wrap around at slightly
* different times. Handle this by adding or removing 2048 to or from * different times. Handle this by adding or removing 2048 to or from
@@ -762,24 +759,18 @@ void uvc_video_clock_update(struct uvc_streaming *stream,
- (u64)y2 * (u64)x1; - (u64)y2 * (u64)x1;
y = div_u64(y, x2 - x1); y = div_u64(y, x2 - x1);
div = div_u64_rem(y, NSEC_PER_SEC, &rem); timestamp = ktime_to_ns(first->host_time) + y - y1;
ts.tv_sec = first->host_ts.tv_sec - 1 + div;
ts.tv_nsec = first->host_ts.tv_nsec + rem;
if (ts.tv_nsec >= NSEC_PER_SEC) {
ts.tv_sec++;
ts.tv_nsec -= NSEC_PER_SEC;
}
uvc_trace(UVC_TRACE_CLOCK, "%s: SOF %u.%06llu y %llu ts %llu " uvc_trace(UVC_TRACE_CLOCK, "%s: SOF %u.%06llu y %llu ts %llu "
"buf ts %llu (x1 %u/%u/%u x2 %u/%u/%u y1 %u y2 %u)\n", "buf ts %llu (x1 %u/%u/%u x2 %u/%u/%u y1 %u y2 %llu)\n",
stream->dev->name, stream->dev->name,
sof >> 16, div_u64(((u64)sof & 0xffff) * 1000000LLU, 65536), sof >> 16, div_u64(((u64)sof & 0xffff) * 1000000LLU, 65536),
y, timespec_to_ns(&ts), vbuf->vb2_buf.timestamp, y, timestamp, vbuf->vb2_buf.timestamp,
x1, first->host_sof, first->dev_sof, x1, first->host_sof, first->dev_sof,
x2, last->host_sof, last->dev_sof, y1, y2); x2, last->host_sof, last->dev_sof, y1, y2);
/* Update the V4L2 buffer. */ /* Update the V4L2 buffer. */
vbuf->vb2_buf.timestamp = timespec_to_ns(&ts); vbuf->vb2_buf.timestamp = timestamp;
done: done:
spin_unlock_irqrestore(&clock->lock, flags); spin_unlock_irqrestore(&clock->lock, flags);
@@ -1086,8 +1077,6 @@ static int uvc_video_decode_start(struct uvc_streaming *stream,
* when the EOF bit is set to force synchronisation on the next packet. * when the EOF bit is set to force synchronisation on the next packet.
*/ */
if (buf->state != UVC_BUF_STATE_ACTIVE) { if (buf->state != UVC_BUF_STATE_ACTIVE) {
struct timespec ts;
if (fid == stream->last_fid) { if (fid == stream->last_fid) {
uvc_trace(UVC_TRACE_FRAME, "Dropping payload (out of " uvc_trace(UVC_TRACE_FRAME, "Dropping payload (out of "
"sync).\n"); "sync).\n");
@@ -1097,11 +1086,9 @@ static int uvc_video_decode_start(struct uvc_streaming *stream,
return -ENODATA; return -ENODATA;
} }
uvc_video_get_ts(&ts);
buf->buf.field = V4L2_FIELD_NONE; buf->buf.field = V4L2_FIELD_NONE;
buf->buf.sequence = stream->sequence; buf->buf.sequence = stream->sequence;
buf->buf.vb2_buf.timestamp = timespec_to_ns(&ts); buf->buf.vb2_buf.timestamp = uvc_video_get_time();
/* TODO: Handle PTS and SCR. */ /* TODO: Handle PTS and SCR. */
buf->state = UVC_BUF_STATE_ACTIVE; buf->state = UVC_BUF_STATE_ACTIVE;

View File

@@ -536,8 +536,8 @@ struct uvc_streaming {
struct uvc_clock_sample { struct uvc_clock_sample {
u32 dev_stc; u32 dev_stc;
u16 dev_sof; u16 dev_sof;
struct timespec host_ts;
u16 host_sof; u16 host_sof;
ktime_t host_time;
} *samples; } *samples;
unsigned int head; unsigned int head;

View File

@@ -152,7 +152,8 @@ void vmci_resource_remove(struct vmci_resource *resource)
spin_lock(&vmci_resource_table.lock); spin_lock(&vmci_resource_table.lock);
hlist_for_each_entry(r, &vmci_resource_table.entries[idx], node) { hlist_for_each_entry(r, &vmci_resource_table.entries[idx], node) {
if (vmci_handle_is_equal(r->handle, resource->handle)) { if (vmci_handle_is_equal(r->handle, resource->handle) &&
resource->type == r->type) {
hlist_del_init_rcu(&r->node); hlist_del_init_rcu(&r->node);
break; break;
} }

View File

@@ -3119,21 +3119,21 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf,
test->buffer = kzalloc(BUFFER_SIZE, GFP_KERNEL); test->buffer = kzalloc(BUFFER_SIZE, GFP_KERNEL);
#ifdef CONFIG_HIGHMEM #ifdef CONFIG_HIGHMEM
test->highmem = alloc_pages(GFP_KERNEL | __GFP_HIGHMEM, BUFFER_ORDER); test->highmem = alloc_pages(GFP_KERNEL | __GFP_HIGHMEM, BUFFER_ORDER);
if (!test->highmem) {
count = -ENOMEM;
goto free_test_buffer;
}
#endif #endif
#ifdef CONFIG_HIGHMEM
if (test->buffer && test->highmem) {
#else
if (test->buffer) { if (test->buffer) {
#endif
mutex_lock(&mmc_test_lock); mutex_lock(&mmc_test_lock);
mmc_test_run(test, testcase); mmc_test_run(test, testcase);
mutex_unlock(&mmc_test_lock); mutex_unlock(&mmc_test_lock);
} }
#ifdef CONFIG_HIGHMEM #ifdef CONFIG_HIGHMEM
if (test->highmem) __free_pages(test->highmem, BUFFER_ORDER);
__free_pages(test->highmem, BUFFER_ORDER); free_test_buffer:
#endif #endif
kfree(test->buffer); kfree(test->buffer);
kfree(test); kfree(test);

View File

@@ -2869,8 +2869,8 @@ static int dw_mci_init_slot(struct dw_mci *host)
if (host->use_dma == TRANS_MODE_IDMAC) { if (host->use_dma == TRANS_MODE_IDMAC) {
mmc->max_segs = host->ring_size; mmc->max_segs = host->ring_size;
mmc->max_blk_size = 65535; mmc->max_blk_size = 65535;
mmc->max_seg_size = 0x1000; mmc->max_req_size = DW_MCI_DESC_DATA_LENGTH * host->ring_size;
mmc->max_req_size = mmc->max_seg_size * host->ring_size; mmc->max_seg_size = mmc->max_req_size;
mmc->max_blk_count = mmc->max_req_size / 512; mmc->max_blk_count = mmc->max_req_size / 512;
} else if (host->use_dma == TRANS_MODE_EDMAC) { } else if (host->use_dma == TRANS_MODE_EDMAC) {
mmc->max_segs = 64; mmc->max_segs = 64;
@@ -3192,6 +3192,10 @@ int dw_mci_probe(struct dw_mci *host)
host->biu_clk = devm_clk_get(host->dev, "biu"); host->biu_clk = devm_clk_get(host->dev, "biu");
if (IS_ERR(host->biu_clk)) { if (IS_ERR(host->biu_clk)) {
dev_dbg(host->dev, "biu clock not available\n"); dev_dbg(host->dev, "biu clock not available\n");
ret = PTR_ERR(host->biu_clk);
if (ret == -EPROBE_DEFER)
return ret;
} else { } else {
ret = clk_prepare_enable(host->biu_clk); ret = clk_prepare_enable(host->biu_clk);
if (ret) { if (ret) {
@@ -3203,6 +3207,10 @@ int dw_mci_probe(struct dw_mci *host)
host->ciu_clk = devm_clk_get(host->dev, "ciu"); host->ciu_clk = devm_clk_get(host->dev, "ciu");
if (IS_ERR(host->ciu_clk)) { if (IS_ERR(host->ciu_clk)) {
dev_dbg(host->dev, "ciu clock not available\n"); dev_dbg(host->dev, "ciu clock not available\n");
ret = PTR_ERR(host->ciu_clk);
if (ret == -EPROBE_DEFER)
goto err_clk_biu;
host->bus_hz = host->pdata->bus_hz; host->bus_hz = host->pdata->bus_hz;
} else { } else {
ret = clk_prepare_enable(host->ciu_clk); ret = clk_prepare_enable(host->ciu_clk);

View File

@@ -989,7 +989,7 @@ static void sun3_82586_timeout(struct net_device *dev)
{ {
#ifdef DEBUG #ifdef DEBUG
printk("%s: xmitter timed out, try to restart! stat: %02x\n",dev->name,p->scb->cus); printk("%s: xmitter timed out, try to restart! stat: %02x\n",dev->name,p->scb->cus);
printk("%s: command-stats: %04x %04x\n",dev->name,swab16(p->xmit_cmds[0]->cmd_status),swab16(p->xmit_cmds[1]->cmd_status)); printk("%s: command-stats: %04x\n", dev->name, swab16(p->xmit_cmds[0]->cmd_status));
printk("%s: check, whether you set the right interrupt number!\n",dev->name); printk("%s: check, whether you set the right interrupt number!\n",dev->name);
#endif #endif
sun3_82586_close(dev); sun3_82586_close(dev);

View File

@@ -5814,10 +5814,20 @@ static void igb_extts(struct igb_adapter *adapter, int tsintr_tt)
static void igb_tsync_interrupt(struct igb_adapter *adapter) static void igb_tsync_interrupt(struct igb_adapter *adapter)
{ {
const u32 mask = (TSINTR_SYS_WRAP | E1000_TSICR_TXTS |
TSINTR_TT0 | TSINTR_TT1 |
TSINTR_AUTT0 | TSINTR_AUTT1);
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
u32 tsicr = rd32(E1000_TSICR); u32 tsicr = rd32(E1000_TSICR);
struct ptp_clock_event event; struct ptp_clock_event event;
if (hw->mac.type == e1000_82580) {
/* 82580 has a hardware bug that requires an explicit
* write to clear the TimeSync interrupt cause.
*/
wr32(E1000_TSICR, tsicr & mask);
}
if (tsicr & TSINTR_SYS_WRAP) { if (tsicr & TSINTR_SYS_WRAP) {
event.type = PTP_CLOCK_PPS; event.type = PTP_CLOCK_PPS;
if (adapter->ptp_caps.pps) if (adapter->ptp_caps.pps)

View File

@@ -365,6 +365,10 @@ static void axienet_set_multicast_list(struct net_device *ndev)
} else if (!netdev_mc_empty(ndev)) { } else if (!netdev_mc_empty(ndev)) {
struct netdev_hw_addr *ha; struct netdev_hw_addr *ha;
reg = axienet_ior(lp, XAE_FMI_OFFSET);
reg &= ~XAE_FMI_PM_MASK;
axienet_iow(lp, XAE_FMI_OFFSET, reg);
i = 0; i = 0;
netdev_for_each_mc_addr(ha, ndev) { netdev_for_each_mc_addr(ha, ndev) {
if (i >= XAE_MULTICAST_CAM_TABLE_NUM) if (i >= XAE_MULTICAST_CAM_TABLE_NUM)

View File

@@ -576,6 +576,9 @@ static netdev_tx_t gtp_dev_xmit(struct sk_buff *skb, struct net_device *dev)
if (skb_cow_head(skb, dev->needed_headroom)) if (skb_cow_head(skb, dev->needed_headroom))
goto tx_err; goto tx_err;
if (!pskb_inet_may_pull(skb))
goto tx_err;
skb_reset_inner_headers(skb); skb_reset_inner_headers(skb);
/* PDP context lookups in gtp_build_skb_*() need rcu read-side lock. */ /* PDP context lookups in gtp_build_skb_*() need rcu read-side lock. */
@@ -808,7 +811,7 @@ static struct sock *gtp_encap_enable_socket(int fd, int type,
sock = sockfd_lookup(fd, &err); sock = sockfd_lookup(fd, &err);
if (!sock) { if (!sock) {
pr_debug("gtp socket fd=%d not found\n", fd); pr_debug("gtp socket fd=%d not found\n", fd);
return NULL; return ERR_PTR(err);
} }
sk = sock->sk; sk = sock->sk;

View File

@@ -338,6 +338,7 @@ static int ch9200_bind(struct usbnet *dev, struct usb_interface *intf)
{ {
int retval = 0; int retval = 0;
unsigned char data[2]; unsigned char data[2];
u8 addr[ETH_ALEN];
retval = usbnet_get_endpoints(dev, intf); retval = usbnet_get_endpoints(dev, intf);
if (retval) if (retval)
@@ -385,7 +386,8 @@ static int ch9200_bind(struct usbnet *dev, struct usb_interface *intf)
retval = control_write(dev, REQUEST_WRITE, 0, MAC_REG_CTRL, data, 0x02, retval = control_write(dev, REQUEST_WRITE, 0, MAC_REG_CTRL, data, 0x02,
CONTROL_TIMEOUT_MS); CONTROL_TIMEOUT_MS);
retval = get_mac_address(dev, dev->net->dev_addr); retval = get_mac_address(dev, addr);
eth_hw_addr_set(dev->net, addr);
return retval; return retval;
} }

View File

@@ -52,6 +52,11 @@ enum cx82310_status {
#define CX82310_MTU 1514 #define CX82310_MTU 1514
#define CMD_EP 0x01 #define CMD_EP 0x01
struct cx82310_priv {
struct work_struct reenable_work;
struct usbnet *dev;
};
/* /*
* execute control command * execute control command
* - optionally send some data (command parameters) * - optionally send some data (command parameters)
@@ -127,6 +132,23 @@ end:
return ret; return ret;
} }
static int cx82310_enable_ethernet(struct usbnet *dev)
{
int ret = cx82310_cmd(dev, CMD_ETHERNET_MODE, true, "\x01", 1, NULL, 0);
if (ret)
netdev_err(dev->net, "unable to enable ethernet mode: %d\n",
ret);
return ret;
}
static void cx82310_reenable_work(struct work_struct *work)
{
struct cx82310_priv *priv = container_of(work, struct cx82310_priv,
reenable_work);
cx82310_enable_ethernet(priv->dev);
}
#define partial_len data[0] /* length of partial packet data */ #define partial_len data[0] /* length of partial packet data */
#define partial_rem data[1] /* remaining (missing) data length */ #define partial_rem data[1] /* remaining (missing) data length */
#define partial_data data[2] /* partial packet data */ #define partial_data data[2] /* partial packet data */
@@ -138,6 +160,8 @@ static int cx82310_bind(struct usbnet *dev, struct usb_interface *intf)
struct usb_device *udev = dev->udev; struct usb_device *udev = dev->udev;
u8 link[3]; u8 link[3];
int timeout = 50; int timeout = 50;
struct cx82310_priv *priv;
u8 addr[ETH_ALEN];
/* avoid ADSL modems - continue only if iProduct is "USB NET CARD" */ /* avoid ADSL modems - continue only if iProduct is "USB NET CARD" */
if (usb_string(udev, udev->descriptor.iProduct, buf, sizeof(buf)) > 0 if (usb_string(udev, udev->descriptor.iProduct, buf, sizeof(buf)) > 0
@@ -164,6 +188,15 @@ static int cx82310_bind(struct usbnet *dev, struct usb_interface *intf)
if (!dev->partial_data) if (!dev->partial_data)
return -ENOMEM; return -ENOMEM;
priv = kzalloc(sizeof(*priv), GFP_KERNEL);
if (!priv) {
ret = -ENOMEM;
goto err_partial;
}
dev->driver_priv = priv;
INIT_WORK(&priv->reenable_work, cx82310_reenable_work);
priv->dev = dev;
/* wait for firmware to become ready (indicated by the link being up) */ /* wait for firmware to become ready (indicated by the link being up) */
while (--timeout) { while (--timeout) {
ret = cx82310_cmd(dev, CMD_GET_LINK_STATUS, true, NULL, 0, ret = cx82310_cmd(dev, CMD_GET_LINK_STATUS, true, NULL, 0,
@@ -180,20 +213,17 @@ static int cx82310_bind(struct usbnet *dev, struct usb_interface *intf)
} }
/* enable ethernet mode (?) */ /* enable ethernet mode (?) */
ret = cx82310_cmd(dev, CMD_ETHERNET_MODE, true, "\x01", 1, NULL, 0); ret = cx82310_enable_ethernet(dev);
if (ret) { if (ret)
dev_err(&udev->dev, "unable to enable ethernet mode: %d\n",
ret);
goto err; goto err;
}
/* get the MAC address */ /* get the MAC address */
ret = cx82310_cmd(dev, CMD_GET_MAC_ADDR, true, NULL, 0, ret = cx82310_cmd(dev, CMD_GET_MAC_ADDR, true, NULL, 0, addr, ETH_ALEN);
dev->net->dev_addr, ETH_ALEN);
if (ret) { if (ret) {
dev_err(&udev->dev, "unable to read MAC address: %d\n", ret); dev_err(&udev->dev, "unable to read MAC address: %d\n", ret);
goto err; goto err;
} }
eth_hw_addr_set(dev->net, addr);
/* start (does not seem to have any effect?) */ /* start (does not seem to have any effect?) */
ret = cx82310_cmd(dev, CMD_START, false, NULL, 0, NULL, 0); ret = cx82310_cmd(dev, CMD_START, false, NULL, 0, NULL, 0);
@@ -202,13 +232,19 @@ static int cx82310_bind(struct usbnet *dev, struct usb_interface *intf)
return 0; return 0;
err: err:
kfree(dev->driver_priv);
err_partial:
kfree((void *)dev->partial_data); kfree((void *)dev->partial_data);
return ret; return ret;
} }
static void cx82310_unbind(struct usbnet *dev, struct usb_interface *intf) static void cx82310_unbind(struct usbnet *dev, struct usb_interface *intf)
{ {
struct cx82310_priv *priv = dev->driver_priv;
kfree((void *)dev->partial_data); kfree((void *)dev->partial_data);
cancel_work_sync(&priv->reenable_work);
kfree(dev->driver_priv);
} }
/* /*
@@ -223,6 +259,7 @@ static int cx82310_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
{ {
int len; int len;
struct sk_buff *skb2; struct sk_buff *skb2;
struct cx82310_priv *priv = dev->driver_priv;
/* /*
* If the last skb ended with an incomplete packet, this skb contains * If the last skb ended with an incomplete packet, this skb contains
@@ -257,7 +294,10 @@ static int cx82310_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
break; break;
} }
if (len > CX82310_MTU) { if (len == 0xffff) {
netdev_info(dev->net, "router was rebooted, re-enabling ethernet mode");
schedule_work(&priv->reenable_work);
} else if (len > CX82310_MTU) {
dev_err(&dev->udev->dev, "RX packet too long: %d B\n", dev_err(&dev->udev->dev, "RX packet too long: %d B\n",
len); len);
return 0; return 0;

View File

@@ -407,8 +407,8 @@ static int ipheth_close(struct net_device *net)
{ {
struct ipheth_device *dev = netdev_priv(net); struct ipheth_device *dev = netdev_priv(net);
cancel_delayed_work_sync(&dev->carrier_work);
netif_stop_queue(net); netif_stop_queue(net);
cancel_delayed_work_sync(&dev->carrier_work);
return 0; return 0;
} }
@@ -497,7 +497,7 @@ static int ipheth_probe(struct usb_interface *intf,
netdev->netdev_ops = &ipheth_netdev_ops; netdev->netdev_ops = &ipheth_netdev_ops;
netdev->watchdog_timeo = IPHETH_TX_TIMEOUT; netdev->watchdog_timeo = IPHETH_TX_TIMEOUT;
strcpy(netdev->name, "eth%d"); strscpy(netdev->name, "eth%d", sizeof(netdev->name));
dev = netdev_priv(netdev); dev = netdev_priv(netdev);
dev->udev = udev; dev->udev = udev;

View File

@@ -1139,8 +1139,7 @@ err_fw:
goto err_all_but_rxbuf; goto err_all_but_rxbuf;
memcpy(netdev->broadcast, &bcast_addr, sizeof(bcast_addr)); memcpy(netdev->broadcast, &bcast_addr, sizeof(bcast_addr));
memcpy(netdev->dev_addr, &kaweth->configuration.hw_addr, eth_hw_addr_set(netdev, (u8 *)&kaweth->configuration.hw_addr);
sizeof(kaweth->configuration.hw_addr));
netdev->netdev_ops = &kaweth_netdev_ops; netdev->netdev_ops = &kaweth_netdev_ops;
netdev->watchdog_timeo = KAWETH_TX_TIMEOUT; netdev->watchdog_timeo = KAWETH_TX_TIMEOUT;

View File

@@ -493,17 +493,19 @@ static const struct net_device_ops mcs7830_netdev_ops = {
static int mcs7830_bind(struct usbnet *dev, struct usb_interface *udev) static int mcs7830_bind(struct usbnet *dev, struct usb_interface *udev)
{ {
struct net_device *net = dev->net; struct net_device *net = dev->net;
u8 addr[ETH_ALEN];
int ret; int ret;
int retry; int retry;
/* Initial startup: Gather MAC address setting from EEPROM */ /* Initial startup: Gather MAC address setting from EEPROM */
ret = -EINVAL; ret = -EINVAL;
for (retry = 0; retry < 5 && ret; retry++) for (retry = 0; retry < 5 && ret; retry++)
ret = mcs7830_hif_get_mac_address(dev, net->dev_addr); ret = mcs7830_hif_get_mac_address(dev, addr);
if (ret) { if (ret) {
dev_warn(&dev->udev->dev, "Cannot read MAC address\n"); dev_warn(&dev->udev->dev, "Cannot read MAC address\n");
goto out; goto out;
} }
eth_hw_addr_set(net, addr);
mcs7830_data_set_multicast(net); mcs7830_data_set_multicast(net);

View File

@@ -1379,6 +1379,7 @@ static const struct usb_device_id products[] = {
{QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */ {QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */
{QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */ {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */
{QMI_QUIRK_SET_DTR(0x33f8, 0x0104, 4)}, /* Rolling RW101 RMNET */ {QMI_QUIRK_SET_DTR(0x33f8, 0x0104, 4)}, /* Rolling RW101 RMNET */
{QMI_FIXED_INTF(0x2dee, 0x4d22, 5)}, /* MeiG Smart SRM825L */
/* 4. Gobi 1000 devices */ /* 4. Gobi 1000 devices */
{QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */

View File

@@ -690,6 +690,7 @@ static int sierra_net_bind(struct usbnet *dev, struct usb_interface *intf)
0x00, 0x00, SIERRA_NET_HIP_MSYNC_ID, 0x00}; 0x00, 0x00, SIERRA_NET_HIP_MSYNC_ID, 0x00};
static const u8 shdwn_tmplate[sizeof(priv->shdwn_msg)] = { static const u8 shdwn_tmplate[sizeof(priv->shdwn_msg)] = {
0x00, 0x00, SIERRA_NET_HIP_SHUTD_ID, 0x00}; 0x00, 0x00, SIERRA_NET_HIP_SHUTD_ID, 0x00};
u8 mod[2];
dev_dbg(&dev->udev->dev, "%s", __func__); dev_dbg(&dev->udev->dev, "%s", __func__);
@@ -719,8 +720,9 @@ static int sierra_net_bind(struct usbnet *dev, struct usb_interface *intf)
dev->net->netdev_ops = &sierra_net_device_ops; dev->net->netdev_ops = &sierra_net_device_ops;
/* change MAC addr to include, ifacenum, and to be unique */ /* change MAC addr to include, ifacenum, and to be unique */
dev->net->dev_addr[ETH_ALEN-2] = atomic_inc_return(&iface_counter); mod[0] = atomic_inc_return(&iface_counter);
dev->net->dev_addr[ETH_ALEN-1] = ifacenum; mod[1] = ifacenum;
dev_addr_mod(dev->net, ETH_ALEN - 2, mod, 2);
/* prepare shutdown message template */ /* prepare shutdown message template */
memcpy(priv->shdwn_msg, shdwn_tmplate, sizeof(priv->shdwn_msg)); memcpy(priv->shdwn_msg, shdwn_tmplate, sizeof(priv->shdwn_msg));

View File

@@ -326,6 +326,7 @@ static int sr9700_bind(struct usbnet *dev, struct usb_interface *intf)
{ {
struct net_device *netdev; struct net_device *netdev;
struct mii_if_info *mii; struct mii_if_info *mii;
u8 addr[ETH_ALEN];
int ret; int ret;
ret = usbnet_get_endpoints(dev, intf); ret = usbnet_get_endpoints(dev, intf);
@@ -356,11 +357,12 @@ static int sr9700_bind(struct usbnet *dev, struct usb_interface *intf)
* EEPROM automatically to PAR. In case there is no EEPROM externally, * EEPROM automatically to PAR. In case there is no EEPROM externally,
* a default MAC address is stored in PAR for making chip work properly. * a default MAC address is stored in PAR for making chip work properly.
*/ */
if (sr_read(dev, SR_PAR, ETH_ALEN, netdev->dev_addr) < 0) { if (sr_read(dev, SR_PAR, ETH_ALEN, addr) < 0) {
netdev_err(netdev, "Error reading MAC address\n"); netdev_err(netdev, "Error reading MAC address\n");
ret = -ENODEV; ret = -ENODEV;
goto out; goto out;
} }
eth_hw_addr_set(netdev, addr);
/* power up and reset phy */ /* power up and reset phy */
sr_write_reg(dev, SR_PRR, PRR_PHY_RST); sr_write_reg(dev, SR_PRR, PRR_PHY_RST);

View File

@@ -732,6 +732,7 @@ static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf)
struct sr_data *data = (struct sr_data *)&dev->data; struct sr_data *data = (struct sr_data *)&dev->data;
u16 led01_mux, led23_mux; u16 led01_mux, led23_mux;
int ret, embd_phy; int ret, embd_phy;
u8 addr[ETH_ALEN];
u32 phyid; u32 phyid;
u16 rx_ctl; u16 rx_ctl;
@@ -757,12 +758,12 @@ static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf)
} }
/* Get the MAC address */ /* Get the MAC address */
ret = sr_read_cmd(dev, SR_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, ret = sr_read_cmd(dev, SR_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, addr);
dev->net->dev_addr);
if (ret < 0) { if (ret < 0) {
netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret); netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret);
return ret; return ret;
} }
eth_hw_addr_set(dev->net, addr);
netdev_dbg(dev->net, "mac addr : %pM\n", dev->net->dev_addr); netdev_dbg(dev->net, "mac addr : %pM\n", dev->net->dev_addr);
/* Initialize MII structure */ /* Initialize MII structure */

View File

@@ -79,9 +79,6 @@
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
// randomly generated ethernet address
static u8 node_id [ETH_ALEN];
/* use ethtool to change the level for any given device */ /* use ethtool to change the level for any given device */
static int msg_level = -1; static int msg_level = -1;
module_param (msg_level, int, 0); module_param (msg_level, int, 0);
@@ -205,12 +202,13 @@ EXPORT_SYMBOL_GPL(usbnet_get_endpoints);
int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress) int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress)
{ {
u8 addr[ETH_ALEN];
int tmp = -1, ret; int tmp = -1, ret;
unsigned char buf [13]; unsigned char buf [13];
ret = usb_string(dev->udev, iMACAddress, buf, sizeof buf); ret = usb_string(dev->udev, iMACAddress, buf, sizeof buf);
if (ret == 12) if (ret == 12)
tmp = hex2bin(dev->net->dev_addr, buf, 6); tmp = hex2bin(addr, buf, 6);
if (tmp < 0) { if (tmp < 0) {
dev_dbg(&dev->udev->dev, dev_dbg(&dev->udev->dev,
"bad MAC string %d fetch, %d\n", iMACAddress, tmp); "bad MAC string %d fetch, %d\n", iMACAddress, tmp);
@@ -218,6 +216,7 @@ int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress)
ret = -EINVAL; ret = -EINVAL;
return ret; return ret;
} }
eth_hw_addr_set(dev->net, addr);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr); EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr);
@@ -1812,8 +1811,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
dev->interrupt_count = 0; dev->interrupt_count = 0;
dev->net = net; dev->net = net;
strcpy (net->name, "usb%d"); strscpy(net->name, "usb%d", sizeof(net->name));
memcpy (net->dev_addr, node_id, sizeof node_id);
/* rx and tx sides can use different message sizes; /* rx and tx sides can use different message sizes;
* bind() should set rx_urb_size in that case. * bind() should set rx_urb_size in that case.
@@ -1839,13 +1837,13 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
if ((dev->driver_info->flags & FLAG_ETHER) != 0 && if ((dev->driver_info->flags & FLAG_ETHER) != 0 &&
((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 || ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 ||
(net->dev_addr [0] & 0x02) == 0)) (net->dev_addr [0] & 0x02) == 0))
strcpy (net->name, "eth%d"); strscpy(net->name, "eth%d", sizeof(net->name));
/* WLAN devices should always be named "wlan%d" */ /* WLAN devices should always be named "wlan%d" */
if ((dev->driver_info->flags & FLAG_WLAN) != 0) if ((dev->driver_info->flags & FLAG_WLAN) != 0)
strcpy(net->name, "wlan%d"); strscpy(net->name, "wlan%d", sizeof(net->name));
/* WWAN devices should always be named "wwan%d" */ /* WWAN devices should always be named "wwan%d" */
if ((dev->driver_info->flags & FLAG_WWAN) != 0) if ((dev->driver_info->flags & FLAG_WWAN) != 0)
strcpy(net->name, "wwan%d"); strscpy(net->name, "wwan%d", sizeof(net->name));
/* devices that cannot do ARP */ /* devices that cannot do ARP */
if ((dev->driver_info->flags & FLAG_NOARP) != 0) if ((dev->driver_info->flags & FLAG_NOARP) != 0)
@@ -1887,9 +1885,9 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
goto out4; goto out4;
} }
/* let userspace know we have a random address */ /* this flags the device for user space */
if (ether_addr_equal(net->dev_addr, node_id)) if (!is_valid_ether_addr(net->dev_addr))
net->addr_assign_type = NET_ADDR_RANDOM; eth_hw_addr_random(net);
if ((dev->driver_info->flags & FLAG_WLAN) != 0) if ((dev->driver_info->flags & FLAG_WLAN) != 0)
SET_NETDEV_DEVTYPE(net, &wlan_type); SET_NETDEV_DEVTYPE(net, &wlan_type);
@@ -2305,7 +2303,6 @@ static int __init usbnet_init(void)
BUILD_BUG_ON( BUILD_BUG_ON(
FIELD_SIZEOF(struct sk_buff, cb) < sizeof(struct skb_data)); FIELD_SIZEOF(struct sk_buff, cb) < sizeof(struct skb_data));
eth_random_addr(node_id);
for (i = 0; i < NUM_USBNET_IDS; i++) { for (i = 0; i < NUM_USBNET_IDS; i++) {
usbnet_ipc_log_ctxt[i] = usbnet_ipc_log_ctxt[i] =
ipc_log_context_create(IPC_LOG_NUM_PAGES, ipc_log_context_create(IPC_LOG_NUM_PAGES,

View File

@@ -1091,6 +1091,7 @@ static int ieee_hw_init(struct ieee80211_hw *hw)
ieee80211_hw_set(hw, AMPDU_AGGREGATION); ieee80211_hw_set(hw, AMPDU_AGGREGATION);
ieee80211_hw_set(hw, SIGNAL_DBM); ieee80211_hw_set(hw, SIGNAL_DBM);
ieee80211_hw_set(hw, REPORTS_TX_ACK_STATUS); ieee80211_hw_set(hw, REPORTS_TX_ACK_STATUS);
ieee80211_hw_set(hw, MFP_CAPABLE);
hw->extra_tx_headroom = brcms_c_get_header_len(); hw->extra_tx_headroom = brcms_c_get_header_len();
hw->queues = N_TX_QUEUES; hw->queues = N_TX_QUEUES;

View File

@@ -1783,7 +1783,7 @@ int iwl_mvm_scan_stop(struct iwl_mvm *mvm, int type, bool notify)
if (!(mvm->scan_status & type)) if (!(mvm->scan_status & type))
return 0; return 0;
if (iwl_mvm_is_radio_killed(mvm)) { if (!test_bit(STATUS_DEVICE_ENABLED, &mvm->trans->status)) {
ret = 0; ret = 0;
goto out; goto out;
} }

View File

@@ -4258,11 +4258,27 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
BIT(NL80211_IFTYPE_P2P_GO) | BIT(NL80211_IFTYPE_P2P_GO) |
BIT(NL80211_IFTYPE_AP); BIT(NL80211_IFTYPE_AP);
wiphy->bands[NL80211_BAND_2GHZ] = &mwifiex_band_2ghz; wiphy->bands[NL80211_BAND_2GHZ] = devm_kmemdup(adapter->dev,
if (adapter->config_bands & BAND_A) &mwifiex_band_2ghz,
wiphy->bands[NL80211_BAND_5GHZ] = &mwifiex_band_5ghz; sizeof(mwifiex_band_2ghz),
else GFP_KERNEL);
if (!wiphy->bands[NL80211_BAND_2GHZ]) {
ret = -ENOMEM;
goto err;
}
if (adapter->config_bands & BAND_A) {
wiphy->bands[NL80211_BAND_5GHZ] = devm_kmemdup(adapter->dev,
&mwifiex_band_5ghz,
sizeof(mwifiex_band_5ghz),
GFP_KERNEL);
if (!wiphy->bands[NL80211_BAND_5GHZ]) {
ret = -ENOMEM;
goto err;
}
} else {
wiphy->bands[NL80211_BAND_5GHZ] = NULL; wiphy->bands[NL80211_BAND_5GHZ] = NULL;
}
if (adapter->drcs_enabled && ISSUPP_DRCS_ENABLED(adapter->fw_cap_info)) if (adapter->drcs_enabled && ISSUPP_DRCS_ENABLED(adapter->fw_cap_info))
wiphy->iface_combinations = &mwifiex_iface_comb_ap_sta_drcs; wiphy->iface_combinations = &mwifiex_iface_comb_ap_sta_drcs;
@@ -4343,8 +4359,7 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
if (ret < 0) { if (ret < 0) {
mwifiex_dbg(adapter, ERROR, mwifiex_dbg(adapter, ERROR,
"%s: wiphy_register failed: %d\n", __func__, ret); "%s: wiphy_register failed: %d\n", __func__, ret);
wiphy_free(wiphy); goto err;
return ret;
} }
if (!adapter->regd) { if (!adapter->regd) {
@@ -4386,4 +4401,9 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
adapter->wiphy = wiphy; adapter->wiphy = wiphy;
return ret; return ret;
err:
wiphy_free(wiphy);
return ret;
} }

View File

@@ -1288,6 +1288,9 @@ mwifiex_get_priv_by_id(struct mwifiex_adapter *adapter,
for (i = 0; i < adapter->priv_num; i++) { for (i = 0; i < adapter->priv_num; i++) {
if (adapter->priv[i]) { if (adapter->priv[i]) {
if (adapter->priv[i]->bss_mode == NL80211_IFTYPE_UNSPECIFIED)
continue;
if ((adapter->priv[i]->bss_num == bss_num) && if ((adapter->priv[i]->bss_num == bss_num) &&
(adapter->priv[i]->bss_type == bss_type)) (adapter->priv[i]->bss_type == bss_type))
break; break;

View File

@@ -1173,7 +1173,7 @@ void cw1200_rx_cb(struct cw1200_common *priv,
size_t ies_len = skb->len - (ies - (u8 *)(skb->data)); size_t ies_len = skb->len - (ies - (u8 *)(skb->data));
tim_ie = cfg80211_find_ie(WLAN_EID_TIM, ies, ies_len); tim_ie = cfg80211_find_ie(WLAN_EID_TIM, ies, ies_len);
if (tim_ie) { if (tim_ie && tim_ie[1] >= sizeof(struct ieee80211_tim_ie)) {
struct ieee80211_tim_ie *tim = struct ieee80211_tim_ie *tim =
(struct ieee80211_tim_ie *)&tim_ie[2]; (struct ieee80211_tim_ie *)&tim_ie[2];

View File

@@ -435,12 +435,8 @@ nvmet_rdma_alloc_rsps(struct nvmet_rdma_queue *queue)
return 0; return 0;
out_free: out_free:
while (--i >= 0) { while (--i >= 0)
struct nvmet_rdma_rsp *rsp = &queue->rsps[i]; nvmet_rdma_free_rsp(ndev, &queue->rsps[i]);
list_del(&rsp->free_list);
nvmet_rdma_free_rsp(ndev, rsp);
}
kfree(queue->rsps); kfree(queue->rsps);
out: out:
return ret; return ret;
@@ -451,12 +447,8 @@ static void nvmet_rdma_free_rsps(struct nvmet_rdma_queue *queue)
struct nvmet_rdma_device *ndev = queue->dev; struct nvmet_rdma_device *ndev = queue->dev;
int i, nr_rsps = queue->recv_queue_size * 2; int i, nr_rsps = queue->recv_queue_size * 2;
for (i = 0; i < nr_rsps; i++) { for (i = 0; i < nr_rsps; i++)
struct nvmet_rdma_rsp *rsp = &queue->rsps[i]; nvmet_rdma_free_rsp(ndev, &queue->rsps[i]);
list_del(&rsp->free_list);
nvmet_rdma_free_rsp(ndev, rsp);
}
kfree(queue->rsps); kfree(queue->rsps);
} }

View File

@@ -719,13 +719,13 @@ void nvmem_device_put(struct nvmem_device *nvmem)
EXPORT_SYMBOL_GPL(nvmem_device_put); EXPORT_SYMBOL_GPL(nvmem_device_put);
/** /**
* devm_nvmem_device_get() - Get nvmem cell of device form a given id * devm_nvmem_device_get() - Get nvmem device of device form a given id
* *
* @dev: Device that requests the nvmem device. * @dev: Device that requests the nvmem device.
* @id: name id for the requested nvmem device. * @id: name id for the requested nvmem device.
* *
* Return: ERR_PTR() on error or a valid pointer to a struct nvmem_cell * Return: ERR_PTR() on error or a valid pointer to a struct nvmem_device
* on success. The nvmem_cell will be freed by the automatically once the * on success. The nvmem_device will be freed by the automatically once the
* device is freed. * device is freed.
*/ */
struct nvmem_device *devm_nvmem_device_get(struct device *dev, const char *id) struct nvmem_device *devm_nvmem_device_get(struct device *dev, const char *id)

View File

@@ -294,7 +294,8 @@ int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_ar
struct device_node *p; struct device_node *p;
const __be32 *addr; const __be32 *addr;
u32 intsize; u32 intsize;
int i, res; int i, res, addr_len;
__be32 addr_buf[3] = { 0 };
pr_debug("of_irq_parse_one: dev=%pOF, index=%d\n", device, index); pr_debug("of_irq_parse_one: dev=%pOF, index=%d\n", device, index);
@@ -303,13 +304,19 @@ int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_ar
return of_irq_parse_oldworld(device, index, out_irq); return of_irq_parse_oldworld(device, index, out_irq);
/* Get the reg property (if any) */ /* Get the reg property (if any) */
addr = of_get_property(device, "reg", NULL); addr = of_get_property(device, "reg", &addr_len);
/* Prevent out-of-bounds read in case of longer interrupt parent address size */
if (addr_len > (3 * sizeof(__be32)))
addr_len = 3 * sizeof(__be32);
if (addr)
memcpy(addr_buf, addr, addr_len);
/* Try the new-style interrupts-extended first */ /* Try the new-style interrupts-extended first */
res = of_parse_phandle_with_args(device, "interrupts-extended", res = of_parse_phandle_with_args(device, "interrupts-extended",
"#interrupt-cells", index, out_irq); "#interrupt-cells", index, out_irq);
if (!res) if (!res)
return of_irq_parse_raw(addr, out_irq); return of_irq_parse_raw(addr_buf, out_irq);
/* Look for the interrupt parent. */ /* Look for the interrupt parent. */
p = of_irq_find_parent(device); p = of_irq_find_parent(device);
@@ -339,7 +346,7 @@ int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_ar
/* Check if there are any interrupt-map translations to process */ /* Check if there are any interrupt-map translations to process */
res = of_irq_parse_raw(addr, out_irq); res = of_irq_parse_raw(addr_buf, out_irq);
out: out:
of_node_put(p); of_node_put(p);
return res; return res;

View File

@@ -39,7 +39,6 @@ static void pnv_php_disable_irq(struct pnv_php_slot *php_slot,
bool disable_device) bool disable_device)
{ {
struct pci_dev *pdev = php_slot->pdev; struct pci_dev *pdev = php_slot->pdev;
int irq = php_slot->irq;
u16 ctrl; u16 ctrl;
if (php_slot->irq > 0) { if (php_slot->irq > 0) {
@@ -58,7 +57,7 @@ static void pnv_php_disable_irq(struct pnv_php_slot *php_slot,
php_slot->wq = NULL; php_slot->wq = NULL;
} }
if (disable_device || irq > 0) { if (disable_device) {
if (pdev->msix_enabled) if (pdev->msix_enabled)
pci_disable_msix(pdev); pci_disable_msix(pdev);
else if (pdev->msi_enabled) else if (pdev->msi_enabled)

View File

@@ -4452,10 +4452,12 @@ static void pci_bus_lock(struct pci_bus *bus)
{ {
struct pci_dev *dev; struct pci_dev *dev;
pci_dev_lock(bus->self);
list_for_each_entry(dev, &bus->devices, bus_list) { list_for_each_entry(dev, &bus->devices, bus_list) {
pci_dev_lock(dev);
if (dev->subordinate) if (dev->subordinate)
pci_bus_lock(dev->subordinate); pci_bus_lock(dev->subordinate);
else
pci_dev_lock(dev);
} }
} }
@@ -4467,8 +4469,10 @@ static void pci_bus_unlock(struct pci_bus *bus)
list_for_each_entry(dev, &bus->devices, bus_list) { list_for_each_entry(dev, &bus->devices, bus_list) {
if (dev->subordinate) if (dev->subordinate)
pci_bus_unlock(dev->subordinate); pci_bus_unlock(dev->subordinate);
pci_dev_unlock(dev); else
pci_dev_unlock(dev);
} }
pci_dev_unlock(bus->self);
} }
/* Return 1 on successful lock, 0 on contention */ /* Return 1 on successful lock, 0 on contention */
@@ -4476,15 +4480,15 @@ static int pci_bus_trylock(struct pci_bus *bus)
{ {
struct pci_dev *dev; struct pci_dev *dev;
if (!pci_dev_trylock(bus->self))
return 0;
list_for_each_entry(dev, &bus->devices, bus_list) { list_for_each_entry(dev, &bus->devices, bus_list) {
if (!pci_dev_trylock(dev))
goto unlock;
if (dev->subordinate) { if (dev->subordinate) {
if (!pci_bus_trylock(dev->subordinate)) { if (!pci_bus_trylock(dev->subordinate))
pci_dev_unlock(dev);
goto unlock; goto unlock;
} } else if (!pci_dev_trylock(dev))
} goto unlock;
} }
return 1; return 1;
@@ -4492,8 +4496,10 @@ unlock:
list_for_each_entry_continue_reverse(dev, &bus->devices, bus_list) { list_for_each_entry_continue_reverse(dev, &bus->devices, bus_list) {
if (dev->subordinate) if (dev->subordinate)
pci_bus_unlock(dev->subordinate); pci_bus_unlock(dev->subordinate);
pci_dev_unlock(dev); else
pci_dev_unlock(dev);
} }
pci_dev_unlock(bus->self);
return 0; return 0;
} }
@@ -4521,9 +4527,10 @@ static void pci_slot_lock(struct pci_slot *slot)
list_for_each_entry(dev, &slot->bus->devices, bus_list) { list_for_each_entry(dev, &slot->bus->devices, bus_list) {
if (!dev->slot || dev->slot != slot) if (!dev->slot || dev->slot != slot)
continue; continue;
pci_dev_lock(dev);
if (dev->subordinate) if (dev->subordinate)
pci_bus_lock(dev->subordinate); pci_bus_lock(dev->subordinate);
else
pci_dev_lock(dev);
} }
} }
@@ -4549,14 +4556,13 @@ static int pci_slot_trylock(struct pci_slot *slot)
list_for_each_entry(dev, &slot->bus->devices, bus_list) { list_for_each_entry(dev, &slot->bus->devices, bus_list) {
if (!dev->slot || dev->slot != slot) if (!dev->slot || dev->slot != slot)
continue; continue;
if (!pci_dev_trylock(dev))
goto unlock;
if (dev->subordinate) { if (dev->subordinate) {
if (!pci_bus_trylock(dev->subordinate)) { if (!pci_bus_trylock(dev->subordinate)) {
pci_dev_unlock(dev); pci_dev_unlock(dev);
goto unlock; goto unlock;
} }
} } else if (!pci_dev_trylock(dev))
goto unlock;
} }
return 1; return 1;
@@ -4567,7 +4573,8 @@ unlock:
continue; continue;
if (dev->subordinate) if (dev->subordinate)
pci_bus_unlock(dev->subordinate); pci_bus_unlock(dev->subordinate);
pci_dev_unlock(dev); else
pci_dev_unlock(dev);
} }
return 0; return 0;
} }

View File

@@ -636,11 +636,11 @@ static int yenta_search_one_res(struct resource *root, struct resource *res,
start = PCIBIOS_MIN_CARDBUS_IO; start = PCIBIOS_MIN_CARDBUS_IO;
end = ~0U; end = ~0U;
} else { } else {
unsigned long avail = root->end - root->start; unsigned long avail = resource_size(root);
int i; int i;
size = BRIDGE_MEM_MAX; size = BRIDGE_MEM_MAX;
if (size > avail/8) { if (size > (avail - 1) / 8) {
size = (avail+1)/8; size = avail / 8;
/* round size down to next power of 2 */ /* round size down to next power of 2 */
i = 0; i = 0;
while ((size /= 2) != 0) while ((size /= 2) != 0)

View File

@@ -317,6 +317,8 @@ static int pcs_get_function(struct pinctrl_dev *pctldev, unsigned pin,
return -ENOTSUPP; return -ENOTSUPP;
fselector = setting->func; fselector = setting->func;
function = pinmux_generic_get_function(pctldev, fselector); function = pinmux_generic_get_function(pctldev, fselector);
if (!function)
return -EINVAL;
*func = function->data; *func = function->data;
if (!(*func)) { if (!(*func)) {
dev_err(pcs->dev, "%s could not find function%i\n", dev_err(pcs->dev, "%s could not find function%i\n",

View File

@@ -16,7 +16,7 @@ struct idset {
unsigned long bitmap[0]; unsigned long bitmap[0];
}; };
static inline unsigned long bitmap_size(int num_ssid, int num_id) static inline unsigned long idset_bitmap_size(int num_ssid, int num_id)
{ {
return BITS_TO_LONGS(num_ssid * num_id) * sizeof(unsigned long); return BITS_TO_LONGS(num_ssid * num_id) * sizeof(unsigned long);
} }
@@ -25,11 +25,12 @@ static struct idset *idset_new(int num_ssid, int num_id)
{ {
struct idset *set; struct idset *set;
set = vmalloc(sizeof(struct idset) + bitmap_size(num_ssid, num_id)); set = vmalloc(sizeof(struct idset) +
idset_bitmap_size(num_ssid, num_id));
if (set) { if (set) {
set->num_ssid = num_ssid; set->num_ssid = num_ssid;
set->num_id = num_id; set->num_id = num_id;
memset(set->bitmap, 0, bitmap_size(num_ssid, num_id)); memset(set->bitmap, 0, idset_bitmap_size(num_ssid, num_id));
} }
return set; return set;
} }
@@ -41,7 +42,8 @@ void idset_free(struct idset *set)
void idset_fill(struct idset *set) void idset_fill(struct idset *set)
{ {
memset(set->bitmap, 0xff, bitmap_size(set->num_ssid, set->num_id)); memset(set->bitmap, 0xff,
idset_bitmap_size(set->num_ssid, set->num_id));
} }
static inline void idset_add(struct idset *set, int ssid, int id) static inline void idset_add(struct idset *set, int ssid, int id)

View File

@@ -613,6 +613,7 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev)
if (aac_comm_init(dev)<0){ if (aac_comm_init(dev)<0){
kfree(dev->queues); kfree(dev->queues);
dev->queues = NULL;
return NULL; return NULL;
} }
/* /*
@@ -620,6 +621,7 @@ struct aac_dev *aac_init_adapter(struct aac_dev *dev)
*/ */
if (aac_fib_setup(dev) < 0) { if (aac_fib_setup(dev) < 0) {
kfree(dev->queues); kfree(dev->queues);
dev->queues = NULL;
return NULL; return NULL;
} }

View File

@@ -6383,7 +6383,7 @@ lpfc_sli4_repost_sgl_list(struct lpfc_hba *phba,
struct lpfc_sglq *sglq_entry = NULL; struct lpfc_sglq *sglq_entry = NULL;
struct lpfc_sglq *sglq_entry_next = NULL; struct lpfc_sglq *sglq_entry_next = NULL;
struct lpfc_sglq *sglq_entry_first = NULL; struct lpfc_sglq *sglq_entry_first = NULL;
int status, total_cnt; int status = 0, total_cnt;
int post_cnt = 0, num_posted = 0, block_cnt = 0; int post_cnt = 0, num_posted = 0, block_cnt = 0;
int last_xritag = NO_XRI; int last_xritag = NO_XRI;
LIST_HEAD(prep_sgl_list); LIST_HEAD(prep_sgl_list);

View File

@@ -1389,6 +1389,22 @@ _base_build_zero_len_sge_ieee(struct MPT3SAS_ADAPTER *ioc, void *paddr)
_base_add_sg_single_ieee(paddr, sgl_flags, 0, 0, -1); _base_add_sg_single_ieee(paddr, sgl_flags, 0, 0, -1);
} }
static inline int _base_scsi_dma_map(struct scsi_cmnd *cmd)
{
/*
* Some firmware versions byte-swap the REPORT ZONES command reply from
* ATA-ZAC devices by directly accessing in the host buffer. This does
* not respect the default command DMA direction and causes IOMMU page
* faults on some architectures with an IOMMU enforcing write mappings
* (e.g. AMD hosts). Avoid such issue by making the report zones buffer
* mapping bi-directional.
*/
if (cmd->cmnd[0] == ZBC_IN && cmd->cmnd[1] == ZI_REPORT_ZONES)
cmd->sc_data_direction = DMA_BIDIRECTIONAL;
return scsi_dma_map(cmd);
}
/** /**
* _base_build_sg_scmd - main sg creation routine * _base_build_sg_scmd - main sg creation routine
* @ioc: per adapter object * @ioc: per adapter object
@@ -1433,7 +1449,7 @@ _base_build_sg_scmd(struct MPT3SAS_ADAPTER *ioc,
sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT; sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT;
sg_scmd = scsi_sglist(scmd); sg_scmd = scsi_sglist(scmd);
sges_left = scsi_dma_map(scmd); sges_left = _base_scsi_dma_map(scmd);
if (sges_left < 0) { if (sges_left < 0) {
sdev_printk(KERN_ERR, scmd->device, sdev_printk(KERN_ERR, scmd->device,
"pci_map_sg failed: request for %d bytes!\n", "pci_map_sg failed: request for %d bytes!\n",
@@ -1572,7 +1588,7 @@ _base_build_sg_scmd_ieee(struct MPT3SAS_ADAPTER *ioc,
MPI2_IEEE_SGE_FLAGS_SYSTEM_ADDR; MPI2_IEEE_SGE_FLAGS_SYSTEM_ADDR;
sg_scmd = scsi_sglist(scmd); sg_scmd = scsi_sglist(scmd);
sges_left = scsi_dma_map(scmd); sges_left = _base_scsi_dma_map(scmd);
if (sges_left < 0) { if (sges_left < 0) {
sdev_printk(KERN_ERR, scmd->device, sdev_printk(KERN_ERR, scmd->device,
"pci_map_sg failed: request for %d bytes!\n", "pci_map_sg failed: request for %d bytes!\n",

View File

@@ -683,10 +683,10 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer,
for (r = 0; r < retries; r++) { for (r = 0; r < retries; r++) {
result = spi_execute(sdev, spi_write_buffer, DMA_TO_DEVICE, result = spi_execute(sdev, spi_write_buffer, DMA_TO_DEVICE,
buffer, len, &sshdr); buffer, len, &sshdr);
if(result || !scsi_device_online(sdev)) { if (result || !scsi_device_online(sdev)) {
scsi_device_set_state(sdev, SDEV_QUIESCE); scsi_device_set_state(sdev, SDEV_QUIESCE);
if (scsi_sense_valid(&sshdr) if (result > 0 && scsi_sense_valid(&sshdr)
&& sshdr.sense_key == ILLEGAL_REQUEST && sshdr.sense_key == ILLEGAL_REQUEST
/* INVALID FIELD IN CDB */ /* INVALID FIELD IN CDB */
&& sshdr.asc == 0x24 && sshdr.ascq == 0x00) && sshdr.asc == 0x24 && sshdr.ascq == 0x00)

View File

@@ -830,7 +830,7 @@ static u32 clkfactor_f6_resolve(u32 v)
case SSB_CHIPCO_CLK_F6_7: case SSB_CHIPCO_CLK_F6_7:
return 7; return 7;
} }
return 0; return 1;
} }
/* Calculate the speed the backplane would run at a given set of clockcontrol values */ /* Calculate the speed the backplane would run at a given set of clockcontrol values */

View File

@@ -339,9 +339,9 @@ int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size,
priv->hostt.qtail = (priv->hostt.qtail + 1) % SME_EVENT_BUFF_SIZE; priv->hostt.qtail = (priv->hostt.qtail + 1) % SME_EVENT_BUFF_SIZE;
DPRINTK(4, "event=%04X\n", hdr->event); DPRINTK(4, "event=%04X\n", hdr->event);
spin_lock(&priv->tx_dev.tx_dev_lock); spin_lock_bh(&priv->tx_dev.tx_dev_lock);
result = enqueue_txdev(priv, p, size, complete_handler, skb); result = enqueue_txdev(priv, p, size, complete_handler, skb);
spin_unlock(&priv->tx_dev.tx_dev_lock); spin_unlock_bh(&priv->tx_dev.tx_dev_lock);
if (cnt_txqbody(priv) > 0) if (cnt_txqbody(priv) > 0)
queue_delayed_work(priv->wq, &priv->rw_dwork, 0); queue_delayed_work(priv->wq, &priv->rw_dwork, 0);

View File

@@ -1818,6 +1818,9 @@ static const struct usb_device_id acm_ids[] = {
{ USB_DEVICE(0x11ca, 0x0201), /* VeriFone Mx870 Gadget Serial */ { USB_DEVICE(0x11ca, 0x0201), /* VeriFone Mx870 Gadget Serial */
.driver_info = SINGLE_RX_URB, .driver_info = SINGLE_RX_URB,
}, },
{ USB_DEVICE(0x1901, 0x0006), /* GE Healthcare Patient Monitor UI Controller */
.driver_info = DISABLE_ECHO, /* DISABLE ECHO in termios flag */
},
{ USB_DEVICE(0x1965, 0x0018), /* Uniden UBC125XLT */ { USB_DEVICE(0x1965, 0x0018), /* Uniden UBC125XLT */
.driver_info = NO_UNION_NORMAL, /* has no union descriptor */ .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
}, },

View File

@@ -668,6 +668,7 @@ static int add_power_attributes(struct device *dev)
static void remove_power_attributes(struct device *dev) static void remove_power_attributes(struct device *dev)
{ {
sysfs_unmerge_group(&dev->kobj, &usb3_hardware_lpm_attr_group);
sysfs_unmerge_group(&dev->kobj, &usb2_hardware_lpm_attr_group); sysfs_unmerge_group(&dev->kobj, &usb2_hardware_lpm_attr_group);
sysfs_unmerge_group(&dev->kobj, &power_attr_group); sysfs_unmerge_group(&dev->kobj, &power_attr_group);
} }

View File

@@ -394,6 +394,13 @@ static void dwc3_free_event_buffers(struct dwc3 *dwc)
static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length) static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length)
{ {
struct dwc3_event_buffer *evt; struct dwc3_event_buffer *evt;
unsigned int hw_mode;
hw_mode = DWC3_GHWPARAMS0_MODE(dwc->hwparams.hwparams0);
if (hw_mode == DWC3_GHWPARAMS0_MODE_HOST) {
dwc->ev_buf = NULL;
return 0;
}
evt = dwc3_alloc_one_event_buffer(dwc, length); evt = dwc3_alloc_one_event_buffer(dwc, length);
if (IS_ERR(evt)) { if (IS_ERR(evt)) {
@@ -417,6 +424,9 @@ int dwc3_event_buffers_setup(struct dwc3 *dwc)
{ {
struct dwc3_event_buffer *evt; struct dwc3_event_buffer *evt;
if (!dwc->ev_buf)
return 0;
evt = dwc->ev_buf; evt = dwc->ev_buf;
evt->lpos = 0; evt->lpos = 0;
dwc3_writel(dwc->regs, DWC3_GEVNTADRLO(0), dwc3_writel(dwc->regs, DWC3_GEVNTADRLO(0),
@@ -435,6 +445,17 @@ int dwc3_event_buffers_setup(struct dwc3 *dwc)
static void dwc3_event_buffers_cleanup(struct dwc3 *dwc) static void dwc3_event_buffers_cleanup(struct dwc3 *dwc)
{ {
struct dwc3_event_buffer *evt; struct dwc3_event_buffer *evt;
u32 reg;
if (!dwc->ev_buf)
return;
/*
* Exynos platforms may not be able to access event buffer if the
* controller failed to halt on dwc3_core_exit().
*/
reg = dwc3_readl(dwc->regs, DWC3_DSTS);
if (!(reg & DWC3_DSTS_DEVCTRLHLT))
return;
evt = dwc->ev_buf; evt = dwc->ev_buf;

View File

@@ -534,11 +534,13 @@ static int dwc3_omap_probe(struct platform_device *pdev)
if (ret) { if (ret) {
dev_err(dev, "failed to request IRQ #%d --> %d\n", dev_err(dev, "failed to request IRQ #%d --> %d\n",
omap->irq, ret); omap->irq, ret);
goto err1; goto err2;
} }
dwc3_omap_enable_irqs(omap); dwc3_omap_enable_irqs(omap);
return 0; return 0;
err2:
of_platform_depopulate(dev);
err1: err1:
pm_runtime_put_sync(dev); pm_runtime_put_sync(dev);
pm_runtime_disable(dev); pm_runtime_disable(dev);

View File

@@ -223,10 +223,8 @@ static int st_dwc3_probe(struct platform_device *pdev)
dwc3_data->regmap = regmap; dwc3_data->regmap = regmap;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "syscfg-reg"); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "syscfg-reg");
if (!res) { if (!res)
ret = -ENXIO; return -ENXIO;
goto undo_platform_dev_alloc;
}
dwc3_data->syscfg_reg_off = res->start; dwc3_data->syscfg_reg_off = res->start;
@@ -237,8 +235,7 @@ static int st_dwc3_probe(struct platform_device *pdev)
devm_reset_control_get_exclusive(dev, "powerdown"); devm_reset_control_get_exclusive(dev, "powerdown");
if (IS_ERR(dwc3_data->rstc_pwrdn)) { if (IS_ERR(dwc3_data->rstc_pwrdn)) {
dev_err(&pdev->dev, "could not get power controller\n"); dev_err(&pdev->dev, "could not get power controller\n");
ret = PTR_ERR(dwc3_data->rstc_pwrdn); return PTR_ERR(dwc3_data->rstc_pwrdn);
goto undo_platform_dev_alloc;
} }
/* Manage PowerDown */ /* Manage PowerDown */
@@ -259,24 +256,25 @@ static int st_dwc3_probe(struct platform_device *pdev)
if (!child) { if (!child) {
dev_err(&pdev->dev, "failed to find dwc3 core node\n"); dev_err(&pdev->dev, "failed to find dwc3 core node\n");
ret = -ENODEV; ret = -ENODEV;
goto undo_softreset; goto err_node_put;
} }
/* Allocate and initialize the core */ /* Allocate and initialize the core */
ret = of_platform_populate(node, NULL, NULL, dev); ret = of_platform_populate(node, NULL, NULL, dev);
if (ret) { if (ret) {
dev_err(dev, "failed to add dwc3 core\n"); dev_err(dev, "failed to add dwc3 core\n");
goto undo_softreset; goto err_node_put;
} }
child_pdev = of_find_device_by_node(child); child_pdev = of_find_device_by_node(child);
if (!child_pdev) { if (!child_pdev) {
dev_err(dev, "failed to find dwc3 core device\n"); dev_err(dev, "failed to find dwc3 core device\n");
ret = -ENODEV; ret = -ENODEV;
goto undo_softreset; goto depopulate;
} }
dwc3_data->dr_mode = usb_get_dr_mode(&child_pdev->dev); dwc3_data->dr_mode = usb_get_dr_mode(&child_pdev->dev);
of_node_put(child);
/* /*
* Configure the USB port as device or host according to the static * Configure the USB port as device or host according to the static
@@ -287,6 +285,7 @@ static int st_dwc3_probe(struct platform_device *pdev)
ret = st_dwc3_drd_init(dwc3_data); ret = st_dwc3_drd_init(dwc3_data);
if (ret) { if (ret) {
dev_err(dev, "drd initialisation failed\n"); dev_err(dev, "drd initialisation failed\n");
of_platform_depopulate(dev);
goto undo_softreset; goto undo_softreset;
} }
@@ -296,12 +295,14 @@ static int st_dwc3_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, dwc3_data); platform_set_drvdata(pdev, dwc3_data);
return 0; return 0;
depopulate:
of_platform_depopulate(dev);
err_node_put:
of_node_put(child);
undo_softreset: undo_softreset:
reset_control_assert(dwc3_data->rstc_rst); reset_control_assert(dwc3_data->rstc_rst);
undo_powerdown: undo_powerdown:
reset_control_assert(dwc3_data->rstc_pwrdn); reset_control_assert(dwc3_data->rstc_pwrdn);
undo_platform_dev_alloc:
platform_device_put(pdev);
return ret; return ret;
} }

View File

@@ -2496,7 +2496,7 @@ static int fsl_udc_probe(struct platform_device *pdev)
/* setup the udc->eps[] for non-control endpoints and link /* setup the udc->eps[] for non-control endpoints and link
* to gadget.ep_list */ * to gadget.ep_list */
for (i = 1; i < (int)(udc_controller->max_ep / 2); i++) { for (i = 1; i < (int)(udc_controller->max_ep / 2); i++) {
char name[14]; char name[16];
sprintf(name, "ep%dout", i); sprintf(name, "ep%dout", i);
struct_ep_setup(udc_controller, i * 2, name, 1); struct_ep_setup(udc_controller, i * 2, name, 1);

View File

@@ -622,6 +622,8 @@ static void option_instat_callback(struct urb *urb);
/* MeiG Smart Technology products */ /* MeiG Smart Technology products */
#define MEIGSMART_VENDOR_ID 0x2dee #define MEIGSMART_VENDOR_ID 0x2dee
/* MeiG Smart SRM825L based on Qualcomm 315 */
#define MEIGSMART_PRODUCT_SRM825L 0x4d22
/* MeiG Smart SLM320 based on UNISOC UIS8910 */ /* MeiG Smart SLM320 based on UNISOC UIS8910 */
#define MEIGSMART_PRODUCT_SLM320 0x4d41 #define MEIGSMART_PRODUCT_SLM320 0x4d41
@@ -2368,6 +2370,9 @@ static const struct usb_device_id option_ids[] = {
{ USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) },
{ USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, LUAT_PRODUCT_AIR720U, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, LUAT_PRODUCT_AIR720U, 0xff, 0, 0) },
{ USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SLM320, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SLM320, 0xff, 0, 0) },
{ USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x30) },
{ USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x40) },
{ USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SRM825L, 0xff, 0xff, 0x60) },
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
MODULE_DEVICE_TABLE(usb, option_ids); MODULE_DEVICE_TABLE(usb, option_ids);

View File

@@ -158,53 +158,62 @@ static int tweak_set_configuration_cmd(struct urb *urb)
if (err && err != -ENODEV) if (err && err != -ENODEV)
dev_err(&sdev->udev->dev, "can't set config #%d, error %d\n", dev_err(&sdev->udev->dev, "can't set config #%d, error %d\n",
config, err); config, err);
return 0; return err;
} }
static int tweak_reset_device_cmd(struct urb *urb) static int tweak_reset_device_cmd(struct urb *urb)
{ {
struct stub_priv *priv = (struct stub_priv *) urb->context; struct stub_priv *priv = (struct stub_priv *) urb->context;
struct stub_device *sdev = priv->sdev; struct stub_device *sdev = priv->sdev;
int err;
dev_info(&urb->dev->dev, "usb_queue_reset_device\n"); dev_info(&urb->dev->dev, "usb_queue_reset_device\n");
if (usb_lock_device_for_reset(sdev->udev, NULL) < 0) { err = usb_lock_device_for_reset(sdev->udev, NULL);
if (err < 0) {
dev_err(&urb->dev->dev, "could not obtain lock to reset device\n"); dev_err(&urb->dev->dev, "could not obtain lock to reset device\n");
return 0; return err;
} }
usb_reset_device(sdev->udev); err = usb_reset_device(sdev->udev);
usb_unlock_device(sdev->udev); usb_unlock_device(sdev->udev);
return 0; return err;
} }
/* /*
* clear_halt, set_interface, and set_configuration require special tricks. * clear_halt, set_interface, and set_configuration require special tricks.
* Returns 1 if request was tweaked, 0 otherwise.
*/ */
static void tweak_special_requests(struct urb *urb) static int tweak_special_requests(struct urb *urb)
{ {
int err;
if (!urb || !urb->setup_packet) if (!urb || !urb->setup_packet)
return; return 0;
if (usb_pipetype(urb->pipe) != PIPE_CONTROL) if (usb_pipetype(urb->pipe) != PIPE_CONTROL)
return; return 0;
if (is_clear_halt_cmd(urb)) if (is_clear_halt_cmd(urb))
/* tweak clear_halt */ /* tweak clear_halt */
tweak_clear_halt_cmd(urb); err = tweak_clear_halt_cmd(urb);
else if (is_set_interface_cmd(urb)) else if (is_set_interface_cmd(urb))
/* tweak set_interface */ /* tweak set_interface */
tweak_set_interface_cmd(urb); err = tweak_set_interface_cmd(urb);
else if (is_set_configuration_cmd(urb)) else if (is_set_configuration_cmd(urb))
/* tweak set_configuration */ /* tweak set_configuration */
tweak_set_configuration_cmd(urb); err = tweak_set_configuration_cmd(urb);
else if (is_reset_device_cmd(urb)) else if (is_reset_device_cmd(urb))
tweak_reset_device_cmd(urb); err = tweak_reset_device_cmd(urb);
else else {
usbip_dbg_stub_rx("no need to tweak\n"); usbip_dbg_stub_rx("no need to tweak\n");
return 0;
}
return !err;
} }
/* /*
@@ -485,6 +494,7 @@ static void stub_recv_cmd_submit(struct stub_device *sdev,
int support_sg = 1; int support_sg = 1;
int np = 0; int np = 0;
int ret, i; int ret, i;
int is_tweaked;
if (pipe == -1) if (pipe == -1)
return; return;
@@ -597,8 +607,11 @@ static void stub_recv_cmd_submit(struct stub_device *sdev,
priv->urbs[i]->pipe = pipe; priv->urbs[i]->pipe = pipe;
priv->urbs[i]->complete = stub_complete; priv->urbs[i]->complete = stub_complete;
/* no need to submit an intercepted request, but harmless? */ /*
tweak_special_requests(priv->urbs[i]); * all URBs belong to a single PDU, so a global is_tweaked flag is
* enough
*/
is_tweaked = tweak_special_requests(priv->urbs[i]);
masking_bogus_flags(priv->urbs[i]); masking_bogus_flags(priv->urbs[i]);
} }
@@ -611,22 +624,32 @@ static void stub_recv_cmd_submit(struct stub_device *sdev,
/* urb is now ready to submit */ /* urb is now ready to submit */
for (i = 0; i < priv->num_urbs; i++) { for (i = 0; i < priv->num_urbs; i++) {
ret = usb_submit_urb(priv->urbs[i], GFP_KERNEL); if (!is_tweaked) {
ret = usb_submit_urb(priv->urbs[i], GFP_KERNEL);
if (ret == 0) if (ret == 0)
usbip_dbg_stub_rx("submit urb ok, seqnum %u\n", usbip_dbg_stub_rx("submit urb ok, seqnum %u\n",
pdu->base.seqnum); pdu->base.seqnum);
else { else {
dev_err(&udev->dev, "submit_urb error, %d\n", ret); dev_err(&udev->dev, "submit_urb error, %d\n", ret);
usbip_dump_header(pdu); usbip_dump_header(pdu);
usbip_dump_urb(priv->urbs[i]); usbip_dump_urb(priv->urbs[i]);
/*
* Pessimistic.
* This connection will be discarded.
*/
usbip_event_add(ud, SDEV_EVENT_ERROR_SUBMIT);
break;
}
} else {
/* /*
* Pessimistic. * An identical URB was already submitted in
* This connection will be discarded. * tweak_special_requests(). Skip submitting this URB to not
* duplicate the request.
*/ */
usbip_event_add(ud, SDEV_EVENT_ERROR_SUBMIT); priv->urbs[i]->status = 0;
break; stub_complete(priv->urbs[i]);
} }
} }

View File

@@ -2710,6 +2710,34 @@ static void fbcon_set_all_vcs(struct fb_info *info)
fbcon_modechanged(info); fbcon_modechanged(info);
} }
/* let fbcon check if it supports a new screen resolution */
int fbcon_modechange_possible(struct fb_info *info, struct fb_var_screeninfo *var)
{
struct fbcon_ops *ops = info->fbcon_par;
struct vc_data *vc;
unsigned int i;
WARN_CONSOLE_UNLOCKED();
if (!ops)
return 0;
/* prevent setting a screen size which is smaller than font size */
for (i = first_fb_vc; i <= last_fb_vc; i++) {
vc = vc_cons[i].d;
if (!vc || vc->vc_mode != KD_TEXT ||
registered_fb[con2fb_map[i]] != info)
continue;
if (vc->vc_font.width > FBCON_SWAP(var->rotate, var->xres, var->yres) ||
vc->vc_font.height > FBCON_SWAP(var->rotate, var->yres, var->xres))
return -EINVAL;
}
return 0;
}
EXPORT_SYMBOL_GPL(fbcon_modechange_possible);
static int fbcon_mode_deleted(struct fb_info *info, static int fbcon_mode_deleted(struct fb_info *info,
struct fb_videomode *mode) struct fb_videomode *mode)
{ {

View File

@@ -1019,6 +1019,17 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
if (ret) if (ret)
goto done; goto done;
/* verify that virtual resolution >= physical resolution */
if (var->xres_virtual < var->xres ||
var->yres_virtual < var->yres) {
pr_warn("WARNING: fbcon: Driver '%s' missed to adjust virtual screen size (%ux%u vs. %ux%u)\n",
info->fix.id,
var->xres_virtual, var->yres_virtual,
var->xres, var->yres);
ret = -EINVAL;
goto done;
}
if ((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) { if ((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) {
struct fb_var_screeninfo old_var; struct fb_var_screeninfo old_var;
struct fb_videomode mode; struct fb_videomode mode;
@@ -1148,9 +1159,12 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
console_unlock(); console_unlock();
return -ENODEV; return -ENODEV;
} }
info->flags |= FBINFO_MISC_USEREVENT; ret = fbcon_modechange_possible(info, &var);
ret = fb_set_var(info, &var); if (!ret) {
info->flags &= ~FBINFO_MISC_USEREVENT; info->flags |= FBINFO_MISC_USEREVENT;
ret = fb_set_var(info, &var);
info->flags &= ~FBINFO_MISC_USEREVENT;
}
unlock_fb_info(info); unlock_fb_info(info);
console_unlock(); console_unlock();
if (!ret && copy_to_user(argp, &var, sizeof(var))) if (!ret && copy_to_user(argp, &var, sizeof(var)))

View File

@@ -324,7 +324,7 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm)
else else
executable_stack = EXSTACK_DEFAULT; executable_stack = EXSTACK_DEFAULT;
if (stack_size == 0) { if (stack_size == 0 && interp_params.flags & ELF_FDPIC_FLAG_PRESENT) {
stack_size = interp_params.stack_size; stack_size = interp_params.stack_size;
if (interp_params.flags & ELF_FDPIC_FLAG_EXEC_STACK) if (interp_params.flags & ELF_FDPIC_FLAG_EXEC_STACK)
executable_stack = EXSTACK_ENABLE_X; executable_stack = EXSTACK_ENABLE_X;

View File

@@ -58,12 +58,11 @@ typedef struct {
char *name; char *name;
struct dentry *dentry; struct dentry *dentry;
struct file *interp_file; struct file *interp_file;
refcount_t users; /* sync removal with load_misc_binary() */
} Node; } Node;
static DEFINE_RWLOCK(entries_lock); static DEFINE_RWLOCK(entries_lock);
static struct file_system_type bm_fs_type; static struct file_system_type bm_fs_type;
static struct vfsmount *bm_mnt;
static int entry_count;
/* /*
* Max length of the register string. Determined by: * Max length of the register string. Determined by:
@@ -80,19 +79,23 @@ static int entry_count;
*/ */
#define MAX_REGISTER_LENGTH 1920 #define MAX_REGISTER_LENGTH 1920
/* /**
* Check if we support the binfmt * search_binfmt_handler - search for a binary handler for @bprm
* if we do, return the node, else NULL * @misc: handle to binfmt_misc instance
* locking is done in load_misc_binary * @bprm: binary for which we are looking for a handler
*
* Search for a binary type handler for @bprm in the list of registered binary
* type handlers.
*
* Return: binary type list entry on success, NULL on failure
*/ */
static Node *check_file(struct linux_binprm *bprm) static Node *search_binfmt_handler(struct linux_binprm *bprm)
{ {
char *p = strrchr(bprm->interp, '.'); char *p = strrchr(bprm->interp, '.');
struct list_head *l; Node *e;
/* Walk all the registered handlers. */ /* Walk all the registered handlers. */
list_for_each(l, &entries) { list_for_each_entry(e, &entries, list) {
Node *e = list_entry(l, Node, list);
char *s; char *s;
int j; int j;
@@ -121,9 +124,49 @@ static Node *check_file(struct linux_binprm *bprm)
if (j == e->size) if (j == e->size)
return e; return e;
} }
return NULL; return NULL;
} }
/**
* get_binfmt_handler - try to find a binary type handler
* @misc: handle to binfmt_misc instance
* @bprm: binary for which we are looking for a handler
*
* Try to find a binfmt handler for the binary type. If one is found take a
* reference to protect against removal via bm_{entry,status}_write().
*
* Return: binary type list entry on success, NULL on failure
*/
static Node *get_binfmt_handler(struct linux_binprm *bprm)
{
Node *e;
read_lock(&entries_lock);
e = search_binfmt_handler(bprm);
if (e)
refcount_inc(&e->users);
read_unlock(&entries_lock);
return e;
}
/**
* put_binfmt_handler - put binary handler node
* @e: node to put
*
* Free node syncing with load_misc_binary() and defer final free to
* load_misc_binary() in case it is using the binary type handler we were
* requested to remove.
*/
static void put_binfmt_handler(Node *e)
{
if (refcount_dec_and_test(&e->users)) {
if (e->flags & MISC_FMT_OPEN_FILE)
filp_close(e->interp_file, NULL);
kfree(e);
}
}
/* /*
* the loader itself * the loader itself
*/ */
@@ -138,12 +181,7 @@ static int load_misc_binary(struct linux_binprm *bprm)
if (!enabled) if (!enabled)
return retval; return retval;
/* to keep locking time low, we copy the interpreter string */ fmt = get_binfmt_handler(bprm);
read_lock(&entries_lock);
fmt = check_file(bprm);
if (fmt)
dget(fmt->dentry);
read_unlock(&entries_lock);
if (!fmt) if (!fmt)
return retval; return retval;
@@ -237,7 +275,16 @@ static int load_misc_binary(struct linux_binprm *bprm)
goto error; goto error;
ret: ret:
dput(fmt->dentry);
/*
* If we actually put the node here all concurrent calls to
* load_misc_binary() will have finished. We also know
* that for the refcount to be zero ->evict_inode() must have removed
* the node to be deleted from the list. All that is left for us is to
* close and free.
*/
put_binfmt_handler(fmt);
return retval; return retval;
error: error:
if (fd_binary > 0) if (fd_binary > 0)
@@ -598,30 +645,90 @@ static struct inode *bm_get_inode(struct super_block *sb, int mode)
return inode; return inode;
} }
/**
* bm_evict_inode - cleanup data associated with @inode
* @inode: inode to which the data is attached
*
* Cleanup the binary type handler data associated with @inode if a binary type
* entry is removed or the filesystem is unmounted and the super block is
* shutdown.
*
* If the ->evict call was not caused by a super block shutdown but by a write
* to remove the entry or all entries via bm_{entry,status}_write() the entry
* will have already been removed from the list. We keep the list_empty() check
* to make that explicit.
*/
static void bm_evict_inode(struct inode *inode) static void bm_evict_inode(struct inode *inode)
{ {
Node *e = inode->i_private; Node *e = inode->i_private;
if (e && e->flags & MISC_FMT_OPEN_FILE)
filp_close(e->interp_file, NULL);
clear_inode(inode); clear_inode(inode);
kfree(e);
if (e) {
write_lock(&entries_lock);
if (!list_empty(&e->list))
list_del_init(&e->list);
write_unlock(&entries_lock);
put_binfmt_handler(e);
}
} }
static void kill_node(Node *e) /**
* unlink_binfmt_dentry - remove the dentry for the binary type handler
* @dentry: dentry associated with the binary type handler
*
* Do the actual filesystem work to remove a dentry for a registered binary
* type handler. Since binfmt_misc only allows simple files to be created
* directly under the root dentry of the filesystem we ensure that we are
* indeed passed a dentry directly beneath the root dentry, that the inode
* associated with the root dentry is locked, and that it is a regular file we
* are asked to remove.
*/
static void unlink_binfmt_dentry(struct dentry *dentry)
{ {
struct dentry *dentry; struct dentry *parent = dentry->d_parent;
struct inode *inode, *parent_inode;
/* All entries are immediate descendants of the root dentry. */
if (WARN_ON_ONCE(dentry->d_sb->s_root != parent))
return;
/* We only expect to be called on regular files. */
inode = d_inode(dentry);
if (WARN_ON_ONCE(!S_ISREG(inode->i_mode)))
return;
/* The parent inode must be locked. */
parent_inode = d_inode(parent);
if (WARN_ON_ONCE(!inode_is_locked(parent_inode)))
return;
if (simple_positive(dentry)) {
dget(dentry);
simple_unlink(parent_inode, dentry);
d_delete(dentry);
dput(dentry);
}
}
/**
* remove_binfmt_handler - remove a binary type handler
* @misc: handle to binfmt_misc instance
* @e: binary type handler to remove
*
* Remove a binary type handler from the list of binary type handlers and
* remove its associated dentry. This is called from
* binfmt_{entry,status}_write(). In the future, we might want to think about
* adding a proper ->unlink() method to binfmt_misc instead of forcing caller's
* to use writes to files in order to delete binary type handlers. But it has
* worked for so long that it's not a pressing issue.
*/
static void remove_binfmt_handler(Node *e)
{
write_lock(&entries_lock); write_lock(&entries_lock);
list_del_init(&e->list); list_del_init(&e->list);
write_unlock(&entries_lock); write_unlock(&entries_lock);
unlink_binfmt_dentry(e->dentry);
dentry = e->dentry;
drop_nlink(d_inode(dentry));
d_drop(dentry);
dput(dentry);
simple_release_fs(&bm_mnt, &entry_count);
} }
/* /<entry> */ /* /<entry> */
@@ -648,8 +755,8 @@ bm_entry_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
static ssize_t bm_entry_write(struct file *file, const char __user *buffer, static ssize_t bm_entry_write(struct file *file, const char __user *buffer,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct dentry *root; struct inode *inode = file_inode(file);
Node *e = file_inode(file)->i_private; Node *e = inode->i_private;
int res = parse_command(buffer, count); int res = parse_command(buffer, count);
switch (res) { switch (res) {
@@ -663,13 +770,22 @@ static ssize_t bm_entry_write(struct file *file, const char __user *buffer,
break; break;
case 3: case 3:
/* Delete this handler. */ /* Delete this handler. */
root = file_inode(file)->i_sb->s_root; inode = d_inode(inode->i_sb->s_root);
inode_lock(d_inode(root)); inode_lock(inode);
/*
* In order to add new element or remove elements from the list
* via bm_{entry,register,status}_write() inode_lock() on the
* root inode must be held.
* The lock is exclusive ensuring that the list can't be
* modified. Only load_misc_binary() can access but does so
* read-only. So we only need to take the write lock when we
* actually remove the entry from the list.
*/
if (!list_empty(&e->list)) if (!list_empty(&e->list))
kill_node(e); remove_binfmt_handler(e);
inode_unlock(d_inode(root)); inode_unlock(inode);
break; break;
default: default:
return res; return res;
@@ -728,13 +844,7 @@ static ssize_t bm_register_write(struct file *file, const char __user *buffer,
if (!inode) if (!inode)
goto out2; goto out2;
err = simple_pin_fs(&bm_fs_type, &bm_mnt, &entry_count); refcount_set(&e->users, 1);
if (err) {
iput(inode);
inode = NULL;
goto out2;
}
e->dentry = dget(dentry); e->dentry = dget(dentry);
inode->i_private = e; inode->i_private = e;
inode->i_fop = &bm_entry_operations; inode->i_fop = &bm_entry_operations;
@@ -778,7 +888,8 @@ static ssize_t bm_status_write(struct file *file, const char __user *buffer,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
int res = parse_command(buffer, count); int res = parse_command(buffer, count);
struct dentry *root; Node *e, *next;
struct inode *inode;
switch (res) { switch (res) {
case 1: case 1:
@@ -791,13 +902,22 @@ static ssize_t bm_status_write(struct file *file, const char __user *buffer,
break; break;
case 3: case 3:
/* Delete all handlers. */ /* Delete all handlers. */
root = file_inode(file)->i_sb->s_root; inode = d_inode(file_inode(file)->i_sb->s_root);
inode_lock(d_inode(root)); inode_lock(inode);
while (!list_empty(&entries)) /*
kill_node(list_first_entry(&entries, Node, list)); * In order to add new element or remove elements from the list
* via bm_{entry,register,status}_write() inode_lock() on the
* root inode must be held.
* The lock is exclusive ensuring that the list can't be
* modified. Only load_misc_binary() can access but does so
* read-only. So we only need to take the write lock when we
* actually remove the entry from the list.
*/
list_for_each_entry_safe(e, next, &entries, list)
remove_binfmt_handler(e);
inode_unlock(d_inode(root)); inode_unlock(inode);
break; break;
default: default:
return res; return res;

View File

@@ -1018,7 +1018,7 @@ static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node)
if (delayed_node && if (delayed_node &&
test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
BUG_ON(!delayed_node->root); ASSERT(delayed_node->root);
clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
delayed_node->count--; delayed_node->count--;

View File

@@ -8678,7 +8678,15 @@ static noinline void reada_walk_down(struct btrfs_trans_handle *trans,
/* We don't care about errors in readahead. */ /* We don't care about errors in readahead. */
if (ret < 0) if (ret < 0)
continue; continue;
BUG_ON(refs == 0);
/*
* This could be racey, it's conceivable that we raced and end
* up with a bogus refs count, if that's the case just skip, if
* we are actually corrupt we will notice when we look up
* everything again with our locks.
*/
if (refs == 0)
continue;
if (wc->stage == DROP_REFERENCE) { if (wc->stage == DROP_REFERENCE) {
if (refs == 1) if (refs == 1)
@@ -8737,7 +8745,7 @@ static noinline int walk_down_proc(struct btrfs_trans_handle *trans,
if (lookup_info && if (lookup_info &&
((wc->stage == DROP_REFERENCE && wc->refs[level] != 1) || ((wc->stage == DROP_REFERENCE && wc->refs[level] != 1) ||
(wc->stage == UPDATE_BACKREF && !(wc->flags[level] & flag)))) { (wc->stage == UPDATE_BACKREF && !(wc->flags[level] & flag)))) {
BUG_ON(!path->locks[level]); ASSERT(path->locks[level]);
ret = btrfs_lookup_extent_info(trans, fs_info, ret = btrfs_lookup_extent_info(trans, fs_info,
eb->start, level, 1, eb->start, level, 1,
&wc->refs[level], &wc->refs[level],
@@ -8745,7 +8753,11 @@ static noinline int walk_down_proc(struct btrfs_trans_handle *trans,
BUG_ON(ret == -ENOMEM); BUG_ON(ret == -ENOMEM);
if (ret) if (ret)
return ret; return ret;
BUG_ON(wc->refs[level] == 0); if (unlikely(wc->refs[level] == 0)) {
btrfs_err(fs_info, "bytenr %llu has 0 references, expect > 0",
eb->start);
return -EUCLEAN;
}
} }
if (wc->stage == DROP_REFERENCE) { if (wc->stage == DROP_REFERENCE) {
@@ -8761,7 +8773,7 @@ static noinline int walk_down_proc(struct btrfs_trans_handle *trans,
/* wc->stage == UPDATE_BACKREF */ /* wc->stage == UPDATE_BACKREF */
if (!(wc->flags[level] & flag)) { if (!(wc->flags[level] & flag)) {
BUG_ON(!path->locks[level]); ASSERT(path->locks[level]);
ret = btrfs_inc_ref(trans, root, eb, 1); ret = btrfs_inc_ref(trans, root, eb, 1);
BUG_ON(ret); /* -ENOMEM */ BUG_ON(ret); /* -ENOMEM */
ret = btrfs_dec_ref(trans, root, eb, 0); ret = btrfs_dec_ref(trans, root, eb, 0);
@@ -8850,8 +8862,9 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
goto out_unlock; goto out_unlock;
if (unlikely(wc->refs[level - 1] == 0)) { if (unlikely(wc->refs[level - 1] == 0)) {
btrfs_err(fs_info, "Missing references."); btrfs_err(fs_info, "bytenr %llu has 0 references, expect > 0",
ret = -EIO; bytenr);
ret = -EUCLEAN;
goto out_unlock; goto out_unlock;
} }
*lookup_info = 0; *lookup_info = 0;
@@ -9018,7 +9031,12 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
path->locks[level] = 0; path->locks[level] = 0;
return ret; return ret;
} }
BUG_ON(wc->refs[level] == 0); if (unlikely(wc->refs[level] == 0)) {
btrfs_tree_unlock_rw(eb, path->locks[level]);
btrfs_err(fs_info, "bytenr %llu has 0 references, expect > 0",
eb->start);
return -EUCLEAN;
}
if (wc->refs[level] == 1) { if (wc->refs[level] == 1) {
btrfs_tree_unlock_rw(eb, path->locks[level]); btrfs_tree_unlock_rw(eb, path->locks[level]);
path->locks[level] = 0; path->locks[level] = 0;

View File

@@ -1733,9 +1733,9 @@ static void bitmap_clear_bits(struct btrfs_free_space_ctl *ctl,
ctl->free_space -= bytes; ctl->free_space -= bytes;
} }
static void bitmap_set_bits(struct btrfs_free_space_ctl *ctl, static void btrfs_bitmap_set_bits(struct btrfs_free_space_ctl *ctl,
struct btrfs_free_space *info, u64 offset, struct btrfs_free_space *info, u64 offset,
u64 bytes) u64 bytes)
{ {
unsigned long start, count; unsigned long start, count;
@@ -1992,7 +1992,7 @@ static u64 add_bytes_to_bitmap(struct btrfs_free_space_ctl *ctl,
bytes_to_set = min(end - offset, bytes); bytes_to_set = min(end - offset, bytes);
bitmap_set_bits(ctl, info, offset, bytes_to_set); btrfs_bitmap_set_bits(ctl, info, offset, bytes_to_set);
/* /*
* We set some bytes, we have no idea what the max extent size is * We set some bytes, we have no idea what the max extent size is

View File

@@ -5923,7 +5923,7 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry)
struct inode *inode; struct inode *inode;
struct btrfs_root *root = BTRFS_I(dir)->root; struct btrfs_root *root = BTRFS_I(dir)->root;
struct btrfs_root *sub_root = root; struct btrfs_root *sub_root = root;
struct btrfs_key location; struct btrfs_key location = { 0 };
u8 di_type = 0; u8 di_type = 0;
int index; int index;
int ret = 0; int ret = 0;

View File

@@ -1953,9 +1953,14 @@ static noinline int may_destroy_subvol(struct btrfs_root *root)
key.offset = (u64)-1; key.offset = (u64)-1;
ret = btrfs_search_slot(NULL, fs_info->tree_root, &key, path, 0, 0); ret = btrfs_search_slot(NULL, fs_info->tree_root, &key, path, 0, 0);
if (ret < 0) if (ret == 0) {
/*
* Key with offset -1 found, there would have to exist a root
* with such id, but this is out of valid range.
*/
ret = -EUCLEAN;
goto out; goto out;
BUG_ON(ret == 0); }
ret = 0; ret = 0;
if (path->slots[0] > 0) { if (path->slots[0] > 0) {

View File

@@ -1952,8 +1952,6 @@ btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans,
if (nr_old_roots == 0 && nr_new_roots == 0) if (nr_old_roots == 0 && nr_new_roots == 0)
goto out_free; goto out_free;
BUG_ON(!fs_info->quota_root);
trace_btrfs_qgroup_account_extent(fs_info, bytenr, num_bytes, trace_btrfs_qgroup_account_extent(fs_info, bytenr, num_bytes,
nr_old_roots, nr_new_roots); nr_old_roots, nr_new_roots);

Some files were not shown because too many files have changed in this diff Show More