* 'linux-4.14.y' of https://github.com/openela/kernel-lts: (133 commits)
  LTS: Update to 4.14.350
  SUNRPC: Fix RPC client cleaned up the freed pipefs dentries
  arm64: dts: rockchip: Add sound-dai-cells for RK3368
  tcp: Fix data races around icsk->icsk_af_ops.
  ipv6: Fix data races around sk->sk_prot.
  ipv6: annotate some data-races around sk->sk_prot
  pwm: stm32: Refuse too small period requests
  ftruncate: pass a signed offset
  batman-adv: Don't accept TT entries for out-of-spec VIDs
  batman-adv: include gfp.h for GFP_* defines
  drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_hd_modes
  drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_ld_modes
  hexagon: fix fadvise64_64 calling conventions
  tty: mcf: MCF54418 has 10 UARTS
  usb: atm: cxacru: fix endpoint checking in cxacru_bind()
  usb: musb: da8xx: fix a resource leak in probe()
  usb: gadget: printer: SS+ support
  net: usb: ax88179_178a: improve link status logs
  iio: adc: ad7266: Fix variable checking bug
  mmc: sdhci-pci: Convert PCIBIOS_* return codes to errnos
  ...

Change-Id: I0ab862e0932a48f13c64657e5456f3034b766445
Signed-off-by: Richard Raya <rdxzv.dev@gmail.com>
This commit is contained in:
Richard Raya 2024-08-16 22:07:21 -03:00
commit 15a5216c8c
137 changed files with 2152 additions and 511 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.316 upstream_version: 4.19.317
version: 4.14.349 version: 4.14.350

506
.elts/meta/4.14.350.yaml Normal file
View File

@ -0,0 +1,506 @@
037ba8c484cfe176665b4bdb735a62d8cc7b1b9a:
title: 'Revert "scsi: target: Fix SELinux error when systemd-modules loads the target module"'
378cd84450603623545e9b29cac5445b188b6c0c:
title: 'Revert "tcp: defer shutdown(SEND_SHUTDOWN) for TCP_SYN_RECV sockets"'
2e31c6f2136246110bfbd82c25ec9ecbf4169729:
title: 'Revert "tcp: remove redundant check on tskb"'
9dd807b0452a622f5a5547b451eda30befa3d61d:
title: 'tcp: defer shutdown(SEND_SHUTDOWN) for TCP_SYN_RECV sockets'
mainline: 94062790aedb505bdda209b10bea47b294d6394f
a57e28b291e0ad50d1c6ceba6a7cb556fdf1faf6:
title: 'wifi: mac80211: mesh: Fix leak of mesh_preq_queue objects'
mainline: b7d7f11a291830fdf69d3301075dd0fb347ced84
upstream: 377dbb220edc8421b7960691876c5b3bef62f89b
9feb2600c4ba32c9fb136d7b5e16ca06c853ea8c:
title: 'wifi: mac80211: Fix deadlock in ieee80211_sta_ps_deliver_wakeup()'
mainline: 44c06bbde6443de206b30f513100b5670b23fc5e
upstream: e51637e0c66a6f72d134d9f95daa47ea62b43c7e
79e590b3651e9074489976e737e7fc1255a6cd79:
title: 'wifi: iwlwifi: mvm: don''t read past the mfuart notifcation'
mainline: 4bb95f4535489ed830cf9b34b0a891e384d1aee4
upstream: 15b37c6fab9d5e40ac399fa1c725118588ed649c
9ba19e227817b86f1032cc551912a049b62ba7e6:
title: 'ipv6: sr: block BH in seg6_output_core() and seg6_input_core()'
mainline: c0b98ac1cc104f48763cdb27b1e9ac25fd81fc90
upstream: 6330fe95e59bc1de5ad3ebd89e379d785c7c6fc0
7c79a301b097797b8edd46b11a888a287e281f98:
title: 'vxlan: Fix regression when dropping packets due to invalid src addresses'
mainline: 1cd4bc987abb2823836cbb8f887026011ccddc8a
upstream: ddd44dc20554c38450204df47f8422c7fec78f2d
54f3a87336ada67c8a8da26f7575d12c5ca85bfb:
title: 'tcp: count CLOSE-WAIT sockets for TCP_MIB_CURRESTAB'
mainline: a46d0ea5c94205f40ecf912d1bb7806a8a64704f
upstream: 25dec34bfd770f444409b3228f90f64feb6804f6
7a5ce9a4d73421a553e354ee6eb5de1a3bffeae5:
title: 'ptp: Fix error message on failed pin verification'
mainline: 323a359f9b077f382f4483023d096a4d316fd135
upstream: e468462fe0efdd233b6fd7b978e9911bb1eb8614
4d194b485b1878813b072bc174b6443164b96fb1:
title: 'af_unix: ensure POLLOUT on remote close() for connected dgram socket'
003de6abbdca3c2d230bd4ce3adc752b5eb4982c:
title: 'af_unix: Fix a data-race in unix_dgram_peer_wake_me().'
mainline: 662a80946ce13633ae90a55379f1346c10f0c432
4379c4db8fa9f7d4adfdf7256277c96ac968a690:
title: 'af_unix: Annotate data-race of sk->sk_state in unix_inq_len().'
mainline: 3a0f38eb285c8c2eead4b3230c7ac2983707599d
upstream: 5c91a2f308cabf7cc0e30997455ac15926199987
03b7c75271f457de1fc83095624428cd9ef74db4:
title: 'af_unix: Fix data races around sk->sk_shutdown.'
mainline: e1d09c2c2f5793474556b60f83900e088d0d366d
089da5e3914abb4806b03eff85aeb895c0ab860b:
title: 'af_unix: Annotate data-races around sk->sk_state in unix_write_space() and poll().'
mainline: eb0718fb3e97ad0d6f4529b810103451c90adf94
upstream: 6b4dffb64e98b9eacc7c214056146d32642f7e8a
c6f96daa0536f49a7d624196dbc3defc536eacdb:
title: 'af_unix: Annotate data-races around sk->sk_state in sendmsg() and recvmsg().'
mainline: 8a34d4e8d9742a24f74998f45a6a98edd923319b
upstream: 7cd9dd08be2482bd1015642b61d97a187af5a774
cab04acca50227f3f27fb5616bee123fea171762:
title: 'af_unix: Annotate data-races around sk->sk_state in UNIX_DIAG.'
mainline: 0aa3be7b3e1f8f997312cc4705f8165e02806f8f
upstream: 123d798351c96a15456478558fccac0eb766f26d
98e2f1cec1532524595d79af5c86ed370debd735:
title: 'af_unix: Annotate data-race of net->unx.sysctl_max_dgram_qlen.'
mainline: bd9f2d05731f6a112d0c7391a0d537bfc588dbe6
upstream: f5cf5e139ec736f1ac18cda8d5e5fc80d7eef787
15baad6e966a2478052b6e2efd0153a9e9a9e0c2:
title: 'af_unix: Use unix_recvq_full_lockless() in unix_stream_connect().'
mainline: 45d872f0e65593176d880ec148f41ad7c02e40a7
upstream: b56ff0d20a4a60b9e6424d0609acccbbde573ea8
a8d1038ecf162678372a6f5686eabbf0c070ec91:
title: 'af_unix: Use skb_queue_len_lockless() in sk_diag_show_rqlen().'
mainline: 5d915e584d8408211d4567c22685aae8820bfc55
upstream: 141826272a2cd16436f9b6c241cf88b72feddb3b
669958a2bdd8b94c6bbe1df7c83feae7b844afb3:
title: 'af_unix: Annotate data-race of sk->sk_shutdown in sk_diag_fill().'
mainline: efaf24e30ec39ebbea9112227485805a48b0ceb1
upstream: 9c2d206ddc697595ceb0e8e356c64f9e845a0c2f
77067622d8f27240f3e5438767cce7317f8b9c34:
title: 'usb: gadget: f_fs: Fix race between aio_cancel() and AIO request complete'
mainline: 24729b307eefcd7c476065cd7351c1a018082c19
upstream: f71a53148ce34898fef099b75386a3a9f4449311
6c20d50e094e8b67aab06f29f7e97351bbfef601:
title: 'serial: sc16is7xx: replace hardcoded divisor value with BIT() macro'
mainline: 2e57cefc4477659527f7adab1f87cdbf60ef1ae6
upstream: 9dcb6eb967fe778d1d985a709ac4030895603fc0
f966c6e6aa0166c853782a705ae5389f8c6b24e7:
title: 'serial: sc16is7xx: fix bug in sc16is7xx_set_baud() when using prescaler'
mainline: 8492bd91aa055907c67ef04f2b56f6dadd1f44bf
upstream: 2b14e818ef3e49741ee60a317554222c6af3a800
41d740fdbcb6d45f86ec6cd7238ba2ca38df8824:
title: 'media: mc: mark the media devnode as registered from the, start'
mainline: 4bc60736154bc9e0e39d3b88918f5d3762ebe5e0
upstream: d3f6dc1155a09bc2c212b734c3ff01a046490e92
fe9a3e689a0275a21eae214693dd7ddbdbb63cec:
title: 'selftests/mm: compaction_test: fix incorrect write of zero to nr_hugepages'
mainline: 9ad665ef55eaad1ead1406a58a34f615a7c18b5e
upstream: 62b71327cf1af11ceb4a3f53ebf0c85cb9ad3db8
75614587972465759b313027993c87e60eeb446f:
title: 'selftests/mm: conform test to TAP format output'
mainline: 9a21701edc41465de56f97914741bfb7bfc2517d
upstream: 4a4f88dcf8b688db0cf527362ebf4db0d272a3f6
6132af7d247da481d1f4e99c91f5fdc29961bce3:
title: 'selftests/mm: compaction_test: fix bogus test success on Aarch64'
mainline: d4202e66a4b1fe6968f17f9f09bbc30d08f028a1
upstream: 4d5f7ab71a24f17311d361f47c61cc49064e1dd0
71bf6edd5d5c1384f56efcc445146a367f1e7c38:
title: 'nilfs2: Remove check for PageError'
mainline: 79ea65563ad8aaab309d61eeb4d5019dd6cf5fa0
upstream: c158e493640ce76e76241f0529cebe19770ba5b2
52c1c33e0dafbe82538c326d4a6144544e9501f4:
title: 'nilfs2: return the mapped address from nilfs_get_page()'
mainline: 09a46acb3697e50548bb265afa1d79163659dd85
upstream: 7ed62ec616a3441aa3859150d50fadf5fd117aa8
c5682abd08cb2a8960de840d00ce1efc5066286e:
title: 'nilfs2: fix nilfs_empty_dir() misjudgment and long loop on I/O errors'
mainline: 7373a51e7998b508af7136530f3a997b286ce81c
upstream: 2ac8a2fe22bdde9eecce2a42cf5cab79333fb428
ac2c307a0180583e260719f923ba2edabddea919:
title: 'USB: class: cdc-wdm: Fix CPU lockup caused by excessive log messages'
mainline: 22f00812862564b314784167a89f27b444f82a46
upstream: 217d1f44fff560b3995a685a60aa66e55a7f0f56
6f5dcde17cd2c15cb9812b4441ab1ba7088ccf0c:
title: 'mei: me: release irq in mei_me_pci_resume error path'
mainline: 283cb234ef95d94c61f59e1cd070cd9499b51292
upstream: 83c2321411d8bb8f832dbb482ea3387ac1322542
79cb0bb1b0e2cbed9eaec6f1fb7ce81baf278a39:
title: 'jfs: xattr: fix buffer overflow for invalid xattr'
mainline: 7c55b78818cfb732680c4a72ab270cc2d2ee3d0f
upstream: f0dedb5c511ed82cbaff4997a8decf2351ba549f
b8b14f255f86c39eee93bc4fbc4c8f6c3f9da875:
title: 'xhci: Apply reset resume quirk to Etron EJ188 xHCI host'
mainline: 17bd54555c2aaecfdb38e2734149f684a73fa584
upstream: a2ddc0475c4c6fff5b9eac0e0eb4726640925e1b
41c568e13eb14e46c634292e403a4652603b2d46:
title: 'xhci: Apply broken streams quirk to Etron EJ188 xHCI host'
mainline: 91f7a1524a92c70ffe264db8bdfa075f15bbbeb9
upstream: 5c08d8bcc6f20965d665a6122a3fe60eba042e74
abe1fafad8d912b27028e91a0040650149ab4ab8:
title: 'Input: try trimming too long modalias strings'
mainline: 0774d19038c496f0c3602fb505c43e1b2d8eed85
upstream: d9bbbbf1a2cac25fafa44ba09d2ab8f5365c0a06
c0be0c4967c8b988f9603c7b7cecc01379071c67:
title: 'HID: core: remove unnecessary WARN_ON() in implement()'
mainline: 4aa2dcfbad538adf7becd0034a3754e1bd01b2b5
upstream: 955b3764671f3f157215194972d9c01a3a4bd316
2cb6663051a21277c7bdf9695ad8a04fc6a5dc7a:
title: 'iommu/amd: Fix sysfs leak in iommu init'
mainline: a295ec52c8624883885396fde7b4df1a179627c3
upstream: 7f66540fcf6f8f66784f739c33f79d2889e95106
b4722a9d958fe8bd54d0358650bf07b11ab91d4b:
title: 'drm/bridge/panel: Fix runtime warning on panel bridge release'
mainline: ce62600c4dbee8d43b02277669dd91785a9b81d9
upstream: 3e0daaf28639c6fd22e96eb2f8772ad40e922ee7
291c8c1e9e291262f9179c0ba5cef2e49df4f142:
title: 'tcp: fix race in tcp_v6_syn_recv_sock()'
mainline: d37fe4255abe8e7b419b90c5847e8ec2b8debb08
upstream: 06f208ae0670ef97b0bf253a5523863e113026b6
9ae3694d9677f29e0d8e5bbb86841f69baae279d:
title: 'Bluetooth: L2CAP: Fix rejecting L2CAP_CONN_PARAM_UPDATE_REQ'
mainline: 806a5198c05987b748b50f3d0c0cfb3d417381a4
upstream: a1f9c8328219b9bb2c29846d6c74ea981e60b5a7
fab190e5fcd0466de646405bf49ca7017bbdca31:
title: 'ipv6/route: Add a missing check on proc_dointvec'
mainline: f0fb9b288d0a7e9cc324ae362e2dfd2cc2217ded
upstream: f00c343be6f25a6a3736fd6b332c918da57d81d8
04f57a8a33fef04d61ba56f8b4e830fe0cebc8f2:
title: 'net/ipv6: Fix the RT cache flush via sysctl using a previous delay'
mainline: 14a20e5b4ad998793c5f43b0330d9e1388446cf3
upstream: ebde6e8a52c68dc45b4ae354e279ba74788579e7
82d942edbd8b21acbacd1d16eb3cb52d47404384:
title: 'drivers: core: synchronize really_probe() and dev_uevent()'
mainline: c0a40097f0bc81deafc15f9195d1fb54595cd6d0
upstream: bb3641a5831789d83a58a39ed4a928bcbece7080
126c475927adda67084f403fee8ec76a853b70fc:
title: 'drm/exynos/vidi: fix memory leak in .get_modes()'
mainline: 38e3825631b1f314b21e3ade00b5a4d737eb054e
upstream: 540ca99729e28dbe902b01039a3b4bd74520a819
37026b40b51170c1f9b052ef1b1cd19ec815c566:
title: 'vmci: prevent speculation leaks by sanitizing event in event_deliver()'
mainline: 8003f00d895310d409b2bf9ef907c56b42a4e0f4
upstream: 58730dfbd4ae01c1b022b0d234a8bf8c02cdfb81
aaea44b590e4a5e853dcc48edbf8ffa6dc611490:
title: 'fs/proc: fix softlockup in __read_vmcore'
mainline: 5cbcb62dddf5346077feb82b7b0c9254222d3445
upstream: 7bdf1d550ddfcd9ab797087421f77b7aceddc8a7
c02663a1e56ea3793580a51e2ea012e198661ca1:
title: 'ocfs2: use coarse time for new created files'
mainline: b8cb324277ee16f3eca3055b96fce4735a5a41c6
upstream: f882e853ea33c1e4f7107387f85879139682b720
db16f074c58fb04ccb5efd329bd001b3769662b2:
title: 'ocfs2: fix races between hole punching and AIO+DIO'
mainline: 952b023f06a24b2ad6ba67304c4c84d45bea2f18
upstream: 3c26b5d21b1239e9c7fd31ba7d9b2d7bdbaa68d9
7932419ef19393d4fc9b05a04583d8c31c2785e3:
title: 'dmaengine: axi-dmac: fix possible race in remove()'
mainline: 1bc31444209c8efae98cb78818131950d9a6f4d6
upstream: 5226e7062723bd5d4f1bd5e98ace7c1e6c015d57
c2986a4fcfa961be763f68bb7c55ff808dcbbc63:
title: 'intel_th: pci: Add Granite Rapids support'
mainline: e44937889bdf4ecd1f0c25762b7226406b9b7a69
upstream: 96185ee73d5cd28c2b19311c87536ffeeb653562
fbda6dc2f8c85e96d6ae1f5243146a33e627ee9e:
title: 'intel_th: pci: Add Granite Rapids SOC support'
mainline: 854afe461b009801a171b3a49c5f75ea43e4c04c
upstream: 04d47e1fd4e9a9b9c32e769b9106bbcbddeca756
97c26585440f81fc3832759721964719ae7a4802:
title: 'intel_th: pci: Add Sapphire Rapids SOC support'
mainline: 2e1da7efabe05cb0cf0b358883b2bc89080ed0eb
upstream: f9159b4706fc1eae09c37081f9a580673a4477ff
0d4c32589468be6d7b8993e7576690004f50f5cc:
title: 'intel_th: pci: Add Meteor Lake-S support'
mainline: c4a30def564d75e84718b059d1a62cc79b137cf9
upstream: 8af7cedc0edf1b9d3c29e2b72e7d643f64669ee4
eac9744fef5c714c3201a0ab9c56e61ede318c29:
title: 'intel_th: pci: Add Lunar Lake support'
mainline: f866b65322bfbc8fcca13c25f49e1a5c5a93ae4d
upstream: 4780775da4957702ece226104b17d072e557a962
948b6135a242e4147ee69d7d47e1df20f5951d7f:
title: 'nilfs2: fix potential kernel bug due to lack of writeback flag waiting'
mainline: a4ca369ca221bb7e06c725792ac107f0e48e82e7
upstream: 95f6f81e50d858a7c9aa7c795ec14a0ac3819118
22749c2b34a685511b52c8e1c52539519f0a46ec:
title: 'hv_utils: drain the timesync packets on onchannelcallback'
mainline: b46b4a8a57c377b72a98c7930a9f6969d2d4784e
upstream: 1af0a35eba1ee302fc30aea8cb621f6de8728785
06d15f1e6c6dbb25aa2058c26a02bc3589dd87d7:
title: 'mm/hugetlb: add mmap() encodings for 32MB and 512MB page sizes'
bee6efedbf7b70baa442b7af575c6cc055c2bcef:
title: 'hugetlb_encode.h: fix undefined behaviour (34 << 26)'
mainline: 710bb68c2e3a24512e2d2bae470960d7488e97b1
upstream: a33d99c8b213d16ad61bc68cb17aad1e2f484192
ba2eacb9af4998743a14271e11fba297a8761497:
title: 'usb-storage: alauda: Check whether the media is initialized'
mainline: 16637fea001ab3c8df528a8995b3211906165a30
upstream: e0aab7b07a9375337847c9d74a5ec044071e01c8
d3d05ae427ca75738046af172544e4ad75bdf8aa:
title: 'rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment'
mainline: 8b9b443fa860276822b25057cb3ff3b28734dec0
upstream: 6652029853316f4c273219145ef0e71b148bbe01
5856f70943c52055ea24d8ee791308367cd1039a:
title: 'batman-adv: bypass empty buckets in batadv_purge_orig_ref()'
mainline: 40dc8ab605894acae1473e434944924a22cfaaa0
upstream: 79636f636126775436a11ee9cf00a9253a33ac11
f98f3237faf35d508d9c1b783385102a7be0abf2:
title: 'scsi: qedi: Fix crash while reading debugfs attribute'
mainline: 28027ec8e32ecbadcd67623edb290dad61e735b5
upstream: 56bec63a7fc87ad50b3373a87517dc9770eef9e0
476276b356c5d338435b82ecfe217a9422d7235f:
title: 'powerpc/pseries: Enforce hcall result buffer validity and size'
mainline: ff2e185cf73df480ec69675936c4ee75a445c3e4
upstream: acf2b80c31c37acab040baa3cf5f19fbd5140b18
8824c4818bf4e7a3b2c47f78c6a8ace368ebe2c5:
title: 'powerpc/io: Avoid clang null pointer arithmetic warnings'
mainline: 03c0f2c2b2220fc9cf8785cd7b61d3e71e24a366
upstream: 7e1e8e86b0b62844b2c795549f65494e95b5983e
43cef40ed1b05181bab0553b15a699a4a3de9dc4:
title: 'usb: misc: uss720: check for incompatible versions of the Belkin F5U002'
mainline: 3295f1b866bfbcabd625511968e8a5c541f9ab32
upstream: 02d13616ca30014ed96302e51a5b0e17664e58bc
20c569a7cff68ac7d507661d2cbb62dd6fffdc7d:
title: 'udf: Sanitize nanoseconds for time stamps'
04f8c1f355f2e1cdc8bc261bb903c85488dbb649:
title: 'udf: Simplify calls to udf_disk_stamp_to_time'
28e83fb606df2b620ca55001b6b1ec4669fff3fe:
title: 'udf: udftime: prevent overflow in udf_disk_stamp_to_time()'
mainline: 3b84adf460381169c085e4bc09e7b57e9e16db0a
upstream: 2f85b07bd802e86e155fd8496e3d105ec3a2ade9
7bf7a1b84c85a21b7e9e7dc9136efd5c79d7b4ed:
title: 'MIPS: Octeon: Add PCIe link status check'
mainline: 29b83a64df3b42c88c0338696feb6fdcd7f1f3b7
upstream: 6bff05aaa32c2f7e1f6e68e890876642159db419
2401229809147c9144c4e7bbbcc43c7154cf1aba:
title: 'MIPS: Routerboard 532: Fix vendor retry check code'
mainline: ae9daffd9028f2500c9ac1517e46d4f2b57efb80
upstream: acabc32a7b27f30a75ef01e873d8b65f5dc7d5d5
2f46065f2784076d6c121eab1a21a8096fba6b13:
title: 'cipso: fix total option length computation'
mainline: 9f36169912331fa035d7b73a91252d7c2512eb1a
upstream: 5d3b9efa04c0d8967e00cbc4b6b5aab79952f5d1
f5105aa1e9989b1deb6d87f9d080a7d0d917dc56:
title: 'netrom: Fix a memory leak in nr_heartbeat_expiry()'
mainline: 0b9130247f3b6a1122478471ff0e014ea96bb735
upstream: d616876256b38ecf9a1a1c7d674192c5346bc69c
b71bbdc8869cbf604b55e27437b9d91d3dd909aa:
title: 'xfrm6: check ip6_dst_idev() return value in xfrm6_get_saddr()'
mainline: d46401052c2d5614da8efea5788532f0401cb164
upstream: c71761292d4d002a8eccb57b86792c4e3b3eb3c7
e3d1b924da1c094e403381851f287d1cb6d430de:
title: 'virtio_net: checksum offloading handling fix'
mainline: 604141c036e1b636e2a71cf6e1aa09d1e45f40c2
upstream: d0e99ad7721155aaa4e57b8b11bb70743da61491
8bfba3c52500198a370f799501c232303b52817c:
title: 'net: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings'
mainline: fba383985354e83474f95f36d7c65feb75dba19d
upstream: 88154e3329e1f47490ee98f8d32a0353d8d46550
cc48980d16d92c2f4e6c9a1976bd2afdf9f30fa6:
title: 'regulator: core: Fix modpost error "regulator_get_regmap" undefined'
mainline: 3f60497c658d2072714d097a177612d34b34aa3d
upstream: bdc0a40accdf77080fed82d72e89d341001dcbf6
d7e271c7c6269187a0c054ef781b1160398b119a:
title: 'dmaengine: ioatdma: Fix missing kmem_cache_destroy()'
mainline: 5422145d0b749ad554ada772133b9b20f9fb0ec8
upstream: 0b346aa39e76de78be5e105dc338e190e80a5188
ed44c23c974a4df0899e57a375eeb563a911b575:
title: 'ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs. Your kernel is fine."'
mainline: a83e1385b780d41307433ddbc86e3c528db031f0
upstream: 435ecc978c3d5d0c4e172ec5b956dc1904061d98
cc96770672dafa9b46038f64523c42ce3534e8ba:
title: 'drm/radeon: fix UBSAN warning in kv_dpm.c'
mainline: a498df5421fd737d11bfd152428ba6b1c8538321
upstream: 07e8f15fa16695cf4c90e89854e59af4a760055b
cd513bd7a535592e2c65efc462a42866d507da3a:
title: 'gcov: add support for GCC 14'
mainline: c1558bc57b8e5b4da5d821537cd30e2e660861d8
upstream: 48d5f4d66962fde59c78dd0a7cf6bd03b3f49c61
5566df875aabd57002b81daf45d37d2f6c874d42:
title: 'ARM: dts: samsung: smdkv310: fix keypad no-autorepeat'
mainline: 87d8e522d6f5a004f0aa06c0def302df65aff296
upstream: 1d1838ca012952f4914af6f6619bbdea6251039c
9b2697403d29b12ef06ab68f4f2232291dfed184:
title: 'ARM: dts: samsung: exynos4412-origen: fix keypad no-autorepeat'
mainline: 88208d3cd79821117fd3fb80d9bcab618467d37b
upstream: 77951f880a4b9e7f76460364ec0b931d1a59c9fb
d350b585ee4796a3868be5f4cd8a29877275c819:
title: 'ARM: dts: samsung: smdk4412: fix keypad no-autorepeat'
mainline: 4ac4c1d794e7ff454d191bbdab7585ed8dbf3758
upstream: 4c70a7576ae14f804196ae0089f9deb6cbd77e1f
dcea2cf5d7cca146641b67b8cbcc153cbfdeb0c3:
title: 'PCI: Add PCI_ERROR_RESPONSE and related definitions'
mainline: 57bdeef4716689d9b0e3571034d65cf420f6efcd
upstream: 4c003aef56d5642aefd4d11ee9d7e6755d4c1a6e
f66ed725b522bfad043ec2dbcf50eff7ffc8feda:
title: 'x86/amd_nb: Check for invalid SMN reads'
mainline: c625dabbf1c4a8e77e4734014f2fde7aa9071a1f
upstream: d4e52b36c73f44d2b5f41d0cd3f57b3d2efbf180
e8b7b4167c95a9e6976479edda683c1b13ca0832:
title: 'iio: dac: ad5592r-base: Replace indio_dev->mlock with own device lock'
mainline: 33c53cbf8f7bc8d62f6146a19da97c8594376ff0
upstream: b576d7d08f26d40789313ec6a8acc966a149c37f
a28ae8f66b95e48a7ad69aa23382bd8486b6c529:
title: 'iio: dac: ad5592r: un-indent code-block for scale read'
mainline: b004fe33034cc64f72c20923be71cf1e6c9a624c
upstream: c101996c9dabd9d809c12f686547b7035c087f10
d9b6601da0310953862e47ebc5fe28f9bf37033a:
title: 'iio: dac: ad5592r: fix temperature channel scaling value'
mainline: 279428df888319bf68f2686934897301a250bb84
upstream: 9eaaefbae8f5ddbed0fce822042ad969f5f876c5
675de54c63726a5b6316a7c3854219e10208f4ea:
title: 'scsi: mpt3sas: Add ioc_<level> logging macros'
mainline: 645a20c6821cd1ab58af8a1f99659e619c216efd
upstream: 229e75730c784f7b871ae9bd76f8bd506d20a304
bd4e577402b93532aacc19b7f44c4963b763fafe:
title: 'scsi: mpt3sas: Gracefully handle online firmware update'
mainline: ffedeae1fa545a1d07e6827180c3923bf67af59f
upstream: 230c290c74b956a4c26926c94a5bf932ca234884
165419d81604a14fb6d0b111fd2f96288ec9528b:
title: 'scsi: mpt3sas: Avoid test/set_bit() operating in non-allocated memory'
mainline: 4254dfeda82f20844299dca6c38cbffcfd499f41
upstream: e9bce7c751f6d6c7be88c0bc081a66aaf61a23ee
d9ea1dc07e87131c9ae5e3e1504c2cacbf2df74a:
title: 'usb: xhci: Remove ep_trb from xhci_cleanup_halted_endpoint()'
de371a2bb30d1695a5c07357bd207e5aadefcd51:
title: 'xhci: Use soft retry to recover faster from transaction errors'
mainline: f8f80be501aa2f10669585c3e328fad079d8cb3a
upstream: 8f667ee530a601449fede56370036e1d8d9a62dc
c73496b00b416467313ec64166d9d8d5d7e3a921:
title: 'xhci: Set correct transferred length for cancelled bulk transfers'
mainline: f0260589b439e2637ad54a2b25f00a516ef28a57
upstream: ca0f0c5b0b991a71f61948bad09eb5f9e8cc4851
3f74f1a0bd8b876661fb5263fa78048e2586065d:
title: 'usb: xhci: do not perform Soft Retry for some xHCI hosts'
mainline: a4a251f8c23518899d2078c320cf9ce2fa459c9f
upstream: 2a28c0f457c5563cef9fbad803d9445eee0c1e05
d6636e9d955f53a9da4e40af4ddba67ab3391fbf:
title: 'pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER'
mainline: adec57ff8e66aee632f3dd1f93787c13d112b7a1
upstream: e65a0dc2e85efb28e182aca50218e8a056d0ce04
0b45b7f4f6ee46da3efc4858af96e1a86e536250:
title: 'pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins'
mainline: e8448a6c817c2aa6c6af785b1d45678bd5977e8d
upstream: 860a562a61a838867c8d3f66d059a0fc7a67d1c9
0d6d13a0bb379aa59f6475c1bb6df7aaed21857f:
title: 'pinctrl: rockchip: fix pinmux bits for RK3328 GPIO3-B pins'
mainline: 5ef6914e0bf578357b4c906ffe6b26e7eedb8ccf
upstream: f8426b53f59f88c637143ffa31276be73a3c9b27
a1e6c61656a89e49007fd9847fe123acd15d31b9:
title: 'pinctrl: rockchip: fix pinmux reset in rockchip_pmx_set'
mainline: 4ea4d4808e342ddf89ba24b93ffa2057005aaced
upstream: 61c552e4ee1dbfa85d68997ab6e9d80690b401a7
90340ac06eb8a83a320c3bf2a31cc67eaf333478:
title: 'drm/amdgpu: fix UBSAN warning in kv_dpm.c'
mainline: f0d576f840153392d04b2d52cf3adab8f62e8cb6
upstream: 4ad7d49059358ceadd352b4e2511425bdb68f400
f6658c76f5f0670445bebb35a9ccf3d5ae502806:
title: 'ASoC: fsl-asoc-card: set priv->pdev before using it'
mainline: 90f3feb24172185f1832636264943e8b5e289245
upstream: ae81535ce2503aabc4adab3472f4338070cdeb6a
c01fc5238f6bb561e137d7b6e7df88c5107a263f:
title: 'netfilter: nf_tables: fully validate NFT_DATA_VALUE on store to data registers'
mainline: 7931d32955e09d0a11b1fe0b6aac1bfa061c005c
upstream: 40188a25a9847dbeb7ec67517174a835a677752f
9578df8a6b21442b2451be92ea5ce59b2cc38505:
title: 'net/iucv: Avoid explicit cpumask var allocation on stack'
mainline: be4e1304419c99a164b4c0e101c7c2a756b635b9
upstream: 2b085521be5292016097b5e7ca81b26be3f7098d
bf4ffd90f46475894c7d758eb26aa0f8a31dc245:
title: 'ALSA: emux: improve patch ioctl data validation'
mainline: 89b32ccb12ae67e630c6453d778ec30a592a212f
upstream: 40d7def67841343c10f8642a41031fecbb248bab
728e947a35ba429d96e495c170367211583d760e:
title: 'media: dvbdev: Initialize sbuf'
mainline: 17d1316de0d7dc1bdc5d6e3ad4efd30a9bf1a381
upstream: 1925c902159d686372d897c2fa8ee4ea91b62d14
cf89c5861a3b88fcef8ce222edd384bb5cb44934:
title: 'soc: ti: wkup_m3_ipc: Send NULL dummy message instead of pointer message'
mainline: ddbf3204f600a4d1f153498f618369fca352ae00
upstream: 671abe2b126e6e39d52eefbf53106650ef2dd904
43bae0d9a7bd2f0a78a283b1440a74601b4a4f68:
title: 'nvme: fixup comment for nvme RDMA Provider Type'
mainline: f80a55fa90fa76d01e3fffaa5d0413e522ab9a00
upstream: 277ea9f9bf1171f0f02836ded9b65b9b8684322d
b4951f8134444e1eb7b28ea2234463f8ed077745:
title: 'i2c: ocores: stop transfer on timeout'
mainline: e7663ef5ae0f02e3b902eb0305dec981333eb3e1
upstream: c7999d372e7fe8bdfbc2226af1896e8bd328018a
4d73d79702f3c0872f20dfd8a05974c7b18ebc7f:
title: 'i2c: ocores: set IACK bit after core is enabled'
mainline: 5a72477273066b5b357801ab2d315ef14949d402
upstream: 1f7e4dd58af1267db2970e5c2e98a4d0ff170047
00eda93e9c842eecb76a1bc09b337e4f0cb043eb:
title: 'x86: stop playing stack games in profile_pc()'
mainline: 093d9603b60093a9aaae942db56107f6432a5dca
upstream: 65ebdde16e7f5da99dbf8a548fb635837d78384e
51e44a77a5ca50e7e1f0548960bbb9eea83ff139:
title: 'mmc: sdhci-pci: Convert PCIBIOS_* return codes to errnos'
mainline: ebc4fc34eae8ddfbef49f2bdaced1bf4167ef80d
upstream: bba83bf85fc6fcca1e827fd88bf3998be9ad0d24
b23dedd4318672a4265f48d90f8760b41b6f7006:
title: 'iio: adc: ad7266: Fix variable checking bug'
mainline: a2b86132955268b2a1703082fbc2d4832fc001b8
upstream: 75a024d3ab0d331fc1d0b640b00e63d31d556b1e
e4de596e5e18fb924bfe0048049cd04a285272f9:
title: 'net: usb: ax88179_178a: improve link status logs'
mainline: 058722ee350c0bdd664e467156feb2bf5d9cc271
upstream: abb029e078e149d4d1f44a244cf833a6a1541447
cbc92ffc360a7b6f16408d7092c71d72bb9e0382:
title: 'usb: gadget: printer: SS+ support'
mainline: fd80731e5e9d1402cb2f85022a6abf9b1982ec5f
upstream: a0886d04f1c7439b55c1c9daecd6b21ada2de5dd
7209de070ba2427bfa29373c649c6311b69580bc:
title: 'usb: musb: da8xx: fix a resource leak in probe()'
mainline: de644a4a86be04ed8a43ef8267d0f7d021941c5e
upstream: a93b97349ba92cdc8b63ad09d28a873a467e1d62
4ddbe32a34bc9cc18c34282f88488d22c4178071:
title: 'usb: atm: cxacru: fix endpoint checking in cxacru_bind()'
mainline: 2eabb655a968b862bc0c31629a09f0fbf3c80d51
upstream: 5159a81924311c1ec786ad9fdef784ead8676a6a
c6f828c51833c0dcdd53b79a4eb5c8d5f5ebd56b:
title: 'tty: mcf: MCF54418 has 10 UARTS'
mainline: 7c92a8bd53f24d50c8cf4aba53bb75505b382fed
upstream: 0929fbe8194db19bfeed22f8c7f9b24da9f08bb9
87cc48eed0c10fc8f13907410db3f1c76c77826b:
title: 'hexagon: fix fadvise64_64 calling conventions'
mainline: 896842284c6ccba25ec9d78b7b6e62cdd507c083
upstream: 72152ab85ae44e13df8b7a653b5f657b48fa3229
2dc9769a951e305b690994008bcc32ee0d57f3e2:
title: 'drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_ld_modes'
mainline: 66edf3fb331b6c55439b10f9862987b0916b3726
upstream: 9289cd3450d1da3e271ef4b054d4d2932c41243e
e2f974a4f127e38e7a5ec7a7ab51bb59d4392f17:
title: 'drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_hd_modes'
mainline: 6d411c8ccc0137a612e0044489030a194ff5c843
upstream: ffabad4aa91e33ced3c6ae793fb37771b3e9cb51
f8741253033be14a8f4297ba6c8ec7cd3ddf4def:
title: 'batman-adv: include gfp.h for GFP_* defines'
e6522330b7414dc7f96f547045bdc5db9de0cc3e:
title: 'batman-adv: Don''t accept TT entries for out-of-spec VIDs'
mainline: 537a350d14321c8cca5efbf0a33a404fec3a9f9e
upstream: 4d5a2d6b7a9a1140342c5229d1a427ec37a12fd4
5696aad6bf4700041503e715bd2fb5d9dcf1fcc0:
title: 'ftruncate: pass a signed offset'
mainline: 4b8e88e563b5f666446d002ad0dc1e6e8e7102b0
upstream: c329760749b5419769e57cb2be80955d2805f9c9
7128fc9dcb40ffa3ca16cc92eeb4aa3f65639c87:
title: 'pwm: stm32: Refuse too small period requests'
mainline: c45fcf46ca2368dafe7e5c513a711a6f0f974308
upstream: 19946741ea989605d12d2ffdbb006b9ca000dde8
81d8db9302d30505f89d672e1a39c60ed71a1dda:
title: 'ipv6: annotate some data-races around sk->sk_prot'
mainline: 086d49058cd8471046ae9927524708820f5fd1c7
upstream: 13bda7ac5801f501bed6e21717dbf3b0df773847
0904f321c3a052af42b094f786f75fe32f5d8f2d:
title: 'ipv6: Fix data races around sk->sk_prot.'
mainline: 364f997b5cfe1db0d63a390fe7c801fa2b3115f6
upstream: fda6d62642a9c544a293d7ad7cb058f8c7f8f3dd
1895f4d98247c54d045cd4a9c94c0802f3c270d5:
title: 'tcp: Fix data races around icsk->icsk_af_ops.'
mainline: f49cd2f4d6170d27a2c61f1fecb03d8a70c91f57
upstream: 5bb642cc3355ffd3c8bca0a8bd8e6e65bcc2091c
6658230562d296ef2484a1156ff322c558d3c26a:
title: 'arm64: dts: rockchip: Add sound-dai-cells for RK3368'
mainline: 8d7ec44aa5d1eb94a30319074762a1740440cdc8
upstream: f7fc312d1d750db0ea867e50e6c436e0679a5a65
944720b778413cf71b70f8d697b94a357ea40e19:
title: 'SUNRPC: Fix RPC client cleaned up the freed pipefs dentries'
mainline: bfca5fb4e97c46503ddfc582335917b0cc228264

View File

@ -0,0 +1,548 @@
377dbb220edc8421b7960691876c5b3bef62f89b:
title: 'wifi: mac80211: mesh: Fix leak of mesh_preq_queue objects'
mainline: b7d7f11a291830fdf69d3301075dd0fb347ced84
backport: a57e28b291e0ad50d1c6ceba6a7cb556fdf1faf6
e51637e0c66a6f72d134d9f95daa47ea62b43c7e:
title: 'wifi: mac80211: Fix deadlock in ieee80211_sta_ps_deliver_wakeup()'
mainline: 44c06bbde6443de206b30f513100b5670b23fc5e
backport: 9feb2600c4ba32c9fb136d7b5e16ca06c853ea8c
a238de1c3413870b2f0d2e41a56b335ede1f5977:
title: 'wifi: iwlwifi: mvm: revert gen2 TX A-MPDU size to 64'
mainline: 4a7aace2899711592327463c1a29ffee44fcc66e
skipped: fixes patch not in branch
15b37c6fab9d5e40ac399fa1c725118588ed649c:
title: 'wifi: iwlwifi: mvm: don''t read past the mfuart notifcation'
mainline: 4bb95f4535489ed830cf9b34b0a891e384d1aee4
backport: 79e590b3651e9074489976e737e7fc1255a6cd79
6330fe95e59bc1de5ad3ebd89e379d785c7c6fc0:
title: 'ipv6: sr: block BH in seg6_output_core() and seg6_input_core()'
mainline: c0b98ac1cc104f48763cdb27b1e9ac25fd81fc90
backport: 9ba19e227817b86f1032cc551912a049b62ba7e6
ddd44dc20554c38450204df47f8422c7fec78f2d:
title: 'vxlan: Fix regression when dropping packets due to invalid src addresses'
mainline: 1cd4bc987abb2823836cbb8f887026011ccddc8a
backport: 7c79a301b097797b8edd46b11a888a287e281f98
25dec34bfd770f444409b3228f90f64feb6804f6:
title: 'tcp: count CLOSE-WAIT sockets for TCP_MIB_CURRESTAB'
mainline: a46d0ea5c94205f40ecf912d1bb7806a8a64704f
backport: 54f3a87336ada67c8a8da26f7575d12c5ca85bfb
e468462fe0efdd233b6fd7b978e9911bb1eb8614:
title: 'ptp: Fix error message on failed pin verification'
mainline: 323a359f9b077f382f4483023d096a4d316fd135
backport: 7a5ce9a4d73421a553e354ee6eb5de1a3bffeae5
5c91a2f308cabf7cc0e30997455ac15926199987:
title: 'af_unix: Annotate data-race of sk->sk_state in unix_inq_len().'
mainline: 3a0f38eb285c8c2eead4b3230c7ac2983707599d
backport: 4379c4db8fa9f7d4adfdf7256277c96ac968a690
6b4dffb64e98b9eacc7c214056146d32642f7e8a:
title: 'af_unix: Annotate data-races around sk->sk_state in unix_write_space() and poll().'
mainline: eb0718fb3e97ad0d6f4529b810103451c90adf94
backport: 089da5e3914abb4806b03eff85aeb895c0ab860b
7cd9dd08be2482bd1015642b61d97a187af5a774:
title: 'af_unix: Annotate data-races around sk->sk_state in sendmsg() and recvmsg().'
mainline: 8a34d4e8d9742a24f74998f45a6a98edd923319b
backport: c6f96daa0536f49a7d624196dbc3defc536eacdb
123d798351c96a15456478558fccac0eb766f26d:
title: 'af_unix: Annotate data-races around sk->sk_state in UNIX_DIAG.'
mainline: 0aa3be7b3e1f8f997312cc4705f8165e02806f8f
backport: cab04acca50227f3f27fb5616bee123fea171762
f5cf5e139ec736f1ac18cda8d5e5fc80d7eef787:
title: 'af_unix: Annotate data-race of net->unx.sysctl_max_dgram_qlen.'
mainline: bd9f2d05731f6a112d0c7391a0d537bfc588dbe6
backport: 98e2f1cec1532524595d79af5c86ed370debd735
b56ff0d20a4a60b9e6424d0609acccbbde573ea8:
title: 'af_unix: Use unix_recvq_full_lockless() in unix_stream_connect().'
mainline: 45d872f0e65593176d880ec148f41ad7c02e40a7
backport: 15baad6e966a2478052b6e2efd0153a9e9a9e0c2
141826272a2cd16436f9b6c241cf88b72feddb3b:
title: 'af_unix: Use skb_queue_len_lockless() in sk_diag_show_rqlen().'
mainline: 5d915e584d8408211d4567c22685aae8820bfc55
backport: a8d1038ecf162678372a6f5686eabbf0c070ec91
9c2d206ddc697595ceb0e8e356c64f9e845a0c2f:
title: 'af_unix: Annotate data-race of sk->sk_shutdown in sk_diag_fill().'
mainline: efaf24e30ec39ebbea9112227485805a48b0ceb1
backport: 669958a2bdd8b94c6bbe1df7c83feae7b844afb3
f71a53148ce34898fef099b75386a3a9f4449311:
title: 'usb: gadget: f_fs: Fix race between aio_cancel() and AIO request complete'
mainline: 24729b307eefcd7c476065cd7351c1a018082c19
backport: 77067622d8f27240f3e5438767cce7317f8b9c34
656068638e1da7728abde65760bc8e61106a9b34:
title: 'drm/amd/display: Handle Y carry-over in VCP X.Y calculation'
mainline: 3626a6aebe62ce7067cdc460c0c644e9445386bb
skipped: patched file is not in 4.14.y
9dcb6eb967fe778d1d985a709ac4030895603fc0:
title: 'serial: sc16is7xx: replace hardcoded divisor value with BIT() macro'
mainline: 2e57cefc4477659527f7adab1f87cdbf60ef1ae6
backport: 6c20d50e094e8b67aab06f29f7e97351bbfef601
2b14e818ef3e49741ee60a317554222c6af3a800:
title: 'serial: sc16is7xx: fix bug in sc16is7xx_set_baud() when using prescaler'
mainline: 8492bd91aa055907c67ef04f2b56f6dadd1f44bf
backport: f966c6e6aa0166c853782a705ae5389f8c6b24e7
d3f6dc1155a09bc2c212b734c3ff01a046490e92:
title: 'media: mc: mark the media devnode as registered from the, start'
mainline: 4bc60736154bc9e0e39d3b88918f5d3762ebe5e0
backport: 41d740fdbcb6d45f86ec6cd7238ba2ca38df8824
62b71327cf1af11ceb4a3f53ebf0c85cb9ad3db8:
title: 'selftests/mm: compaction_test: fix incorrect write of zero to nr_hugepages'
mainline: 9ad665ef55eaad1ead1406a58a34f615a7c18b5e
backport: fe9a3e689a0275a21eae214693dd7ddbdbb63cec
4a4f88dcf8b688db0cf527362ebf4db0d272a3f6:
title: 'selftests/mm: conform test to TAP format output'
mainline: 9a21701edc41465de56f97914741bfb7bfc2517d
backport: 75614587972465759b313027993c87e60eeb446f
4d5f7ab71a24f17311d361f47c61cc49064e1dd0:
title: 'selftests/mm: compaction_test: fix bogus test success on Aarch64'
mainline: d4202e66a4b1fe6968f17f9f09bbc30d08f028a1
backport: 6132af7d247da481d1f4e99c91f5fdc29961bce3
c158e493640ce76e76241f0529cebe19770ba5b2:
title: 'nilfs2: Remove check for PageError'
mainline: 79ea65563ad8aaab309d61eeb4d5019dd6cf5fa0
backport: 71bf6edd5d5c1384f56efcc445146a367f1e7c38
7ed62ec616a3441aa3859150d50fadf5fd117aa8:
title: 'nilfs2: return the mapped address from nilfs_get_page()'
mainline: 09a46acb3697e50548bb265afa1d79163659dd85
backport: 52c1c33e0dafbe82538c326d4a6144544e9501f4
2ac8a2fe22bdde9eecce2a42cf5cab79333fb428:
title: 'nilfs2: fix nilfs_empty_dir() misjudgment and long loop on I/O errors'
mainline: 7373a51e7998b508af7136530f3a997b286ce81c
backport: c5682abd08cb2a8960de840d00ce1efc5066286e
217d1f44fff560b3995a685a60aa66e55a7f0f56:
title: 'USB: class: cdc-wdm: Fix CPU lockup caused by excessive log messages'
mainline: 22f00812862564b314784167a89f27b444f82a46
backport: ac2c307a0180583e260719f923ba2edabddea919
83c2321411d8bb8f832dbb482ea3387ac1322542:
title: 'mei: me: release irq in mei_me_pci_resume error path'
mainline: 283cb234ef95d94c61f59e1cd070cd9499b51292
backport: 6f5dcde17cd2c15cb9812b4441ab1ba7088ccf0c
f0dedb5c511ed82cbaff4997a8decf2351ba549f:
title: 'jfs: xattr: fix buffer overflow for invalid xattr'
mainline: 7c55b78818cfb732680c4a72ab270cc2d2ee3d0f
backport: 79cb0bb1b0e2cbed9eaec6f1fb7ce81baf278a39
a2ddc0475c4c6fff5b9eac0e0eb4726640925e1b:
title: 'xhci: Apply reset resume quirk to Etron EJ188 xHCI host'
mainline: 17bd54555c2aaecfdb38e2734149f684a73fa584
backport: b8b14f255f86c39eee93bc4fbc4c8f6c3f9da875
5c08d8bcc6f20965d665a6122a3fe60eba042e74:
title: 'xhci: Apply broken streams quirk to Etron EJ188 xHCI host'
mainline: 91f7a1524a92c70ffe264db8bdfa075f15bbbeb9
backport: 41c568e13eb14e46c634292e403a4652603b2d46
d9bbbbf1a2cac25fafa44ba09d2ab8f5365c0a06:
title: 'Input: try trimming too long modalias strings'
mainline: 0774d19038c496f0c3602fb505c43e1b2d8eed85
backport: abe1fafad8d912b27028e91a0040650149ab4ab8
beb99266830520e15fbc6ca8cc5a5240d76851fd:
title: 'xsk: validate user input for XDP_{UMEM|COMPLETION}_FILL_RING'
mainline: 237f3cf13b20db183d3706d997eedc3c49eacd44
skipped: fixes patch not in branch
955b3764671f3f157215194972d9c01a3a4bd316:
title: 'HID: core: remove unnecessary WARN_ON() in implement()'
mainline: 4aa2dcfbad538adf7becd0034a3754e1bd01b2b5
backport: c0be0c4967c8b988f9603c7b7cecc01379071c67
7f66540fcf6f8f66784f739c33f79d2889e95106:
title: 'iommu/amd: Fix sysfs leak in iommu init'
mainline: a295ec52c8624883885396fde7b4df1a179627c3
backport: 2cb6663051a21277c7bdf9695ad8a04fc6a5dc7a
87d6bdc006f0cbf297a3b2ad6e40ede4c3ee5dc2:
title: 'liquidio: Adjust a NULL pointer handling path in lio_vf_rep_copy_packet'
mainline: c44711b78608c98a3e6b49ce91678cd0917d5349
skipped: fixes patch not in branch
3e0daaf28639c6fd22e96eb2f8772ad40e922ee7:
title: 'drm/bridge/panel: Fix runtime warning on panel bridge release'
mainline: ce62600c4dbee8d43b02277669dd91785a9b81d9
backport: b4722a9d958fe8bd54d0358650bf07b11ab91d4b
06f208ae0670ef97b0bf253a5523863e113026b6:
title: 'tcp: fix race in tcp_v6_syn_recv_sock()'
mainline: d37fe4255abe8e7b419b90c5847e8ec2b8debb08
backport: 291c8c1e9e291262f9179c0ba5cef2e49df4f142
a1f9c8328219b9bb2c29846d6c74ea981e60b5a7:
title: 'Bluetooth: L2CAP: Fix rejecting L2CAP_CONN_PARAM_UPDATE_REQ'
mainline: 806a5198c05987b748b50f3d0c0cfb3d417381a4
backport: 9ae3694d9677f29e0d8e5bbb86841f69baae279d
f00c343be6f25a6a3736fd6b332c918da57d81d8:
title: 'ipv6/route: Add a missing check on proc_dointvec'
mainline: f0fb9b288d0a7e9cc324ae362e2dfd2cc2217ded
backport: fab190e5fcd0466de646405bf49ca7017bbdca31
ebde6e8a52c68dc45b4ae354e279ba74788579e7:
title: 'net/ipv6: Fix the RT cache flush via sysctl using a previous delay'
mainline: 14a20e5b4ad998793c5f43b0330d9e1388446cf3
backport: 04f57a8a33fef04d61ba56f8b4e830fe0cebc8f2
bb3641a5831789d83a58a39ed4a928bcbece7080:
title: 'drivers: core: synchronize really_probe() and dev_uevent()'
mainline: c0a40097f0bc81deafc15f9195d1fb54595cd6d0
backport: 82d942edbd8b21acbacd1d16eb3cb52d47404384
540ca99729e28dbe902b01039a3b4bd74520a819:
title: 'drm/exynos/vidi: fix memory leak in .get_modes()'
mainline: 38e3825631b1f314b21e3ade00b5a4d737eb054e
backport: 126c475927adda67084f403fee8ec76a853b70fc
58730dfbd4ae01c1b022b0d234a8bf8c02cdfb81:
title: 'vmci: prevent speculation leaks by sanitizing event in event_deliver()'
mainline: 8003f00d895310d409b2bf9ef907c56b42a4e0f4
backport: 37026b40b51170c1f9b052ef1b1cd19ec815c566
7bdf1d550ddfcd9ab797087421f77b7aceddc8a7:
title: 'fs/proc: fix softlockup in __read_vmcore'
mainline: 5cbcb62dddf5346077feb82b7b0c9254222d3445
backport: aaea44b590e4a5e853dcc48edbf8ffa6dc611490
f882e853ea33c1e4f7107387f85879139682b720:
title: 'ocfs2: use coarse time for new created files'
mainline: b8cb324277ee16f3eca3055b96fce4735a5a41c6
backport: c02663a1e56ea3793580a51e2ea012e198661ca1
3c26b5d21b1239e9c7fd31ba7d9b2d7bdbaa68d9:
title: 'ocfs2: fix races between hole punching and AIO+DIO'
mainline: 952b023f06a24b2ad6ba67304c4c84d45bea2f18
backport: db16f074c58fb04ccb5efd329bd001b3769662b2
1b6047e27f9b6c79518076a480cdccecf0b6afed:
title: 'PCI: rockchip-ep: Remove wrong mask on subsys_vendor_id'
mainline: 2dba285caba53f309d6060fca911b43d63f41697
skipped: fixes patch not in branch
5226e7062723bd5d4f1bd5e98ace7c1e6c015d57:
title: 'dmaengine: axi-dmac: fix possible race in remove()'
mainline: 1bc31444209c8efae98cb78818131950d9a6f4d6
backport: 7932419ef19393d4fc9b05a04583d8c31c2785e3
96185ee73d5cd28c2b19311c87536ffeeb653562:
title: 'intel_th: pci: Add Granite Rapids support'
mainline: e44937889bdf4ecd1f0c25762b7226406b9b7a69
backport: c2986a4fcfa961be763f68bb7c55ff808dcbbc63
04d47e1fd4e9a9b9c32e769b9106bbcbddeca756:
title: 'intel_th: pci: Add Granite Rapids SOC support'
mainline: 854afe461b009801a171b3a49c5f75ea43e4c04c
backport: fbda6dc2f8c85e96d6ae1f5243146a33e627ee9e
f9159b4706fc1eae09c37081f9a580673a4477ff:
title: 'intel_th: pci: Add Sapphire Rapids SOC support'
mainline: 2e1da7efabe05cb0cf0b358883b2bc89080ed0eb
backport: 97c26585440f81fc3832759721964719ae7a4802
8af7cedc0edf1b9d3c29e2b72e7d643f64669ee4:
title: 'intel_th: pci: Add Meteor Lake-S support'
mainline: c4a30def564d75e84718b059d1a62cc79b137cf9
backport: 0d4c32589468be6d7b8993e7576690004f50f5cc
4780775da4957702ece226104b17d072e557a962:
title: 'intel_th: pci: Add Lunar Lake support'
mainline: f866b65322bfbc8fcca13c25f49e1a5c5a93ae4d
backport: eac9744fef5c714c3201a0ab9c56e61ede318c29
95f6f81e50d858a7c9aa7c795ec14a0ac3819118:
title: 'nilfs2: fix potential kernel bug due to lack of writeback flag waiting'
mainline: a4ca369ca221bb7e06c725792ac107f0e48e82e7
backport: 948b6135a242e4147ee69d7d47e1df20f5951d7f
1af0a35eba1ee302fc30aea8cb621f6de8728785:
title: 'hv_utils: drain the timesync packets on onchannelcallback'
mainline: b46b4a8a57c377b72a98c7930a9f6969d2d4784e
backport: 22749c2b34a685511b52c8e1c52539519f0a46ec
a33d99c8b213d16ad61bc68cb17aad1e2f484192:
title: 'hugetlb_encode.h: fix undefined behaviour (34 << 26)'
mainline: 710bb68c2e3a24512e2d2bae470960d7488e97b1
backport: bee6efedbf7b70baa442b7af575c6cc055c2bcef
e0aab7b07a9375337847c9d74a5ec044071e01c8:
title: 'usb-storage: alauda: Check whether the media is initialized'
mainline: 16637fea001ab3c8df528a8995b3211906165a30
backport: ba2eacb9af4998743a14271e11fba297a8761497
6652029853316f4c273219145ef0e71b148bbe01:
title: 'rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment'
mainline: 8b9b443fa860276822b25057cb3ff3b28734dec0
backport: d3d05ae427ca75738046af172544e4ad75bdf8aa
79636f636126775436a11ee9cf00a9253a33ac11:
title: 'batman-adv: bypass empty buckets in batadv_purge_orig_ref()'
mainline: 40dc8ab605894acae1473e434944924a22cfaaa0
backport: 5856f70943c52055ea24d8ee791308367cd1039a
56bec63a7fc87ad50b3373a87517dc9770eef9e0:
title: 'scsi: qedi: Fix crash while reading debugfs attribute'
mainline: 28027ec8e32ecbadcd67623edb290dad61e735b5
backport: f98f3237faf35d508d9c1b783385102a7be0abf2
acf2b80c31c37acab040baa3cf5f19fbd5140b18:
title: 'powerpc/pseries: Enforce hcall result buffer validity and size'
mainline: ff2e185cf73df480ec69675936c4ee75a445c3e4
backport: 476276b356c5d338435b82ecfe217a9422d7235f
7e1e8e86b0b62844b2c795549f65494e95b5983e:
title: 'powerpc/io: Avoid clang null pointer arithmetic warnings'
mainline: 03c0f2c2b2220fc9cf8785cd7b61d3e71e24a366
backport: 8824c4818bf4e7a3b2c47f78c6a8ace368ebe2c5
02d13616ca30014ed96302e51a5b0e17664e58bc:
title: 'usb: misc: uss720: check for incompatible versions of the Belkin F5U002'
mainline: 3295f1b866bfbcabd625511968e8a5c541f9ab32
backport: 43cef40ed1b05181bab0553b15a699a4a3de9dc4
2f85b07bd802e86e155fd8496e3d105ec3a2ade9:
title: 'udf: udftime: prevent overflow in udf_disk_stamp_to_time()'
mainline: 3b84adf460381169c085e4bc09e7b57e9e16db0a
backport: 28e83fb606df2b620ca55001b6b1ec4669fff3fe
864a1e64802c2de46fe22b52ca87c5b409042803:
title: 'PCI/PM: Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports'
mainline: 256df20c590bf0e4d63ac69330cf23faddac3e08
skipped: commit did not cherry-pick cleanly
6bff05aaa32c2f7e1f6e68e890876642159db419:
title: 'MIPS: Octeon: Add PCIe link status check'
mainline: 29b83a64df3b42c88c0338696feb6fdcd7f1f3b7
backport: 7bf7a1b84c85a21b7e9e7dc9136efd5c79d7b4ed
acabc32a7b27f30a75ef01e873d8b65f5dc7d5d5:
title: 'MIPS: Routerboard 532: Fix vendor retry check code'
mainline: ae9daffd9028f2500c9ac1517e46d4f2b57efb80
backport: 2401229809147c9144c4e7bbbcc43c7154cf1aba
5d3b9efa04c0d8967e00cbc4b6b5aab79952f5d1:
title: 'cipso: fix total option length computation'
mainline: 9f36169912331fa035d7b73a91252d7c2512eb1a
backport: 2f46065f2784076d6c121eab1a21a8096fba6b13
d616876256b38ecf9a1a1c7d674192c5346bc69c:
title: 'netrom: Fix a memory leak in nr_heartbeat_expiry()'
mainline: 0b9130247f3b6a1122478471ff0e014ea96bb735
backport: f5105aa1e9989b1deb6d87f9d080a7d0d917dc56
f0cda984e4e634b221dbf9642b8ecc5b4806b41e:
title: 'ipv6: prevent possible NULL dereference in rt6_probe()'
mainline: b86762dbe19a62e785c189f313cda5b989931f37
skipped: prerequisite dcd1f572954f9d66d7b4a65df894ed5b4c467368 not in branch
c71761292d4d002a8eccb57b86792c4e3b3eb3c7:
title: 'xfrm6: check ip6_dst_idev() return value in xfrm6_get_saddr()'
mainline: d46401052c2d5614da8efea5788532f0401cb164
backport: b71bbdc8869cbf604b55e27437b9d91d3dd909aa
d0e99ad7721155aaa4e57b8b11bb70743da61491:
title: 'virtio_net: checksum offloading handling fix'
mainline: 604141c036e1b636e2a71cf6e1aa09d1e45f40c2
backport: e3d1b924da1c094e403381851f287d1cb6d430de
88154e3329e1f47490ee98f8d32a0353d8d46550:
title: 'net: usb: rtl8150 fix unintiatilzed variables in rtl8150_get_link_ksettings'
mainline: fba383985354e83474f95f36d7c65feb75dba19d
backport: 8bfba3c52500198a370f799501c232303b52817c
bdc0a40accdf77080fed82d72e89d341001dcbf6:
title: 'regulator: core: Fix modpost error "regulator_get_regmap" undefined'
mainline: 3f60497c658d2072714d097a177612d34b34aa3d
backport: cc48980d16d92c2f4e6c9a1976bd2afdf9f30fa6
0b346aa39e76de78be5e105dc338e190e80a5188:
title: 'dmaengine: ioatdma: Fix missing kmem_cache_destroy()'
mainline: 5422145d0b749ad554ada772133b9b20f9fb0ec8
backport: d7e271c7c6269187a0c054ef781b1160398b119a
435ecc978c3d5d0c4e172ec5b956dc1904061d98:
title: 'ACPICA: Revert "ACPICA: avoid Info: mapping multiple BARs. Your kernel is fine."'
mainline: a83e1385b780d41307433ddbc86e3c528db031f0
backport: ed44c23c974a4df0899e57a375eeb563a911b575
07e8f15fa16695cf4c90e89854e59af4a760055b:
title: 'drm/radeon: fix UBSAN warning in kv_dpm.c'
mainline: a498df5421fd737d11bfd152428ba6b1c8538321
backport: cc96770672dafa9b46038f64523c42ce3534e8ba
48d5f4d66962fde59c78dd0a7cf6bd03b3f49c61:
title: 'gcov: add support for GCC 14'
mainline: c1558bc57b8e5b4da5d821537cd30e2e660861d8
backport: cd513bd7a535592e2c65efc462a42866d507da3a
1d1838ca012952f4914af6f6619bbdea6251039c:
title: 'ARM: dts: samsung: smdkv310: fix keypad no-autorepeat'
mainline: 87d8e522d6f5a004f0aa06c0def302df65aff296
backport: 5566df875aabd57002b81daf45d37d2f6c874d42
77951f880a4b9e7f76460364ec0b931d1a59c9fb:
title: 'ARM: dts: samsung: exynos4412-origen: fix keypad no-autorepeat'
mainline: 88208d3cd79821117fd3fb80d9bcab618467d37b
backport: 9b2697403d29b12ef06ab68f4f2232291dfed184
4c70a7576ae14f804196ae0089f9deb6cbd77e1f:
title: 'ARM: dts: samsung: smdk4412: fix keypad no-autorepeat'
mainline: 4ac4c1d794e7ff454d191bbdab7585ed8dbf3758
backport: d350b585ee4796a3868be5f4cd8a29877275c819
6721b33aa934e8afd255db9a466868f74f5c5cb5:
title: 'selftests/ftrace: Fix checkbashisms errors'
mainline: 72ce3daf92ba4f5bae6e91095d40e67b367c6b2f
skipped: patched file is not in 4.14.y
876d7d009c528caea5af95a70ab998374cbc7c7f:
title: 'tracing: Add MODULE_DESCRIPTION() to preemptirq_delay_test'
mainline: 23748e3e0fbfe471eff5ce439921629f6a427828
skipped: fixes patch not in branch
c23ead9986a17c793d39be11ce6c084904c9c44a:
title: 'perf/core: Fix missing wakeup when waiting for context reference'
mainline: 74751ef5c1912ebd3e65c3b65f45587e05ce5d36
skipped: fixes patch not in branch
4c003aef56d5642aefd4d11ee9d7e6755d4c1a6e:
title: 'PCI: Add PCI_ERROR_RESPONSE and related definitions'
mainline: 57bdeef4716689d9b0e3571034d65cf420f6efcd
backport: dcea2cf5d7cca146641b67b8cbcc153cbfdeb0c3
d4e52b36c73f44d2b5f41d0cd3f57b3d2efbf180:
title: 'x86/amd_nb: Check for invalid SMN reads'
mainline: c625dabbf1c4a8e77e4734014f2fde7aa9071a1f
backport: f66ed725b522bfad043ec2dbcf50eff7ffc8feda
b576d7d08f26d40789313ec6a8acc966a149c37f:
title: 'iio: dac: ad5592r-base: Replace indio_dev->mlock with own device lock'
mainline: 33c53cbf8f7bc8d62f6146a19da97c8594376ff0
backport: e8b7b4167c95a9e6976479edda683c1b13ca0832
c101996c9dabd9d809c12f686547b7035c087f10:
title: 'iio: dac: ad5592r: un-indent code-block for scale read'
mainline: b004fe33034cc64f72c20923be71cf1e6c9a624c
backport: a28ae8f66b95e48a7ad69aa23382bd8486b6c529
9eaaefbae8f5ddbed0fce822042ad969f5f876c5:
title: 'iio: dac: ad5592r: fix temperature channel scaling value'
mainline: 279428df888319bf68f2686934897301a250bb84
backport: d9b6601da0310953862e47ebc5fe28f9bf37033a
229e75730c784f7b871ae9bd76f8bd506d20a304:
title: 'scsi: mpt3sas: Add ioc_<level> logging macros'
mainline: 645a20c6821cd1ab58af8a1f99659e619c216efd
backport: 675de54c63726a5b6316a7c3854219e10208f4ea
230c290c74b956a4c26926c94a5bf932ca234884:
title: 'scsi: mpt3sas: Gracefully handle online firmware update'
mainline: ffedeae1fa545a1d07e6827180c3923bf67af59f
backport: bd4e577402b93532aacc19b7f44c4963b763fafe
e9bce7c751f6d6c7be88c0bc081a66aaf61a23ee:
title: 'scsi: mpt3sas: Avoid test/set_bit() operating in non-allocated memory'
mainline: 4254dfeda82f20844299dca6c38cbffcfd499f41
backport: 165419d81604a14fb6d0b111fd2f96288ec9528b
8f667ee530a601449fede56370036e1d8d9a62dc:
title: 'xhci: Use soft retry to recover faster from transaction errors'
mainline: f8f80be501aa2f10669585c3e328fad079d8cb3a
backport: de371a2bb30d1695a5c07357bd207e5aadefcd51
ca0f0c5b0b991a71f61948bad09eb5f9e8cc4851:
title: 'xhci: Set correct transferred length for cancelled bulk transfers'
mainline: f0260589b439e2637ad54a2b25f00a516ef28a57
backport: c73496b00b416467313ec64166d9d8d5d7e3a921
2a28c0f457c5563cef9fbad803d9445eee0c1e05:
title: 'usb: xhci: do not perform Soft Retry for some xHCI hosts'
mainline: a4a251f8c23518899d2078c320cf9ce2fa459c9f
backport: 3f74f1a0bd8b876661fb5263fa78048e2586065d
e65a0dc2e85efb28e182aca50218e8a056d0ce04:
title: 'pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER'
mainline: adec57ff8e66aee632f3dd1f93787c13d112b7a1
backport: d6636e9d955f53a9da4e40af4ddba67ab3391fbf
860a562a61a838867c8d3f66d059a0fc7a67d1c9:
title: 'pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins'
mainline: e8448a6c817c2aa6c6af785b1d45678bd5977e8d
backport: 0b45b7f4f6ee46da3efc4858af96e1a86e536250
f8426b53f59f88c637143ffa31276be73a3c9b27:
title: 'pinctrl: rockchip: fix pinmux bits for RK3328 GPIO3-B pins'
mainline: 5ef6914e0bf578357b4c906ffe6b26e7eedb8ccf
backport: 0d6d13a0bb379aa59f6475c1bb6df7aaed21857f
61c552e4ee1dbfa85d68997ab6e9d80690b401a7:
title: 'pinctrl: rockchip: fix pinmux reset in rockchip_pmx_set'
mainline: 4ea4d4808e342ddf89ba24b93ffa2057005aaced
backport: a1e6c61656a89e49007fd9847fe123acd15d31b9
4ad7d49059358ceadd352b4e2511425bdb68f400:
title: 'drm/amdgpu: fix UBSAN warning in kv_dpm.c'
mainline: f0d576f840153392d04b2d52cf3adab8f62e8cb6
backport: 90340ac06eb8a83a320c3bf2a31cc67eaf333478
f696eaf675650cd57411020bb8b83f57e2de3f11:
title: 'netfilter: nf_tables: validate family when identifying table via handle'
mainline: f6e1532a2697b81da00bfb184e99d15e01e9d98c
skipped: fixes patch not in branch
ae81535ce2503aabc4adab3472f4338070cdeb6a:
title: 'ASoC: fsl-asoc-card: set priv->pdev before using it'
mainline: 90f3feb24172185f1832636264943e8b5e289245
backport: f6658c76f5f0670445bebb35a9ccf3d5ae502806
40188a25a9847dbeb7ec67517174a835a677752f:
title: 'netfilter: nf_tables: fully validate NFT_DATA_VALUE on store to data registers'
mainline: 7931d32955e09d0a11b1fe0b6aac1bfa061c005c
backport: c01fc5238f6bb561e137d7b6e7df88c5107a263f
b71348be1236398be2d04c5e145fd6eaae86a91b:
title: 'drm/panel: ilitek-ili9881c: Fix warning with GPIO controllers that sleep'
mainline: ee7860cd8b5763017f8dc785c2851fecb7a0c565
skipped: patched file is not in 4.14.y
2b085521be5292016097b5e7ca81b26be3f7098d:
title: 'net/iucv: Avoid explicit cpumask var allocation on stack'
mainline: be4e1304419c99a164b4c0e101c7c2a756b635b9
backport: 9578df8a6b21442b2451be92ea5ce59b2cc38505
40d7def67841343c10f8642a41031fecbb248bab:
title: 'ALSA: emux: improve patch ioctl data validation'
mainline: 89b32ccb12ae67e630c6453d778ec30a592a212f
backport: bf4ffd90f46475894c7d758eb26aa0f8a31dc245
1925c902159d686372d897c2fa8ee4ea91b62d14:
title: 'media: dvbdev: Initialize sbuf'
mainline: 17d1316de0d7dc1bdc5d6e3ad4efd30a9bf1a381
backport: 728e947a35ba429d96e495c170367211583d760e
671abe2b126e6e39d52eefbf53106650ef2dd904:
title: 'soc: ti: wkup_m3_ipc: Send NULL dummy message instead of pointer message'
mainline: ddbf3204f600a4d1f153498f618369fca352ae00
backport: cf89c5861a3b88fcef8ce222edd384bb5cb44934
277ea9f9bf1171f0f02836ded9b65b9b8684322d:
title: 'nvme: fixup comment for nvme RDMA Provider Type'
mainline: f80a55fa90fa76d01e3fffaa5d0413e522ab9a00
backport: 43bae0d9a7bd2f0a78a283b1440a74601b4a4f68
a8d78984fdc105bc1a38b73e98d32b1bc4222684:
title: 'gpio: davinci: Validate the obtained number of IRQs'
mainline: 7aa9b96e9a73e4ec1771492d0527bd5fc5ef9164
skipped: fixes patch not in branch
c7999d372e7fe8bdfbc2226af1896e8bd328018a:
title: 'i2c: ocores: stop transfer on timeout'
mainline: e7663ef5ae0f02e3b902eb0305dec981333eb3e1
backport: b4951f8134444e1eb7b28ea2234463f8ed077745
1f7e4dd58af1267db2970e5c2e98a4d0ff170047:
title: 'i2c: ocores: set IACK bit after core is enabled'
mainline: 5a72477273066b5b357801ab2d315ef14949d402
backport: 4d73d79702f3c0872f20dfd8a05974c7b18ebc7f
65ebdde16e7f5da99dbf8a548fb635837d78384e:
title: 'x86: stop playing stack games in profile_pc()'
mainline: 093d9603b60093a9aaae942db56107f6432a5dca
backport: 00eda93e9c842eecb76a1bc09b337e4f0cb043eb
bba83bf85fc6fcca1e827fd88bf3998be9ad0d24:
title: 'mmc: sdhci-pci: Convert PCIBIOS_* return codes to errnos'
mainline: ebc4fc34eae8ddfbef49f2bdaced1bf4167ef80d
backport: 51e44a77a5ca50e7e1f0548960bbb9eea83ff139
75a024d3ab0d331fc1d0b640b00e63d31d556b1e:
title: 'iio: adc: ad7266: Fix variable checking bug'
mainline: a2b86132955268b2a1703082fbc2d4832fc001b8
backport: b23dedd4318672a4265f48d90f8760b41b6f7006
272736d778a42a3cdb623d53665a0e6a85125b66:
title: 'iio: chemical: bme680: Fix pressure value output'
mainline: ae1f7b93b52095be6776d0f34957b4f35dda44d9
skipped: fixes patch not in branch
d17f26afde5039c30297e9c6ffc273689e595154:
title: 'iio: chemical: bme680: Fix calibration data variable'
mainline: b47c0fee73a810c4503c4a94ea34858a1d865bba
skipped: fixes patch not in branch
6fa31bbe2ea8665ee970258eb8320cbf231dbe9e:
title: 'iio: chemical: bme680: Fix overflows in compensate() functions'
mainline: fdd478c3ae98c3f13628e110dce9b6cfb0d9b3c8
skipped: fixes patch not in branch
2e2ee64a367e97d433d1f9f735efb69f2612472b:
title: 'iio: chemical: bme680: Fix sensor data read operation'
mainline: 4241665e6ea063a9c1d734de790121a71db763fc
skipped: fixes patch not in branch
abb029e078e149d4d1f44a244cf833a6a1541447:
title: 'net: usb: ax88179_178a: improve link status logs'
mainline: 058722ee350c0bdd664e467156feb2bf5d9cc271
backport: e4de596e5e18fb924bfe0048049cd04a285272f9
a0886d04f1c7439b55c1c9daecd6b21ada2de5dd:
title: 'usb: gadget: printer: SS+ support'
mainline: fd80731e5e9d1402cb2f85022a6abf9b1982ec5f
backport: cbc92ffc360a7b6f16408d7092c71d72bb9e0382
a93b97349ba92cdc8b63ad09d28a873a467e1d62:
title: 'usb: musb: da8xx: fix a resource leak in probe()'
mainline: de644a4a86be04ed8a43ef8267d0f7d021941c5e
backport: 7209de070ba2427bfa29373c649c6311b69580bc
5159a81924311c1ec786ad9fdef784ead8676a6a:
title: 'usb: atm: cxacru: fix endpoint checking in cxacru_bind()'
mainline: 2eabb655a968b862bc0c31629a09f0fbf3c80d51
backport: 4ddbe32a34bc9cc18c34282f88488d22c4178071
0929fbe8194db19bfeed22f8c7f9b24da9f08bb9:
title: 'tty: mcf: MCF54418 has 10 UARTS'
mainline: 7c92a8bd53f24d50c8cf4aba53bb75505b382fed
backport: c6f828c51833c0dcdd53b79a4eb5c8d5f5ebd56b
72152ab85ae44e13df8b7a653b5f657b48fa3229:
title: 'hexagon: fix fadvise64_64 calling conventions'
mainline: 896842284c6ccba25ec9d78b7b6e62cdd507c083
backport: 87cc48eed0c10fc8f13907410db3f1c76c77826b
9289cd3450d1da3e271ef4b054d4d2932c41243e:
title: 'drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_ld_modes'
mainline: 66edf3fb331b6c55439b10f9862987b0916b3726
backport: 2dc9769a951e305b690994008bcc32ee0d57f3e2
ffabad4aa91e33ced3c6ae793fb37771b3e9cb51:
title: 'drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_hd_modes'
mainline: 6d411c8ccc0137a612e0044489030a194ff5c843
backport: e2f974a4f127e38e7a5ec7a7ab51bb59d4392f17
4d5a2d6b7a9a1140342c5229d1a427ec37a12fd4:
title: 'batman-adv: Don''t accept TT entries for out-of-spec VIDs'
mainline: 537a350d14321c8cca5efbf0a33a404fec3a9f9e
backport: e6522330b7414dc7f96f547045bdc5db9de0cc3e
290073b2b557e4dc21ee74a1e403d9ae79e393a2:
title: 'ata: libata-core: Fix double free on error'
mainline: ab9e0c529eb7cafebdd31fe1644524e80a48b05d
skipped: fixes patch not in branch
c329760749b5419769e57cb2be80955d2805f9c9:
title: 'ftruncate: pass a signed offset'
mainline: 4b8e88e563b5f666446d002ad0dc1e6e8e7102b0
backport: 5696aad6bf4700041503e715bd2fb5d9dcf1fcc0
19946741ea989605d12d2ffdbb006b9ca000dde8:
title: 'pwm: stm32: Refuse too small period requests'
mainline: c45fcf46ca2368dafe7e5c513a711a6f0f974308
backport: 7128fc9dcb40ffa3ca16cc92eeb4aa3f65639c87
13bda7ac5801f501bed6e21717dbf3b0df773847:
title: 'ipv6: annotate some data-races around sk->sk_prot'
mainline: 086d49058cd8471046ae9927524708820f5fd1c7
backport: 81d8db9302d30505f89d672e1a39c60ed71a1dda
fda6d62642a9c544a293d7ad7cb058f8c7f8f3dd:
title: 'ipv6: Fix data races around sk->sk_prot.'
mainline: 364f997b5cfe1db0d63a390fe7c801fa2b3115f6
backport: 0904f321c3a052af42b094f786f75fe32f5d8f2d
5bb642cc3355ffd3c8bca0a8bd8e6e65bcc2091c:
title: 'tcp: Fix data races around icsk->icsk_af_ops.'
mainline: f49cd2f4d6170d27a2c61f1fecb03d8a70c91f57
backport: 1895f4d98247c54d045cd4a9c94c0802f3c270d5
f7fc312d1d750db0ea867e50e6c436e0679a5a65:
title: 'arm64: dts: rockchip: Add sound-dai-cells for RK3368'
mainline: 8d7ec44aa5d1eb94a30319074762a1740440cdc8
backport: 6658230562d296ef2484a1156ff322c558d3c26a

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 = 349 SUBLEVEL = 350
EXTRAVERSION = -openela EXTRAVERSION = -openela
NAME = Petit Gorille NAME = Petit Gorille

View File

@ -67,7 +67,7 @@
&keypad { &keypad {
samsung,keypad-num-rows = <2>; samsung,keypad-num-rows = <2>;
samsung,keypad-num-columns = <8>; samsung,keypad-num-columns = <8>;
linux,keypad-no-autorepeat; linux,input-no-autorepeat;
wakeup-source; wakeup-source;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&keypad_rows &keypad_cols>; pinctrl-0 = <&keypad_rows &keypad_cols>;

View File

@ -440,7 +440,7 @@
&keypad { &keypad {
samsung,keypad-num-rows = <3>; samsung,keypad-num-rows = <3>;
samsung,keypad-num-columns = <2>; samsung,keypad-num-columns = <2>;
linux,keypad-no-autorepeat; linux,input-no-autorepeat;
wakeup-source; wakeup-source;
pinctrl-0 = <&keypad_rows &keypad_cols>; pinctrl-0 = <&keypad_rows &keypad_cols>;
pinctrl-names = "default"; pinctrl-names = "default";

View File

@ -46,7 +46,7 @@
&keypad { &keypad {
samsung,keypad-num-rows = <3>; samsung,keypad-num-rows = <3>;
samsung,keypad-num-columns = <8>; samsung,keypad-num-columns = <8>;
linux,keypad-no-autorepeat; linux,input-no-autorepeat;
wakeup-source; wakeup-source;
pinctrl-0 = <&keypad_rows &keypad_cols>; pinctrl-0 = <&keypad_rows &keypad_cols>;
pinctrl-names = "default"; pinctrl-names = "default";

View File

@ -710,6 +710,7 @@
dma-names = "tx"; dma-names = "tx";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&spdif_tx>; pinctrl-0 = <&spdif_tx>;
#sound-dai-cells = <0>;
status = "disabled"; status = "disabled";
}; };
@ -721,6 +722,7 @@
clocks = <&cru SCLK_I2S_2CH>, <&cru HCLK_I2S_2CH>; clocks = <&cru SCLK_I2S_2CH>, <&cru HCLK_I2S_2CH>;
dmas = <&dmac_bus 6>, <&dmac_bus 7>; dmas = <&dmac_bus 6>, <&dmac_bus 7>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
#sound-dai-cells = <0>;
status = "disabled"; status = "disabled";
}; };
@ -734,6 +736,7 @@
dma-names = "tx", "rx"; dma-names = "tx", "rx";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&i2s_8ch_bus>; pinctrl-0 = <&i2s_8ch_bus>;
#sound-dai-cells = <0>;
status = "disabled"; status = "disabled";
}; };

View File

@ -0,0 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0 */
#include <asm-generic/syscalls.h>
asmlinkage long sys_hexagon_fadvise64_64(int fd, int advice,
u32 a2, u32 a3, u32 a4, u32 a5);

View File

@ -27,6 +27,13 @@
#undef __SYSCALL #undef __SYSCALL
#define __SYSCALL(nr, call) [nr] = (call), #define __SYSCALL(nr, call) [nr] = (call),
SYSCALL_DEFINE6(hexagon_fadvise64_64, int, fd, int, advice,
SC_ARG64(offset), SC_ARG64(len))
{
return ksys_fadvise64_64(fd, SC_VAL64(loff_t, offset), SC_VAL64(loff_t, len), advice);
}
#define sys_fadvise64_64 sys_hexagon_fadvise64_64
void *sys_call_table[__NR_syscalls] = { void *sys_call_table[__NR_syscalls] = {
#include <asm/unistd.h> #include <asm/unistd.h>
}; };

View File

@ -112,8 +112,8 @@ retry:
* gives them time to settle * gives them time to settle
*/ */
if (where == PCI_VENDOR_ID) { if (where == PCI_VENDOR_ID) {
if (ret == 0xffffffff || ret == 0x00000000 || if (*val == 0xffffffff || *val == 0x00000000 ||
ret == 0x0000ffff || ret == 0xffff0000) { *val == 0x0000ffff || *val == 0xffff0000) {
if (delay > 4) if (delay > 4)
return 0; return 0;
delay *= 2; delay *= 2;

6
arch/mips/pci/pcie-octeon.c Normal file → Executable file
View File

@ -232,12 +232,18 @@ static inline uint64_t __cvmx_pcie_build_config_addr(int pcie_port, int bus,
{ {
union cvmx_pcie_address pcie_addr; union cvmx_pcie_address pcie_addr;
union cvmx_pciercx_cfg006 pciercx_cfg006; union cvmx_pciercx_cfg006 pciercx_cfg006;
union cvmx_pciercx_cfg032 pciercx_cfg032;
pciercx_cfg006.u32 = pciercx_cfg006.u32 =
cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG006(pcie_port)); cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG006(pcie_port));
if ((bus <= pciercx_cfg006.s.pbnum) && (dev != 0)) if ((bus <= pciercx_cfg006.s.pbnum) && (dev != 0))
return 0; return 0;
pciercx_cfg032.u32 =
cvmx_pcie_cfgx_read(pcie_port, CVMX_PCIERCX_CFG032(pcie_port));
if ((pciercx_cfg032.s.dlla == 0) || (pciercx_cfg032.s.lt == 1))
return 0;
pcie_addr.u64 = 0; pcie_addr.u64 = 0;
pcie_addr.config.upper = 2; pcie_addr.config.upper = 2;
pcie_addr.config.io = 1; pcie_addr.config.io = 1;

View File

@ -381,7 +381,7 @@ long plpar_hcall_norets(unsigned long opcode, ...);
* Used for all but the craziest of phyp interfaces (see plpar_hcall9) * Used for all but the craziest of phyp interfaces (see plpar_hcall9)
*/ */
#define PLPAR_HCALL_BUFSIZE 4 #define PLPAR_HCALL_BUFSIZE 4
long plpar_hcall(unsigned long opcode, unsigned long *retbuf, ...); long plpar_hcall(unsigned long opcode, unsigned long retbuf[static PLPAR_HCALL_BUFSIZE], ...);
/** /**
* plpar_hcall_raw: - Make a hypervisor call without calculating hcall stats * plpar_hcall_raw: - Make a hypervisor call without calculating hcall stats
@ -395,7 +395,7 @@ long plpar_hcall(unsigned long opcode, unsigned long *retbuf, ...);
* plpar_hcall, but plpar_hcall_raw works in real mode and does not * plpar_hcall, but plpar_hcall_raw works in real mode and does not
* calculate hypervisor call statistics. * calculate hypervisor call statistics.
*/ */
long plpar_hcall_raw(unsigned long opcode, unsigned long *retbuf, ...); long plpar_hcall_raw(unsigned long opcode, unsigned long retbuf[static PLPAR_HCALL_BUFSIZE], ...);
/** /**
* plpar_hcall9: - Make a pseries hypervisor call with up to 9 return arguments * plpar_hcall9: - Make a pseries hypervisor call with up to 9 return arguments
@ -406,8 +406,8 @@ long plpar_hcall_raw(unsigned long opcode, unsigned long *retbuf, ...);
* PLPAR_HCALL9_BUFSIZE to size the return argument buffer. * PLPAR_HCALL9_BUFSIZE to size the return argument buffer.
*/ */
#define PLPAR_HCALL9_BUFSIZE 9 #define PLPAR_HCALL9_BUFSIZE 9
long plpar_hcall9(unsigned long opcode, unsigned long *retbuf, ...); long plpar_hcall9(unsigned long opcode, unsigned long retbuf[static PLPAR_HCALL9_BUFSIZE], ...);
long plpar_hcall9_raw(unsigned long opcode, unsigned long *retbuf, ...); long plpar_hcall9_raw(unsigned long opcode, unsigned long retbuf[static PLPAR_HCALL9_BUFSIZE], ...);
struct hvcall_mpp_data { struct hvcall_mpp_data {
unsigned long entitled_mem; unsigned long entitled_mem;

View File

@ -537,12 +537,12 @@ __do_out_asm(_rec_outl, "stwbrx")
#define __do_inw(port) _rec_inw(port) #define __do_inw(port) _rec_inw(port)
#define __do_inl(port) _rec_inl(port) #define __do_inl(port) _rec_inl(port)
#else /* CONFIG_PPC32 */ #else /* CONFIG_PPC32 */
#define __do_outb(val, port) writeb(val,(PCI_IO_ADDR)_IO_BASE+port); #define __do_outb(val, port) writeb(val,(PCI_IO_ADDR)(_IO_BASE+port));
#define __do_outw(val, port) writew(val,(PCI_IO_ADDR)_IO_BASE+port); #define __do_outw(val, port) writew(val,(PCI_IO_ADDR)(_IO_BASE+port));
#define __do_outl(val, port) writel(val,(PCI_IO_ADDR)_IO_BASE+port); #define __do_outl(val, port) writel(val,(PCI_IO_ADDR)(_IO_BASE+port));
#define __do_inb(port) readb((PCI_IO_ADDR)_IO_BASE + port); #define __do_inb(port) readb((PCI_IO_ADDR)(_IO_BASE + port));
#define __do_inw(port) readw((PCI_IO_ADDR)_IO_BASE + port); #define __do_inw(port) readw((PCI_IO_ADDR)(_IO_BASE + port));
#define __do_inl(port) readl((PCI_IO_ADDR)_IO_BASE + port); #define __do_inl(port) readl((PCI_IO_ADDR)(_IO_BASE + port));
#endif /* !CONFIG_PPC32 */ #endif /* !CONFIG_PPC32 */
#ifdef CONFIG_EEH #ifdef CONFIG_EEH
@ -558,12 +558,12 @@ __do_out_asm(_rec_outl, "stwbrx")
#define __do_writesw(a, b, n) _outsw(PCI_FIX_ADDR(a),(b),(n)) #define __do_writesw(a, b, n) _outsw(PCI_FIX_ADDR(a),(b),(n))
#define __do_writesl(a, b, n) _outsl(PCI_FIX_ADDR(a),(b),(n)) #define __do_writesl(a, b, n) _outsl(PCI_FIX_ADDR(a),(b),(n))
#define __do_insb(p, b, n) readsb((PCI_IO_ADDR)_IO_BASE+(p), (b), (n)) #define __do_insb(p, b, n) readsb((PCI_IO_ADDR)(_IO_BASE+(p)), (b), (n))
#define __do_insw(p, b, n) readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n)) #define __do_insw(p, b, n) readsw((PCI_IO_ADDR)(_IO_BASE+(p)), (b), (n))
#define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n)) #define __do_insl(p, b, n) readsl((PCI_IO_ADDR)(_IO_BASE+(p)), (b), (n))
#define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) #define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)(_IO_BASE+(p)),(b),(n))
#define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) #define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)(_IO_BASE+(p)),(b),(n))
#define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) #define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)(_IO_BASE+(p)),(b),(n))
#define __do_memset_io(addr, c, n) \ #define __do_memset_io(addr, c, n) \
_memset_io(PCI_FIX_ADDR(addr), c, n) _memset_io(PCI_FIX_ADDR(addr), c, n)

View File

@ -128,7 +128,14 @@ out:
int amd_smn_read(u16 node, u32 address, u32 *value) int amd_smn_read(u16 node, u32 address, u32 *value)
{ {
return __amd_smn_rw(node, address, value, false); int err = __amd_smn_rw(node, address, value, false);
if (PCI_POSSIBLE_ERROR(*value)) {
err = -ENODEV;
*value = 0;
}
return err;
} }
EXPORT_SYMBOL_GPL(amd_smn_read); EXPORT_SYMBOL_GPL(amd_smn_read);

View File

@ -26,26 +26,7 @@
unsigned long profile_pc(struct pt_regs *regs) unsigned long profile_pc(struct pt_regs *regs)
{ {
unsigned long pc = instruction_pointer(regs); return instruction_pointer(regs);
if (!user_mode(regs) && in_lock_functions(pc)) {
#ifdef CONFIG_FRAME_POINTER
return *(unsigned long *)(regs->bp + sizeof(long));
#else
unsigned long *sp =
(unsigned long *)kernel_stack_pointer(regs);
/*
* Return address is either directly at stack pointer
* or above a saved flags. Eflags has bits 22-31 zero,
* kernel addresses don't.
*/
if (sp[0] >> 22)
return sp[0];
if (sp[1] >> 22)
return sp[1];
#endif
}
return pc;
} }
EXPORT_SYMBOL(profile_pc); EXPORT_SYMBOL(profile_pc);

View File

@ -77,7 +77,6 @@ acpi_ex_system_memory_space_handler(u32 function,
struct acpi_mem_space_context *mem_info = region_context; struct acpi_mem_space_context *mem_info = region_context;
u32 length; u32 length;
acpi_size map_length; acpi_size map_length;
acpi_size page_boundary_map_length;
#ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED #ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED
u32 remainder; u32 remainder;
#endif #endif
@ -154,26 +153,8 @@ acpi_ex_system_memory_space_handler(u32 function,
map_length = (acpi_size) map_length = (acpi_size)
((mem_info->address + mem_info->length) - address); ((mem_info->address + mem_info->length) - address);
/* if (map_length > ACPI_DEFAULT_PAGE_SIZE)
* If mapping the entire remaining portion of the region will cross map_length = ACPI_DEFAULT_PAGE_SIZE;
* a page boundary, just map up to the page boundary, do not cross.
* On some systems, crossing a page boundary while mapping regions
* can cause warnings if the pages have different attributes
* due to resource management.
*
* This has the added benefit of constraining a single mapping to
* one page, which is similar to the original code that used a 4k
* maximum window.
*/
page_boundary_map_length = (acpi_size)
(ACPI_ROUND_UP(address, ACPI_DEFAULT_PAGE_SIZE) - address);
if (page_boundary_map_length == 0) {
page_boundary_map_length = ACPI_DEFAULT_PAGE_SIZE;
}
if (map_length > page_boundary_map_length) {
map_length = page_boundary_map_length;
}
/* Create a new mapping starting at the address given */ /* Create a new mapping starting at the address given */

View File

@ -1004,8 +1004,11 @@ static ssize_t uevent_show(struct device *dev, struct device_attribute *attr,
if (!env) if (!env)
return -ENOMEM; return -ENOMEM;
/* Synchronize with really_probe() */
device_lock(dev);
/* let the kset specific function add its keys */ /* let the kset specific function add its keys */
retval = kset->uevent_ops->uevent(kset, &dev->kobj, env); retval = kset->uevent_ops->uevent(kset, &dev->kobj, env);
device_unlock(dev);
if (retval) if (retval)
goto out; goto out;

View File

@ -675,8 +675,8 @@ static int axi_dmac_remove(struct platform_device *pdev)
{ {
struct axi_dmac *dmac = platform_get_drvdata(pdev); struct axi_dmac *dmac = platform_get_drvdata(pdev);
of_dma_controller_free(pdev->dev.of_node);
free_irq(dmac->irq, dmac); free_irq(dmac->irq, dmac);
of_dma_controller_free(pdev->dev.of_node);
tasklet_kill(&dmac->chan.vchan.task); tasklet_kill(&dmac->chan.vchan.task);
dma_async_device_unregister(&dmac->dma_dev); dma_async_device_unregister(&dmac->dma_dev);
clk_disable_unprepare(dmac->clk); clk_disable_unprepare(dmac->clk);

View File

@ -1429,6 +1429,7 @@ module_init(ioat_init_module);
static void __exit ioat_exit_module(void) static void __exit ioat_exit_module(void)
{ {
pci_unregister_driver(&ioat_pci_driver); pci_unregister_driver(&ioat_pci_driver);
kmem_cache_destroy(ioat_sed_cache);
kmem_cache_destroy(ioat_cache); kmem_cache_destroy(ioat_cache);
} }
module_exit(ioat_exit_module); module_exit(ioat_exit_module);

View File

@ -165,6 +165,8 @@ static void sumo_construct_vid_mapping_table(struct amdgpu_device *adev,
for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) { for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) {
if (table[i].ulSupportedSCLK != 0) { if (table[i].ulSupportedSCLK != 0) {
if (table[i].usVoltageIndex >= SUMO_MAX_NUMBER_VOLTAGES)
continue;
vid_mapping_table->entries[table[i].usVoltageIndex].vid_7bit = vid_mapping_table->entries[table[i].usVoltageIndex].vid_7bit =
table[i].usVoltageID; table[i].usVoltageID;
vid_mapping_table->entries[table[i].usVoltageIndex].vid_2bit = vid_mapping_table->entries[table[i].usVoltageIndex].vid_2bit =

View File

@ -197,9 +197,12 @@ EXPORT_SYMBOL(drm_panel_bridge_remove);
static void devm_drm_panel_bridge_release(struct device *dev, void *res) static void devm_drm_panel_bridge_release(struct device *dev, void *res)
{ {
struct drm_bridge **bridge = res; struct drm_bridge *bridge = *(struct drm_bridge **)res;
drm_panel_bridge_remove(*bridge); if (!bridge)
return;
drm_bridge_remove(bridge);
} }
struct drm_bridge *devm_drm_panel_bridge_add(struct device *dev, struct drm_bridge *devm_drm_panel_bridge_add(struct device *dev,

View File

@ -302,6 +302,7 @@ static int vidi_get_modes(struct drm_connector *connector)
struct vidi_context *ctx = ctx_from_connector(connector); struct vidi_context *ctx = ctx_from_connector(connector);
struct edid *edid; struct edid *edid;
int edid_len; int edid_len;
int count;
/* /*
* the edid data comes from user side and it would be set * the edid data comes from user side and it would be set
@ -321,7 +322,11 @@ static int vidi_get_modes(struct drm_connector *connector)
drm_mode_connector_update_edid_property(connector, edid); drm_mode_connector_update_edid_property(connector, edid);
return drm_add_edid_modes(connector, edid); count = drm_add_edid_modes(connector, edid);
kfree(edid);
return count;
} }
static const struct drm_connector_helper_funcs vidi_connector_helper_funcs = { static const struct drm_connector_helper_funcs vidi_connector_helper_funcs = {

View File

@ -208,6 +208,8 @@ static int nv17_tv_get_ld_modes(struct drm_encoder *encoder,
struct drm_display_mode *mode; struct drm_display_mode *mode;
mode = drm_mode_duplicate(encoder->dev, tv_mode); mode = drm_mode_duplicate(encoder->dev, tv_mode);
if (!mode)
continue;
mode->clock = tv_norm->tv_enc_mode.vrefresh * mode->clock = tv_norm->tv_enc_mode.vrefresh *
mode->htotal / 1000 * mode->htotal / 1000 *
@ -257,6 +259,8 @@ static int nv17_tv_get_hd_modes(struct drm_encoder *encoder,
if (modes[i].hdisplay == output_mode->hdisplay && if (modes[i].hdisplay == output_mode->hdisplay &&
modes[i].vdisplay == output_mode->vdisplay) { modes[i].vdisplay == output_mode->vdisplay) {
mode = drm_mode_duplicate(encoder->dev, output_mode); mode = drm_mode_duplicate(encoder->dev, output_mode);
if (!mode)
continue;
mode->type |= DRM_MODE_TYPE_PREFERRED; mode->type |= DRM_MODE_TYPE_PREFERRED;
} else { } else {
@ -264,6 +268,8 @@ static int nv17_tv_get_hd_modes(struct drm_encoder *encoder,
modes[i].vdisplay, 60, false, modes[i].vdisplay, 60, false,
(output_mode->flags & (output_mode->flags &
DRM_MODE_FLAG_INTERLACE), false); DRM_MODE_FLAG_INTERLACE), false);
if (!mode)
continue;
} }
/* CVT modes are sometimes unsuitable... */ /* CVT modes are sometimes unsuitable... */

View File

@ -1621,6 +1621,8 @@ void sumo_construct_vid_mapping_table(struct radeon_device *rdev,
for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) { for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) {
if (table[i].ulSupportedSCLK != 0) { if (table[i].ulSupportedSCLK != 0) {
if (table[i].usVoltageIndex >= SUMO_MAX_NUMBER_VOLTAGES)
continue;
vid_mapping_table->entries[table[i].usVoltageIndex].vid_7bit = vid_mapping_table->entries[table[i].usVoltageIndex].vid_7bit =
table[i].usVoltageID; table[i].usVoltageID;
vid_mapping_table->entries[table[i].usVoltageIndex].vid_2bit = vid_mapping_table->entries[table[i].usVoltageIndex].vid_2bit =

View File

@ -1258,7 +1258,6 @@ static void implement(const struct hid_device *hid, u8 *report,
hid_warn(hid, hid_warn(hid,
"%s() called with too large value %d (n: %d)! (%s)\n", "%s() called with too large value %d (n: %d)! (%s)\n",
__func__, value, n, current->comm); __func__, value, n, current->comm);
WARN_ON(1);
value &= m; value &= m;
} }
} }

View File

@ -294,10 +294,23 @@ static void timesync_onchannelcallback(void *context)
struct ictimesync_ref_data *refdata; struct ictimesync_ref_data *refdata;
u8 *time_txf_buf = util_timesynch.recv_buffer; u8 *time_txf_buf = util_timesynch.recv_buffer;
vmbus_recvpacket(channel, time_txf_buf, /*
PAGE_SIZE, &recvlen, &requestid); * Drain the ring buffer and use the last packet to update
* host_ts
*/
while (1) {
int ret = vmbus_recvpacket(channel, time_txf_buf,
PAGE_SIZE, &recvlen,
&requestid);
if (ret) {
pr_warn_once("TimeSync IC pkt recv failed (Err: %d)\n",
ret);
break;
}
if (!recvlen)
break;
if (recvlen > 0) {
icmsghdrp = (struct icmsg_hdr *)&time_txf_buf[ icmsghdrp = (struct icmsg_hdr *)&time_txf_buf[
sizeof(struct vmbuspipe_hdr)]; sizeof(struct vmbuspipe_hdr)];

View File

@ -263,6 +263,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = {
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xae24), PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xae24),
.driver_data = (kernel_ulong_t)&intel_th_2x, .driver_data = (kernel_ulong_t)&intel_th_2x,
}, },
{
/* Meteor Lake-S */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7f26),
.driver_data = (kernel_ulong_t)&intel_th_2x,
},
{ {
/* Raptor Lake-S */ /* Raptor Lake-S */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7a26), PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7a26),
@ -273,6 +278,26 @@ static const struct pci_device_id intel_th_pci_id_table[] = {
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7e24), PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7e24),
.driver_data = (kernel_ulong_t)&intel_th_2x, .driver_data = (kernel_ulong_t)&intel_th_2x,
}, },
{
/* Granite Rapids */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0963),
.driver_data = (kernel_ulong_t)&intel_th_2x,
},
{
/* Granite Rapids SOC */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x3256),
.driver_data = (kernel_ulong_t)&intel_th_2x,
},
{
/* Sapphire Rapids SOC */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x3456),
.driver_data = (kernel_ulong_t)&intel_th_2x,
},
{
/* Lunar Lake */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa824),
.driver_data = (kernel_ulong_t)&intel_th_2x,
},
{ {
/* Rocket Lake CPU */ /* Rocket Lake CPU */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x4c19), PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x4c19),

View File

@ -25,7 +25,12 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/spinlock.h>
/**
* @process_lock: protect I2C transfer process.
* ocores_process() and ocores_process_timeout() can't run in parallel.
*/
struct ocores_i2c { struct ocores_i2c {
void __iomem *base; void __iomem *base;
u32 reg_shift; u32 reg_shift;
@ -36,6 +41,7 @@ struct ocores_i2c {
int pos; int pos;
int nmsgs; int nmsgs;
int state; /* see STATE_ */ int state; /* see STATE_ */
spinlock_t process_lock;
struct clk *clk; struct clk *clk;
int ip_clock_khz; int ip_clock_khz;
int bus_clock_khz; int bus_clock_khz;
@ -141,19 +147,26 @@ static void ocores_process(struct ocores_i2c *i2c)
{ {
struct i2c_msg *msg = i2c->msg; struct i2c_msg *msg = i2c->msg;
u8 stat = oc_getreg(i2c, OCI2C_STATUS); u8 stat = oc_getreg(i2c, OCI2C_STATUS);
unsigned long flags;
/*
* If we spin here is because we are in timeout, so we are going
* to be in STATE_ERROR. See ocores_process_timeout()
*/
spin_lock_irqsave(&i2c->process_lock, flags);
if ((i2c->state == STATE_DONE) || (i2c->state == STATE_ERROR)) { if ((i2c->state == STATE_DONE) || (i2c->state == STATE_ERROR)) {
/* stop has been sent */ /* stop has been sent */
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_IACK); oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_IACK);
wake_up(&i2c->wait); wake_up(&i2c->wait);
return; goto out;
} }
/* error? */ /* error? */
if (stat & OCI2C_STAT_ARBLOST) { if (stat & OCI2C_STAT_ARBLOST) {
i2c->state = STATE_ERROR; i2c->state = STATE_ERROR;
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_STOP); oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_STOP);
return; goto out;
} }
if ((i2c->state == STATE_START) || (i2c->state == STATE_WRITE)) { if ((i2c->state == STATE_START) || (i2c->state == STATE_WRITE)) {
@ -163,7 +176,7 @@ static void ocores_process(struct ocores_i2c *i2c)
if (stat & OCI2C_STAT_NACK) { if (stat & OCI2C_STAT_NACK) {
i2c->state = STATE_ERROR; i2c->state = STATE_ERROR;
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_STOP); oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_STOP);
return; goto out;
} }
} else } else
msg->buf[i2c->pos++] = oc_getreg(i2c, OCI2C_DATA); msg->buf[i2c->pos++] = oc_getreg(i2c, OCI2C_DATA);
@ -184,14 +197,14 @@ static void ocores_process(struct ocores_i2c *i2c)
oc_setreg(i2c, OCI2C_DATA, addr); oc_setreg(i2c, OCI2C_DATA, addr);
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_START); oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_START);
return; goto out;
} else } else
i2c->state = (msg->flags & I2C_M_RD) i2c->state = (msg->flags & I2C_M_RD)
? STATE_READ : STATE_WRITE; ? STATE_READ : STATE_WRITE;
} else { } else {
i2c->state = STATE_DONE; i2c->state = STATE_DONE;
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_STOP); oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_STOP);
return; goto out;
} }
} }
@ -202,6 +215,9 @@ static void ocores_process(struct ocores_i2c *i2c)
oc_setreg(i2c, OCI2C_DATA, msg->buf[i2c->pos++]); oc_setreg(i2c, OCI2C_DATA, msg->buf[i2c->pos++]);
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_WRITE); oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_WRITE);
} }
out:
spin_unlock_irqrestore(&i2c->process_lock, flags);
} }
static irqreturn_t ocores_isr(int irq, void *dev_id) static irqreturn_t ocores_isr(int irq, void *dev_id)
@ -213,9 +229,24 @@ static irqreturn_t ocores_isr(int irq, void *dev_id)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
/**
* Process timeout event
* @i2c: ocores I2C device instance
*/
static void ocores_process_timeout(struct ocores_i2c *i2c)
{
unsigned long flags;
spin_lock_irqsave(&i2c->process_lock, flags);
i2c->state = STATE_ERROR;
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_STOP);
spin_unlock_irqrestore(&i2c->process_lock, flags);
}
static int ocores_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) static int ocores_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
{ {
struct ocores_i2c *i2c = i2c_get_adapdata(adap); struct ocores_i2c *i2c = i2c_get_adapdata(adap);
int ret;
i2c->msg = msgs; i2c->msg = msgs;
i2c->pos = 0; i2c->pos = 0;
@ -228,11 +259,14 @@ static int ocores_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_START); oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_START);
if (wait_event_timeout(i2c->wait, (i2c->state == STATE_ERROR) || ret = wait_event_timeout(i2c->wait, (i2c->state == STATE_ERROR) ||
(i2c->state == STATE_DONE), HZ)) (i2c->state == STATE_DONE), HZ);
return (i2c->state == STATE_DONE) ? num : -EIO; if (ret == 0) {
else ocores_process_timeout(i2c);
return -ETIMEDOUT; return -ETIMEDOUT;
}
return (i2c->state == STATE_DONE) ? num : -EIO;
} }
static int ocores_init(struct device *dev, struct ocores_i2c *i2c) static int ocores_init(struct device *dev, struct ocores_i2c *i2c)
@ -259,8 +293,8 @@ static int ocores_init(struct device *dev, struct ocores_i2c *i2c)
oc_setreg(i2c, OCI2C_PREHIGH, prescale >> 8); oc_setreg(i2c, OCI2C_PREHIGH, prescale >> 8);
/* Init the device */ /* Init the device */
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_IACK);
oc_setreg(i2c, OCI2C_CONTROL, ctrl | OCI2C_CTRL_IEN | OCI2C_CTRL_EN); oc_setreg(i2c, OCI2C_CONTROL, ctrl | OCI2C_CTRL_IEN | OCI2C_CTRL_EN);
oc_setreg(i2c, OCI2C_CMD, OCI2C_CMD_IACK);
return 0; return 0;
} }
@ -425,6 +459,8 @@ static int ocores_i2c_probe(struct platform_device *pdev)
if (!i2c) if (!i2c)
return -ENOMEM; return -ENOMEM;
spin_lock_init(&i2c->process_lock);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
i2c->base = devm_ioremap_resource(&pdev->dev, res); i2c->base = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(i2c->base)) if (IS_ERR(i2c->base))

View File

@ -160,6 +160,8 @@ static int ad7266_read_raw(struct iio_dev *indio_dev,
ret = ad7266_read_single(st, val, chan->address); ret = ad7266_read_single(st, val, chan->address);
iio_device_release_direct_mode(indio_dev); iio_device_release_direct_mode(indio_dev);
if (ret < 0)
return ret;
*val = (*val >> 2) & 0xfff; *val = (*val >> 2) & 0xfff;
if (chan->scan_type.sign == 's') if (chan->scan_type.sign == 's')
*val = sign_extend32(*val, 11); *val = sign_extend32(*val, 11);

View File

@ -158,7 +158,6 @@ static void ad5592r_gpio_cleanup(struct ad5592r_state *st)
static int ad5592r_reset(struct ad5592r_state *st) static int ad5592r_reset(struct ad5592r_state *st)
{ {
struct gpio_desc *gpio; struct gpio_desc *gpio;
struct iio_dev *iio_dev = iio_priv_to_dev(st);
gpio = devm_gpiod_get_optional(st->dev, "reset", GPIOD_OUT_LOW); gpio = devm_gpiod_get_optional(st->dev, "reset", GPIOD_OUT_LOW);
if (IS_ERR(gpio)) if (IS_ERR(gpio))
@ -168,10 +167,10 @@ static int ad5592r_reset(struct ad5592r_state *st)
udelay(1); udelay(1);
gpiod_set_value(gpio, 1); gpiod_set_value(gpio, 1);
} else { } else {
mutex_lock(&iio_dev->mlock); mutex_lock(&st->lock);
/* Writing this magic value resets the device */ /* Writing this magic value resets the device */
st->ops->reg_write(st, AD5592R_REG_RESET, 0xdac); st->ops->reg_write(st, AD5592R_REG_RESET, 0xdac);
mutex_unlock(&iio_dev->mlock); mutex_unlock(&st->lock);
} }
udelay(250); udelay(250);
@ -199,7 +198,6 @@ static int ad5592r_set_channel_modes(struct ad5592r_state *st)
const struct ad5592r_rw_ops *ops = st->ops; const struct ad5592r_rw_ops *ops = st->ops;
int ret; int ret;
unsigned i; unsigned i;
struct iio_dev *iio_dev = iio_priv_to_dev(st);
u8 pulldown = 0, tristate = 0, dac = 0, adc = 0; u8 pulldown = 0, tristate = 0, dac = 0, adc = 0;
u16 read_back; u16 read_back;
@ -249,7 +247,7 @@ static int ad5592r_set_channel_modes(struct ad5592r_state *st)
} }
} }
mutex_lock(&iio_dev->mlock); mutex_lock(&st->lock);
/* Pull down unused pins to GND */ /* Pull down unused pins to GND */
ret = ops->reg_write(st, AD5592R_REG_PULLDOWN, pulldown); ret = ops->reg_write(st, AD5592R_REG_PULLDOWN, pulldown);
@ -287,7 +285,7 @@ static int ad5592r_set_channel_modes(struct ad5592r_state *st)
ret = -EIO; ret = -EIO;
err_unlock: err_unlock:
mutex_unlock(&iio_dev->mlock); mutex_unlock(&st->lock);
return ret; return ret;
} }
@ -316,11 +314,11 @@ static int ad5592r_write_raw(struct iio_dev *iio_dev,
if (!chan->output) if (!chan->output)
return -EINVAL; return -EINVAL;
mutex_lock(&iio_dev->mlock); mutex_lock(&st->lock);
ret = st->ops->write_dac(st, chan->channel, val); ret = st->ops->write_dac(st, chan->channel, val);
if (!ret) if (!ret)
st->cached_dac[chan->channel] = val; st->cached_dac[chan->channel] = val;
mutex_unlock(&iio_dev->mlock); mutex_unlock(&st->lock);
return ret; return ret;
case IIO_CHAN_INFO_SCALE: case IIO_CHAN_INFO_SCALE:
if (chan->type == IIO_VOLTAGE) { if (chan->type == IIO_VOLTAGE) {
@ -335,12 +333,12 @@ static int ad5592r_write_raw(struct iio_dev *iio_dev,
else else
return -EINVAL; return -EINVAL;
mutex_lock(&iio_dev->mlock); mutex_lock(&st->lock);
ret = st->ops->reg_read(st, AD5592R_REG_CTRL, ret = st->ops->reg_read(st, AD5592R_REG_CTRL,
&st->cached_gp_ctrl); &st->cached_gp_ctrl);
if (ret < 0) { if (ret < 0) {
mutex_unlock(&iio_dev->mlock); mutex_unlock(&st->lock);
return ret; return ret;
} }
@ -362,7 +360,7 @@ static int ad5592r_write_raw(struct iio_dev *iio_dev,
ret = st->ops->reg_write(st, AD5592R_REG_CTRL, ret = st->ops->reg_write(st, AD5592R_REG_CTRL,
st->cached_gp_ctrl); st->cached_gp_ctrl);
mutex_unlock(&iio_dev->mlock); mutex_unlock(&st->lock);
return ret; return ret;
} }
@ -380,11 +378,11 @@ static int ad5592r_read_raw(struct iio_dev *iio_dev,
{ {
struct ad5592r_state *st = iio_priv(iio_dev); struct ad5592r_state *st = iio_priv(iio_dev);
u16 read_val; u16 read_val;
int ret; int ret, mult;
switch (m) { switch (m) {
case IIO_CHAN_INFO_RAW: case IIO_CHAN_INFO_RAW:
mutex_lock(&iio_dev->mlock); mutex_lock(&st->lock);
if (!chan->output) { if (!chan->output) {
ret = st->ops->read_adc(st, chan->channel, &read_val); ret = st->ops->read_adc(st, chan->channel, &read_val);
@ -417,29 +415,27 @@ static int ad5592r_read_raw(struct iio_dev *iio_dev,
s64 tmp = *val * (3767897513LL / 25LL); s64 tmp = *val * (3767897513LL / 25LL);
*val = div_s64_rem(tmp, 1000000000LL, val2); *val = div_s64_rem(tmp, 1000000000LL, val2);
return IIO_VAL_INT_PLUS_MICRO; return IIO_VAL_INT_PLUS_NANO;
} else {
int mult;
mutex_lock(&iio_dev->mlock);
if (chan->output)
mult = !!(st->cached_gp_ctrl &
AD5592R_REG_CTRL_DAC_RANGE);
else
mult = !!(st->cached_gp_ctrl &
AD5592R_REG_CTRL_ADC_RANGE);
*val *= ++mult;
*val2 = chan->scan_type.realbits;
ret = IIO_VAL_FRACTIONAL_LOG2;
} }
mutex_lock(&st->lock);
if (chan->output)
mult = !!(st->cached_gp_ctrl &
AD5592R_REG_CTRL_DAC_RANGE);
else
mult = !!(st->cached_gp_ctrl &
AD5592R_REG_CTRL_ADC_RANGE);
*val *= ++mult;
*val2 = chan->scan_type.realbits;
ret = IIO_VAL_FRACTIONAL_LOG2;
break; break;
case IIO_CHAN_INFO_OFFSET: case IIO_CHAN_INFO_OFFSET:
ret = ad5592r_get_vref(st); ret = ad5592r_get_vref(st);
mutex_lock(&iio_dev->mlock); mutex_lock(&st->lock);
if (st->cached_gp_ctrl & AD5592R_REG_CTRL_ADC_RANGE) if (st->cached_gp_ctrl & AD5592R_REG_CTRL_ADC_RANGE)
*val = (-34365 * 25) / ret; *val = (-34365 * 25) / ret;
@ -452,7 +448,7 @@ static int ad5592r_read_raw(struct iio_dev *iio_dev,
} }
unlock: unlock:
mutex_unlock(&iio_dev->mlock); mutex_unlock(&st->lock);
return ret; return ret;
} }
@ -627,6 +623,8 @@ int ad5592r_probe(struct device *dev, const char *name,
iio_dev->info = &ad5592r_info; iio_dev->info = &ad5592r_info;
iio_dev->modes = INDIO_DIRECT_MODE; iio_dev->modes = INDIO_DIRECT_MODE;
mutex_init(&st->lock);
ad5592r_init_scales(st, ad5592r_get_vref(st)); ad5592r_init_scales(st, ad5592r_get_vref(st));
ret = ad5592r_reset(st); ret = ad5592r_reset(st);

View File

@ -53,6 +53,7 @@ struct ad5592r_state {
struct regulator *reg; struct regulator *reg;
struct gpio_chip gpiochip; struct gpio_chip gpiochip;
struct mutex gpio_lock; /* Protect cached gpio_out, gpio_val, etc. */ struct mutex gpio_lock; /* Protect cached gpio_out, gpio_val, etc. */
struct mutex lock;
unsigned int num_channels; unsigned int num_channels;
const struct ad5592r_rw_ops *ops; const struct ad5592r_rw_ops *ops;
int scale_avail[2][2]; int scale_avail[2][2];

View File

@ -1337,19 +1337,19 @@ static int input_print_modalias_bits(char *buf, int size,
char name, unsigned long *bm, char name, unsigned long *bm,
unsigned int min_bit, unsigned int max_bit) unsigned int min_bit, unsigned int max_bit)
{ {
int len = 0, i; int bit = min_bit;
int len = 0;
len += snprintf(buf, max(size, 0), "%c", name); len += snprintf(buf, max(size, 0), "%c", name);
for (i = min_bit; i < max_bit; i++) for_each_set_bit_from(bit, bm, max_bit)
if (bm[BIT_WORD(i)] & BIT_MASK(i)) len += snprintf(buf + len, max(size - len, 0), "%X,", bit);
len += snprintf(buf + len, max(size - len, 0), "%X,", i);
return len; return len;
} }
static int input_print_modalias(char *buf, int size, struct input_dev *id, static int input_print_modalias_parts(char *buf, int size, int full_len,
int add_cr) struct input_dev *id)
{ {
int len; int len, klen, remainder, space;
len = snprintf(buf, max(size, 0), len = snprintf(buf, max(size, 0),
"input:b%04Xv%04Xp%04Xe%04X-", "input:b%04Xv%04Xp%04Xe%04X-",
@ -1358,8 +1358,49 @@ static int input_print_modalias(char *buf, int size, struct input_dev *id,
len += input_print_modalias_bits(buf + len, size - len, len += input_print_modalias_bits(buf + len, size - len,
'e', id->evbit, 0, EV_MAX); 'e', id->evbit, 0, EV_MAX);
len += input_print_modalias_bits(buf + len, size - len,
/*
* Calculate the remaining space in the buffer making sure we
* have place for the terminating 0.
*/
space = max(size - (len + 1), 0);
klen = input_print_modalias_bits(buf + len, size - len,
'k', id->keybit, KEY_MIN_INTERESTING, KEY_MAX); 'k', id->keybit, KEY_MIN_INTERESTING, KEY_MAX);
len += klen;
/*
* If we have more data than we can fit in the buffer, check
* if we can trim key data to fit in the rest. We will indicate
* that key data is incomplete by adding "+" sign at the end, like
* this: * "k1,2,3,45,+,".
*
* Note that we shortest key info (if present) is "k+," so we
* can only try to trim if key data is longer than that.
*/
if (full_len && size < full_len + 1 && klen > 3) {
remainder = full_len - len;
/*
* We can only trim if we have space for the remainder
* and also for at least "k+," which is 3 more characters.
*/
if (remainder <= space - 3) {
int i;
/*
* We are guaranteed to have 'k' in the buffer, so
* we need at least 3 additional bytes for storing
* "+," in addition to the remainder.
*/
for (i = size - 1 - remainder - 3; i >= 0; i--) {
if (buf[i] == 'k' || buf[i] == ',') {
strcpy(buf + i + 1, "+,");
len = i + 3; /* Not counting '\0' */
break;
}
}
}
}
len += input_print_modalias_bits(buf + len, size - len, len += input_print_modalias_bits(buf + len, size - len,
'r', id->relbit, 0, REL_MAX); 'r', id->relbit, 0, REL_MAX);
len += input_print_modalias_bits(buf + len, size - len, len += input_print_modalias_bits(buf + len, size - len,
@ -1375,12 +1416,25 @@ static int input_print_modalias(char *buf, int size, struct input_dev *id,
len += input_print_modalias_bits(buf + len, size - len, len += input_print_modalias_bits(buf + len, size - len,
'w', id->swbit, 0, SW_MAX); 'w', id->swbit, 0, SW_MAX);
if (add_cr)
len += snprintf(buf + len, max(size - len, 0), "\n");
return len; return len;
} }
static int input_print_modalias(char *buf, int size, struct input_dev *id)
{
int full_len;
/*
* Printing is done in 2 passes: first one figures out total length
* needed for the modalias string, second one will try to trim key
* data in case when buffer is too small for the entire modalias.
* If the buffer is too small regardless, it will fill as much as it
* can (without trimming key data) into the buffer and leave it to
* the caller to figure out what to do with the result.
*/
full_len = input_print_modalias_parts(NULL, 0, 0, id);
return input_print_modalias_parts(buf, size, full_len, id);
}
static ssize_t input_dev_show_modalias(struct device *dev, static ssize_t input_dev_show_modalias(struct device *dev,
struct device_attribute *attr, struct device_attribute *attr,
char *buf) char *buf)
@ -1388,7 +1442,9 @@ static ssize_t input_dev_show_modalias(struct device *dev,
struct input_dev *id = to_input_dev(dev); struct input_dev *id = to_input_dev(dev);
ssize_t len; ssize_t len;
len = input_print_modalias(buf, PAGE_SIZE, id, 1); len = input_print_modalias(buf, PAGE_SIZE, id);
if (len < PAGE_SIZE - 2)
len += snprintf(buf + len, PAGE_SIZE - len, "\n");
return min_t(int, len, PAGE_SIZE); return min_t(int, len, PAGE_SIZE);
} }
@ -1561,6 +1617,23 @@ static int input_add_uevent_bm_var(struct kobj_uevent_env *env,
return 0; return 0;
} }
/*
* This is a pretty gross hack. When building uevent data the driver core
* may try adding more environment variables to kobj_uevent_env without
* telling us, so we have no idea how much of the buffer we can use to
* avoid overflows/-ENOMEM elsewhere. To work around this let's artificially
* reduce amount of memory we will use for the modalias environment variable.
*
* The potential additions are:
*
* SEQNUM=18446744073709551615 - (%llu - 28 bytes)
* HOME=/ (6 bytes)
* PATH=/sbin:/bin:/usr/sbin:/usr/bin (34 bytes)
*
* 68 bytes total. Allow extra buffer - 96 bytes
*/
#define UEVENT_ENV_EXTRA_LEN 96
static int input_add_uevent_modalias_var(struct kobj_uevent_env *env, static int input_add_uevent_modalias_var(struct kobj_uevent_env *env,
struct input_dev *dev) struct input_dev *dev)
{ {
@ -1570,9 +1643,11 @@ static int input_add_uevent_modalias_var(struct kobj_uevent_env *env,
return -ENOMEM; return -ENOMEM;
len = input_print_modalias(&env->buf[env->buflen - 1], len = input_print_modalias(&env->buf[env->buflen - 1],
sizeof(env->buf) - env->buflen, (int)sizeof(env->buf) - env->buflen -
dev, 0); UEVENT_ENV_EXTRA_LEN,
if (len >= (sizeof(env->buf) - env->buflen)) dev);
if (len >= ((int)sizeof(env->buf) - env->buflen -
UEVENT_ENV_EXTRA_LEN))
return -ENOMEM; return -ENOMEM;
env->buflen += len; env->buflen += len;

View File

@ -1392,8 +1392,17 @@ static int __init init_iommu_from_acpi(struct amd_iommu *iommu,
return 0; return 0;
} }
static void __init free_sysfs(struct amd_iommu *iommu)
{
if (iommu->iommu.dev) {
iommu_device_unregister(&iommu->iommu);
iommu_device_sysfs_remove(&iommu->iommu);
}
}
static void __init free_iommu_one(struct amd_iommu *iommu) static void __init free_iommu_one(struct amd_iommu *iommu)
{ {
free_sysfs(iommu);
free_command_buffer(iommu); free_command_buffer(iommu);
free_event_buffer(iommu); free_event_buffer(iommu);
free_ppr_log(iommu); free_ppr_log(iommu);

View File

@ -953,7 +953,7 @@ int dvb_usercopy(struct file *file,
int (*func)(struct file *file, int (*func)(struct file *file,
unsigned int cmd, void *arg)) unsigned int cmd, void *arg))
{ {
char sbuf[128]; char sbuf[128] = {};
void *mbuf = NULL; void *mbuf = NULL;
void *parg = NULL; void *parg = NULL;
int err = -EINVAL; int err = -EINVAL;

View File

@ -253,15 +253,14 @@ int __must_check media_devnode_register(struct media_device *mdev,
devnode->cdev.owner = owner; devnode->cdev.owner = owner;
/* Part 3: Add the media and char device */ /* Part 3: Add the media and char device */
set_bit(MEDIA_FLAG_REGISTERED, &devnode->flags);
ret = cdev_device_add(&devnode->cdev, &devnode->dev); ret = cdev_device_add(&devnode->cdev, &devnode->dev);
if (ret < 0) { if (ret < 0) {
clear_bit(MEDIA_FLAG_REGISTERED, &devnode->flags);
pr_err("%s: cdev_device_add failed\n", __func__); pr_err("%s: cdev_device_add failed\n", __func__);
goto cdev_add_error; goto cdev_add_error;
} }
/* Part 4: Activate this minor. The char device can now be used. */
set_bit(MEDIA_FLAG_REGISTERED, &devnode->flags);
return 0; return 0;
cdev_add_error: cdev_add_error:

View File

@ -372,8 +372,10 @@ static int mei_me_pci_resume(struct device *device)
} }
err = mei_restart(dev); err = mei_restart(dev);
if (err) if (err) {
free_irq(pdev->irq, dev);
return err; return err;
}
/* Start timer if stopped in suspend */ /* Start timer if stopped in suspend */
schedule_delayed_work(&dev->timer_work, HZ); schedule_delayed_work(&dev->timer_work, HZ);

View File

@ -17,6 +17,7 @@
#include <linux/vmw_vmci_api.h> #include <linux/vmw_vmci_api.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/nospec.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/rculist.h> #include <linux/rculist.h>
@ -94,9 +95,12 @@ static void event_deliver(struct vmci_event_msg *event_msg)
{ {
struct vmci_subscription *cur; struct vmci_subscription *cur;
struct list_head *subscriber_list; struct list_head *subscriber_list;
u32 sanitized_event, max_vmci_event;
rcu_read_lock(); rcu_read_lock();
subscriber_list = &subscriber_array[event_msg->event_data.event]; max_vmci_event = ARRAY_SIZE(subscriber_array);
sanitized_event = array_index_nospec(event_msg->event_data.event, max_vmci_event);
subscriber_list = &subscriber_array[sanitized_event];
list_for_each_entry_rcu(cur, subscriber_list, node) { list_for_each_entry_rcu(cur, subscriber_list, node) {
cur->callback(cur->id, &event_msg->event_data, cur->callback(cur->id, &event_msg->event_data,
cur->callback_data); cur->callback_data);

View File

@ -846,7 +846,7 @@ static int jmicron_pmos(struct sdhci_pci_chip *chip, int on)
ret = pci_read_config_byte(chip->pdev, 0xAE, &scratch); ret = pci_read_config_byte(chip->pdev, 0xAE, &scratch);
if (ret) if (ret)
return ret; goto fail;
/* /*
* Turn PMOS on [bit 0], set over current detection to 2.4 V * Turn PMOS on [bit 0], set over current detection to 2.4 V
@ -857,7 +857,10 @@ static int jmicron_pmos(struct sdhci_pci_chip *chip, int on)
else else
scratch &= ~0x47; scratch &= ~0x47;
return pci_write_config_byte(chip->pdev, 0xAE, scratch); ret = pci_write_config_byte(chip->pdev, 0xAE, scratch);
fail:
return pcibios_err_to_errno(ret);
} }
static int jmicron_probe(struct sdhci_pci_chip *chip) static int jmicron_probe(struct sdhci_pci_chip *chip)
@ -1718,7 +1721,7 @@ static int sdhci_pci_probe(struct pci_dev *pdev,
ret = pci_read_config_byte(pdev, PCI_SLOT_INFO, &slots); ret = pci_read_config_byte(pdev, PCI_SLOT_INFO, &slots);
if (ret) if (ret)
return ret; return pcibios_err_to_errno(ret);
slots = PCI_SLOT_INFO_SLOTS(slots) + 1; slots = PCI_SLOT_INFO_SLOTS(slots) + 1;
dev_dbg(&pdev->dev, "found %d slot(s)\n", slots); dev_dbg(&pdev->dev, "found %d slot(s)\n", slots);
@ -1729,7 +1732,7 @@ static int sdhci_pci_probe(struct pci_dev *pdev,
ret = pci_read_config_byte(pdev, PCI_SLOT_INFO, &first_bar); ret = pci_read_config_byte(pdev, PCI_SLOT_INFO, &first_bar);
if (ret) if (ret)
return ret; return pcibios_err_to_errno(ret);
first_bar &= PCI_SLOT_INFO_FIRST_BAR_MASK; first_bar &= PCI_SLOT_INFO_FIRST_BAR_MASK;

View File

@ -357,7 +357,8 @@ static void ax88179_status(struct usbnet *dev, struct urb *urb)
if (netif_carrier_ok(dev->net) != link) { if (netif_carrier_ok(dev->net) != link) {
usbnet_link_change(dev, link, 1); usbnet_link_change(dev, link, 1);
netdev_info(dev->net, "ax88179 - Link status is: %d\n", link); if (!link)
netdev_info(dev->net, "ax88179 - Link status is: 0\n");
} }
} }
@ -1549,6 +1550,7 @@ static int ax88179_link_reset(struct usbnet *dev)
GMII_PHY_PHYSR, 2, &tmp16); GMII_PHY_PHYSR, 2, &tmp16);
if (!(tmp16 & GMII_PHY_PHYSR_LINK)) { if (!(tmp16 & GMII_PHY_PHYSR_LINK)) {
netdev_info(dev->net, "ax88179 - Link status is: 0\n");
return 0; return 0;
} else if (GMII_PHY_PHYSR_GIGA == (tmp16 & GMII_PHY_PHYSR_SMASK)) { } else if (GMII_PHY_PHYSR_GIGA == (tmp16 & GMII_PHY_PHYSR_SMASK)) {
mode |= AX_MEDIUM_GIGAMODE | AX_MEDIUM_EN_125MHZ; mode |= AX_MEDIUM_GIGAMODE | AX_MEDIUM_EN_125MHZ;
@ -1586,6 +1588,8 @@ static int ax88179_link_reset(struct usbnet *dev)
netif_carrier_on(dev->net); netif_carrier_on(dev->net);
netdev_info(dev->net, "ax88179 - Link status is: 1\n");
return 0; return 0;
} }

View File

@ -803,7 +803,8 @@ static int rtl8150_get_link_ksettings(struct net_device *netdev,
struct ethtool_link_ksettings *ecmd) struct ethtool_link_ksettings *ecmd)
{ {
rtl8150_t *dev = netdev_priv(netdev); rtl8150_t *dev = netdev_priv(netdev);
short lpa, bmcr; short lpa = 0;
short bmcr = 0;
u32 supported; u32 supported;
supported = (SUPPORTED_10baseT_Half | supported = (SUPPORTED_10baseT_Half |

View File

@ -2568,8 +2568,15 @@ static int virtnet_probe(struct virtio_device *vdev)
dev->features |= dev->hw_features & NETIF_F_ALL_TSO; dev->features |= dev->hw_features & NETIF_F_ALL_TSO;
/* (!csum && gso) case will be fixed by register_netdev() */ /* (!csum && gso) case will be fixed by register_netdev() */
} }
if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_CSUM))
dev->features |= NETIF_F_RXCSUM; /* 1. With VIRTIO_NET_F_GUEST_CSUM negotiation, the driver doesn't
* need to calculate checksums for partially checksummed packets,
* as they're considered valid by the upper layer.
* 2. Without VIRTIO_NET_F_GUEST_CSUM negotiation, the driver only
* receives fully checksummed packets. The device may assist in
* validating these packets' checksums, so the driver won't have to.
*/
dev->features |= NETIF_F_RXCSUM;
dev->vlan_features = dev->features; dev->vlan_features = dev->features;

View File

@ -1013,6 +1013,10 @@ static bool vxlan_snoop(struct net_device *dev,
struct vxlan_fdb *f; struct vxlan_fdb *f;
u32 ifindex = 0; u32 ifindex = 0;
/* Ignore packets from invalid src-address */
if (!is_valid_ether_addr(src_mac))
return true;
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
if (src_ip->sa.sa_family == AF_INET6 && if (src_ip->sa.sa_family == AF_INET6 &&
(ipv6_addr_type(&src_ip->sin6.sin6_addr) & IPV6_ADDR_LINKLOCAL)) (ipv6_addr_type(&src_ip->sin6.sin6_addr) & IPV6_ADDR_LINKLOCAL))

View File

@ -149,20 +149,10 @@ void iwl_mvm_mfu_assert_dump_notif(struct iwl_mvm *mvm,
{ {
struct iwl_rx_packet *pkt = rxb_addr(rxb); struct iwl_rx_packet *pkt = rxb_addr(rxb);
struct iwl_mfu_assert_dump_notif *mfu_dump_notif = (void *)pkt->data; struct iwl_mfu_assert_dump_notif *mfu_dump_notif = (void *)pkt->data;
__le32 *dump_data = mfu_dump_notif->data;
int n_words = le32_to_cpu(mfu_dump_notif->data_size) / sizeof(__le32);
int i;
if (mfu_dump_notif->index_num == 0) if (mfu_dump_notif->index_num == 0)
IWL_INFO(mvm, "MFUART assert id 0x%x occurred\n", IWL_INFO(mvm, "MFUART assert id 0x%x occurred\n",
le32_to_cpu(mfu_dump_notif->assert_id)); le32_to_cpu(mfu_dump_notif->assert_id));
for (i = 0; i < n_words; i++)
IWL_DEBUG_INFO(mvm,
"MFUART assert dump, dword %u: 0x%08x\n",
le16_to_cpu(mfu_dump_notif->index_num) *
n_words + i,
le32_to_cpu(dump_data[i]));
} }
static bool iwl_alive_fn(struct iwl_notif_wait_data *notif_wait, static bool iwl_alive_fn(struct iwl_notif_wait_data *notif_wait,

View File

@ -1050,8 +1050,8 @@ static struct pinctrl *create_pinctrl(struct device *dev,
* an -EPROBE_DEFER later, as that is the worst case. * an -EPROBE_DEFER later, as that is the worst case.
*/ */
if (ret == -EPROBE_DEFER) { if (ret == -EPROBE_DEFER) {
pinctrl_free(p, false);
mutex_unlock(&pinctrl_maps_mutex); mutex_unlock(&pinctrl_maps_mutex);
pinctrl_free(p, false);
return ERR_PTR(ret); return ERR_PTR(ret);
} }
} }

View File

@ -658,23 +658,68 @@ static struct rockchip_mux_recalced_data rk3128_mux_recalced_data[] = {
static struct rockchip_mux_recalced_data rk3328_mux_recalced_data[] = { static struct rockchip_mux_recalced_data rk3328_mux_recalced_data[] = {
{ {
.num = 2, /* gpio2_b7_sel */
.pin = 12,
.reg = 0x24,
.bit = 8,
.mask = 0x3
}, {
.num = 2, .num = 2,
.pin = 15, .pin = 15,
.reg = 0x28, .reg = 0x28,
.bit = 0, .bit = 0,
.mask = 0x7 .mask = 0x7
}, { }, {
/* gpio2_c7_sel */
.num = 2, .num = 2,
.pin = 23, .pin = 23,
.reg = 0x30, .reg = 0x30,
.bit = 14, .bit = 14,
.mask = 0x3 .mask = 0x3
}, {
/* gpio3_b1_sel */
.num = 3,
.pin = 9,
.reg = 0x44,
.bit = 2,
.mask = 0x3
}, {
/* gpio3_b2_sel */
.num = 3,
.pin = 10,
.reg = 0x44,
.bit = 4,
.mask = 0x3
}, {
/* gpio3_b3_sel */
.num = 3,
.pin = 11,
.reg = 0x44,
.bit = 6,
.mask = 0x3
}, {
/* gpio3_b4_sel */
.num = 3,
.pin = 12,
.reg = 0x44,
.bit = 8,
.mask = 0x3
}, {
/* gpio3_b5_sel */
.num = 3,
.pin = 13,
.reg = 0x44,
.bit = 10,
.mask = 0x3
}, {
/* gpio3_b6_sel */
.num = 3,
.pin = 14,
.reg = 0x44,
.bit = 12,
.mask = 0x3
}, {
/* gpio3_b7_sel */
.num = 3,
.pin = 15,
.reg = 0x44,
.bit = 14,
.mask = 0x3
}, },
}; };
@ -1976,8 +2021,10 @@ static int rockchip_pmx_set(struct pinctrl_dev *pctldev, unsigned selector,
if (ret) { if (ret) {
/* revert the already done pin settings */ /* revert the already done pin settings */
for (cnt--; cnt >= 0; cnt--) for (cnt--; cnt >= 0; cnt--) {
bank = pin_to_bank(info, pins[cnt]);
rockchip_set_mux(bank, pins[cnt] - bank->pin_base, 0); rockchip_set_mux(bank, pins[cnt] - bank->pin_base, 0);
}
return ret; return ret;
} }
@ -3416,7 +3463,7 @@ static struct rockchip_pin_bank rk3328_pin_banks[] = {
PIN_BANK_IOMUX_FLAGS(0, 32, "gpio0", 0, 0, 0, 0), PIN_BANK_IOMUX_FLAGS(0, 32, "gpio0", 0, 0, 0, 0),
PIN_BANK_IOMUX_FLAGS(1, 32, "gpio1", 0, 0, 0, 0), PIN_BANK_IOMUX_FLAGS(1, 32, "gpio1", 0, 0, 0, 0),
PIN_BANK_IOMUX_FLAGS(2, 32, "gpio2", 0, PIN_BANK_IOMUX_FLAGS(2, 32, "gpio2", 0,
IOMUX_WIDTH_3BIT, 0,
IOMUX_WIDTH_3BIT, IOMUX_WIDTH_3BIT,
0), 0),
PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3", PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3",

View File

@ -97,7 +97,8 @@ int ptp_set_pinfunc(struct ptp_clock *ptp, unsigned int pin,
} }
if (info->verify(info, pin, func, chan)) { if (info->verify(info, pin, func, chan)) {
pr_err("driver cannot use function %u on pin %u\n", func, chan); pr_err("driver cannot use function %u and channel %u on pin %u\n",
func, chan, pin);
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }

View File

@ -84,6 +84,9 @@ static int stm32_pwm_config(struct stm32_pwm *priv, int ch,
prd = div; prd = div;
if (!prd)
return -EINVAL;
if (prescaler > MAX_TIM_PSC) if (prescaler > MAX_TIM_PSC)
return -EINVAL; return -EINVAL;

View File

@ -2618,6 +2618,7 @@ struct regmap *regulator_get_regmap(struct regulator *regulator)
return map ? map : ERR_PTR(-EOPNOTSUPP); return map ? map : ERR_PTR(-EOPNOTSUPP);
} }
EXPORT_SYMBOL_GPL(regulator_get_regmap);
/** /**
* regulator_get_hardware_vsel_register - get the HW voltage selector register * regulator_get_hardware_vsel_register - get the HW voltage selector register

View File

@ -5438,6 +5438,12 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
ioc->pd_handles_sz = (ioc->facts.MaxDevHandle / 8); ioc->pd_handles_sz = (ioc->facts.MaxDevHandle / 8);
if (ioc->facts.MaxDevHandle % 8) if (ioc->facts.MaxDevHandle % 8)
ioc->pd_handles_sz++; ioc->pd_handles_sz++;
/*
* pd_handles_sz should have, at least, the minimal room for
* set_bit()/test_bit(), otherwise out-of-memory touch may occur.
*/
ioc->pd_handles_sz = ALIGN(ioc->pd_handles_sz, sizeof(unsigned long));
ioc->pd_handles = kzalloc(ioc->pd_handles_sz, ioc->pd_handles = kzalloc(ioc->pd_handles_sz,
GFP_KERNEL); GFP_KERNEL);
if (!ioc->pd_handles) { if (!ioc->pd_handles) {
@ -5455,6 +5461,13 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
ioc->pend_os_device_add_sz = (ioc->facts.MaxDevHandle / 8); ioc->pend_os_device_add_sz = (ioc->facts.MaxDevHandle / 8);
if (ioc->facts.MaxDevHandle % 8) if (ioc->facts.MaxDevHandle % 8)
ioc->pend_os_device_add_sz++; ioc->pend_os_device_add_sz++;
/*
* pend_os_device_add_sz should have, at least, the minimal room for
* set_bit()/test_bit(), otherwise out-of-memory may occur.
*/
ioc->pend_os_device_add_sz = ALIGN(ioc->pend_os_device_add_sz,
sizeof(unsigned long));
ioc->pend_os_device_add = kzalloc(ioc->pend_os_device_add_sz, ioc->pend_os_device_add = kzalloc(ioc->pend_os_device_add_sz,
GFP_KERNEL); GFP_KERNEL);
if (!ioc->pend_os_device_add) { if (!ioc->pend_os_device_add) {
@ -5537,6 +5550,13 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
if (r) if (r)
goto out_free_resources; goto out_free_resources;
/*
* Copy current copy of IOCFacts in prev_fw_facts
* and it will be used during online firmware upgrade.
*/
memcpy(&ioc->prev_fw_facts, &ioc->facts,
sizeof(struct mpt3sas_facts));
ioc->non_operational_loop = 0; ioc->non_operational_loop = 0;
ioc->got_task_abort_from_ioctl = 0; ioc->got_task_abort_from_ioctl = 0;
return 0; return 0;
@ -5705,6 +5725,91 @@ mpt3sas_wait_for_commands_to_complete(struct MPT3SAS_ADAPTER *ioc)
wait_event_timeout(ioc->reset_wq, ioc->pending_io_count == 0, 10 * HZ); wait_event_timeout(ioc->reset_wq, ioc->pending_io_count == 0, 10 * HZ);
} }
/**
* _base_check_ioc_facts_changes - Look for increase/decrease of IOCFacts
* attributes during online firmware upgrade and update the corresponding
* IOC variables accordingly.
*
* @ioc: Pointer to MPT_ADAPTER structure
*/
static int
_base_check_ioc_facts_changes(struct MPT3SAS_ADAPTER *ioc)
{
u16 pd_handles_sz;
void *pd_handles = NULL, *blocking_handles = NULL;
void *pend_os_device_add = NULL, *device_remove_in_progress = NULL;
struct mpt3sas_facts *old_facts = &ioc->prev_fw_facts;
if (ioc->facts.MaxDevHandle > old_facts->MaxDevHandle) {
pd_handles_sz = (ioc->facts.MaxDevHandle / 8);
if (ioc->facts.MaxDevHandle % 8)
pd_handles_sz++;
/*
* pd_handles should have, at least, the minimal room for
* set_bit()/test_bit(), otherwise out-of-memory touch may
* occur.
*/
pd_handles_sz = ALIGN(pd_handles_sz, sizeof(unsigned long));
pd_handles = krealloc(ioc->pd_handles, pd_handles_sz,
GFP_KERNEL);
if (!pd_handles) {
ioc_info(ioc,
"Unable to allocate the memory for pd_handles of sz: %d\n",
pd_handles_sz);
return -ENOMEM;
}
memset(pd_handles + ioc->pd_handles_sz, 0,
(pd_handles_sz - ioc->pd_handles_sz));
ioc->pd_handles = pd_handles;
blocking_handles = krealloc(ioc->blocking_handles,
pd_handles_sz, GFP_KERNEL);
if (!blocking_handles) {
ioc_info(ioc,
"Unable to allocate the memory for "
"blocking_handles of sz: %d\n",
pd_handles_sz);
return -ENOMEM;
}
memset(blocking_handles + ioc->pd_handles_sz, 0,
(pd_handles_sz - ioc->pd_handles_sz));
ioc->blocking_handles = blocking_handles;
ioc->pd_handles_sz = pd_handles_sz;
pend_os_device_add = krealloc(ioc->pend_os_device_add,
pd_handles_sz, GFP_KERNEL);
if (!pend_os_device_add) {
ioc_info(ioc,
"Unable to allocate the memory for pend_os_device_add of sz: %d\n",
pd_handles_sz);
return -ENOMEM;
}
memset(pend_os_device_add + ioc->pend_os_device_add_sz, 0,
(pd_handles_sz - ioc->pend_os_device_add_sz));
ioc->pend_os_device_add = pend_os_device_add;
ioc->pend_os_device_add_sz = pd_handles_sz;
device_remove_in_progress = krealloc(
ioc->device_remove_in_progress, pd_handles_sz, GFP_KERNEL);
if (!device_remove_in_progress) {
ioc_info(ioc,
"Unable to allocate the memory for "
"device_remove_in_progress of sz: %d\n "
, pd_handles_sz);
return -ENOMEM;
}
memset(device_remove_in_progress +
ioc->device_remove_in_progress_sz, 0,
(pd_handles_sz - ioc->device_remove_in_progress_sz));
ioc->device_remove_in_progress = device_remove_in_progress;
ioc->device_remove_in_progress_sz = pd_handles_sz;
}
memcpy(&ioc->prev_fw_facts, &ioc->facts, sizeof(struct mpt3sas_facts));
return 0;
}
/** /**
* mpt3sas_base_hard_reset_handler - reset controller * mpt3sas_base_hard_reset_handler - reset controller
* @ioc: Pointer to MPT_ADAPTER structure * @ioc: Pointer to MPT_ADAPTER structure
@ -5777,6 +5882,13 @@ mpt3sas_base_hard_reset_handler(struct MPT3SAS_ADAPTER *ioc,
if (r) if (r)
goto out; goto out;
r = _base_check_ioc_facts_changes(ioc);
if (r) {
ioc_info(ioc,
"Some of the parameters got changed in this new firmware"
" image and it requires system reboot\n");
goto out;
}
if (ioc->rdpq_array_enable && !ioc->rdpq_array_capable) if (ioc->rdpq_array_enable && !ioc->rdpq_array_capable)
panic("%s: Issue occurred with flashing controller firmware." panic("%s: Issue occurred with flashing controller firmware."
"Please reboot the system and ensure that the correct" "Please reboot the system and ensure that the correct"

View File

@ -142,6 +142,15 @@
*/ */
#define MPT3SAS_FMT "%s: " #define MPT3SAS_FMT "%s: "
#define ioc_err(ioc, fmt, ...) \
pr_err("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
#define ioc_notice(ioc, fmt, ...) \
pr_notice("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
#define ioc_warn(ioc, fmt, ...) \
pr_warn("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
#define ioc_info(ioc, fmt, ...) \
pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
/* /*
* WarpDrive Specific Log codes * WarpDrive Specific Log codes
*/ */
@ -872,6 +881,7 @@ typedef void (*MPT3SAS_FLUSH_RUNNING_CMDS)(struct MPT3SAS_ADAPTER *ioc);
* @event_log: event log pointer * @event_log: event log pointer
* @event_masks: events that are masked * @event_masks: events that are masked
* @facts: static facts data * @facts: static facts data
* @prev_fw_facts: previous fw facts data
* @pfacts: static port facts data * @pfacts: static port facts data
* @manu_pg0: static manufacturing page 0 * @manu_pg0: static manufacturing page 0
* @manu_pg10: static manufacturing page 10 * @manu_pg10: static manufacturing page 10
@ -1064,6 +1074,7 @@ struct MPT3SAS_ADAPTER {
/* static config pages */ /* static config pages */
struct mpt3sas_facts facts; struct mpt3sas_facts facts;
struct mpt3sas_facts prev_fw_facts;
struct mpt3sas_port_facts *pfacts; struct mpt3sas_port_facts *pfacts;
Mpi2ManufacturingPage0_t manu_pg0; Mpi2ManufacturingPage0_t manu_pg0;
struct Mpi2ManufacturingPage10_t manu_pg10; struct Mpi2ManufacturingPage10_t manu_pg10;

View File

@ -136,15 +136,11 @@ static ssize_t
qedi_dbg_do_not_recover_cmd_read(struct file *filp, char __user *buffer, qedi_dbg_do_not_recover_cmd_read(struct file *filp, char __user *buffer,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
size_t cnt = 0; char buf[64];
int len;
if (*ppos) len = sprintf(buf, "do_not_recover=%d\n", qedi_do_not_recover);
return 0; return simple_read_from_buffer(buffer, count, ppos, buf, len);
cnt = sprintf(buffer, "do_not_recover=%d\n", qedi_do_not_recover);
cnt = min_t(int, count, cnt - *ppos);
*ppos += cnt;
return cnt;
} }
static int static int

View File

@ -22,7 +22,6 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/omap-mailbox.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/remoteproc.h> #include <linux/remoteproc.h>
#include <linux/suspend.h> #include <linux/suspend.h>
@ -140,7 +139,6 @@ static irqreturn_t wkup_m3_txev_handler(int irq, void *ipc_data)
static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc) static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc)
{ {
struct device *dev = m3_ipc->dev; struct device *dev = m3_ipc->dev;
mbox_msg_t dummy_msg = 0;
int ret; int ret;
if (!m3_ipc->mbox) { if (!m3_ipc->mbox) {
@ -156,7 +154,7 @@ static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc)
* the RX callback to avoid multiple interrupts being received * the RX callback to avoid multiple interrupts being received
* by the CM3. * by the CM3.
*/ */
ret = mbox_send_message(m3_ipc->mbox, &dummy_msg); ret = mbox_send_message(m3_ipc->mbox, NULL);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "%s: mbox_send_message() failed: %d\n", dev_err(dev, "%s: mbox_send_message() failed: %d\n",
__func__, ret); __func__, ret);
@ -178,7 +176,6 @@ static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc)
static int wkup_m3_ping_noirq(struct wkup_m3_ipc *m3_ipc) static int wkup_m3_ping_noirq(struct wkup_m3_ipc *m3_ipc)
{ {
struct device *dev = m3_ipc->dev; struct device *dev = m3_ipc->dev;
mbox_msg_t dummy_msg = 0;
int ret; int ret;
if (!m3_ipc->mbox) { if (!m3_ipc->mbox) {
@ -187,7 +184,7 @@ static int wkup_m3_ping_noirq(struct wkup_m3_ipc *m3_ipc)
return -EIO; return -EIO;
} }
ret = mbox_send_message(m3_ipc->mbox, &dummy_msg); ret = mbox_send_message(m3_ipc->mbox, NULL);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "%s: mbox_send_message() failed: %d\n", dev_err(dev, "%s: mbox_send_message() failed: %d\n",
__func__, ret); __func__, ret);

View File

@ -3211,8 +3211,6 @@ static int __init target_core_init_configfs(void)
{ {
struct configfs_subsystem *subsys = &target_core_fabrics; struct configfs_subsystem *subsys = &target_core_fabrics;
struct t10_alua_lu_gp *lu_gp; struct t10_alua_lu_gp *lu_gp;
struct cred *kern_cred;
const struct cred *old_cred;
int ret; int ret;
pr_debug("TARGET_CORE[0]: Loading Generic Kernel Storage" pr_debug("TARGET_CORE[0]: Loading Generic Kernel Storage"
@ -3289,20 +3287,9 @@ static int __init target_core_init_configfs(void)
if (ret < 0) if (ret < 0)
goto out; goto out;
/* We use the kernel credentials to access the target directory */
kern_cred = prepare_kernel_cred(&init_task);
if (!kern_cred) {
ret = -ENOMEM;
goto out;
}
old_cred = override_creds(kern_cred);
revert_creds(old_cred);
put_cred(kern_cred);
return 0; return 0;
out: out:
target_xcopy_release_pt();
configfs_unregister_subsystem(subsys); configfs_unregister_subsystem(subsys);
core_dev_release_virtual_lun0(); core_dev_release_virtual_lun0();
rd_module_exit(); rd_module_exit();

View File

@ -483,7 +483,7 @@ static const struct uart_ops mcf_uart_ops = {
.verify_port = mcf_verify_port, .verify_port = mcf_verify_port,
}; };
static struct mcf_uart mcf_ports[4]; static struct mcf_uart mcf_ports[10];
#define MCF_MAXPORTS ARRAY_SIZE(mcf_ports) #define MCF_MAXPORTS ARRAY_SIZE(mcf_ports)

View File

@ -494,16 +494,28 @@ static bool sc16is7xx_regmap_precious(struct device *dev, unsigned int reg)
return false; return false;
} }
/*
* Configure programmable baud rate generator (divisor) according to the
* desired baud rate.
*
* From the datasheet, the divisor is computed according to:
*
* XTAL1 input frequency
* -----------------------
* prescaler
* divisor = ---------------------------
* baud-rate x sampling-rate
*/
static int sc16is7xx_set_baud(struct uart_port *port, int baud) static int sc16is7xx_set_baud(struct uart_port *port, int baud)
{ {
struct sc16is7xx_port *s = dev_get_drvdata(port->dev); struct sc16is7xx_port *s = dev_get_drvdata(port->dev);
u8 lcr; u8 lcr;
u8 prescaler = 0; unsigned int prescaler = 1;
unsigned long clk = port->uartclk, div = clk / 16 / baud; unsigned long clk = port->uartclk, div = clk / 16 / baud;
if (div > 0xffff) { if (div >= BIT(16)) {
prescaler = SC16IS7XX_MCR_CLKSEL_BIT; prescaler = 4;
div /= 4; div /= prescaler;
} }
/* In an amazing feat of design, the Enhanced Features Register shares /* In an amazing feat of design, the Enhanced Features Register shares
@ -538,9 +550,10 @@ static int sc16is7xx_set_baud(struct uart_port *port, int baud)
mutex_unlock(&s->efr_lock); mutex_unlock(&s->efr_lock);
/* If bit MCR_CLKSEL is set, the divide by 4 prescaler is activated. */
sc16is7xx_port_update(port, SC16IS7XX_MCR_REG, sc16is7xx_port_update(port, SC16IS7XX_MCR_REG,
SC16IS7XX_MCR_CLKSEL_BIT, SC16IS7XX_MCR_CLKSEL_BIT,
prescaler); prescaler == 1 ? 0 : SC16IS7XX_MCR_CLKSEL_BIT);
/* Open the LCR divisors for configuration */ /* Open the LCR divisors for configuration */
sc16is7xx_port_write(port, SC16IS7XX_LCR_REG, sc16is7xx_port_write(port, SC16IS7XX_LCR_REG,
@ -555,7 +568,7 @@ static int sc16is7xx_set_baud(struct uart_port *port, int baud)
/* Put LCR back to the normal mode */ /* Put LCR back to the normal mode */
sc16is7xx_port_write(port, SC16IS7XX_LCR_REG, lcr); sc16is7xx_port_write(port, SC16IS7XX_LCR_REG, lcr);
return DIV_ROUND_CLOSEST(clk / 16, div); return DIV_ROUND_CLOSEST((clk / prescaler) / 16, div);
} }
static void sc16is7xx_handle_rx(struct uart_port *port, unsigned int rxlen, static void sc16is7xx_handle_rx(struct uart_port *port, unsigned int rxlen,

View File

@ -1134,6 +1134,7 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,
struct cxacru_data *instance; struct cxacru_data *instance;
struct usb_device *usb_dev = interface_to_usbdev(intf); struct usb_device *usb_dev = interface_to_usbdev(intf);
struct usb_host_endpoint *cmd_ep = usb_dev->ep_in[CXACRU_EP_CMD]; struct usb_host_endpoint *cmd_ep = usb_dev->ep_in[CXACRU_EP_CMD];
struct usb_endpoint_descriptor *in, *out;
int ret; int ret;
/* instance init */ /* instance init */
@ -1180,6 +1181,19 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,
goto fail; goto fail;
} }
if (usb_endpoint_xfer_int(&cmd_ep->desc))
ret = usb_find_common_endpoints(intf->cur_altsetting,
NULL, NULL, &in, &out);
else
ret = usb_find_common_endpoints(intf->cur_altsetting,
&in, &out, NULL, NULL);
if (ret) {
usb_err(usbatm_instance, "cxacru_bind: interface has incorrect endpoints\n");
ret = -ENODEV;
goto fail;
}
if ((cmd_ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) if ((cmd_ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)
== USB_ENDPOINT_XFER_INT) { == USB_ENDPOINT_XFER_INT) {
usb_fill_int_urb(instance->rcv_urb, usb_fill_int_urb(instance->rcv_urb,

View File

@ -249,14 +249,14 @@ static void wdm_int_callback(struct urb *urb)
dev_err(&desc->intf->dev, "Stall on int endpoint\n"); dev_err(&desc->intf->dev, "Stall on int endpoint\n");
goto sw; /* halt is cleared in work */ goto sw; /* halt is cleared in work */
default: default:
dev_err(&desc->intf->dev, dev_err_ratelimited(&desc->intf->dev,
"nonzero urb status received: %d\n", status); "nonzero urb status received: %d\n", status);
break; break;
} }
} }
if (urb->actual_length < sizeof(struct usb_cdc_notification)) { if (urb->actual_length < sizeof(struct usb_cdc_notification)) {
dev_err(&desc->intf->dev, "wdm_int_callback - %d bytes\n", dev_err_ratelimited(&desc->intf->dev, "wdm_int_callback - %d bytes\n",
urb->actual_length); urb->actual_length);
goto exit; goto exit;
} }

View File

@ -817,6 +817,7 @@ static void ffs_user_copy_worker(struct work_struct *work)
int ret = io_data->req->status ? io_data->req->status : int ret = io_data->req->status ? io_data->req->status :
io_data->req->actual; io_data->req->actual;
bool kiocb_has_eventfd = io_data->kiocb->ki_flags & IOCB_EVENTFD; bool kiocb_has_eventfd = io_data->kiocb->ki_flags & IOCB_EVENTFD;
unsigned long flags;
ffs_log("enter: ret %d for %s", ret, io_data->read ? "read" : "write"); ffs_log("enter: ret %d for %s", ret, io_data->read ? "read" : "write");
@ -835,7 +836,10 @@ static void ffs_user_copy_worker(struct work_struct *work)
if (io_data->ffs->ffs_eventfd && !kiocb_has_eventfd) if (io_data->ffs->ffs_eventfd && !kiocb_has_eventfd)
eventfd_signal(io_data->ffs->ffs_eventfd, 1); eventfd_signal(io_data->ffs->ffs_eventfd, 1);
spin_lock_irqsave(&io_data->ffs->eps_lock, flags);
usb_ep_free_request(io_data->ep, io_data->req); usb_ep_free_request(io_data->ep, io_data->req);
io_data->req = NULL;
spin_unlock_irqrestore(&io_data->ffs->eps_lock, flags);
if (io_data->read) if (io_data->read)
kfree(io_data->to_free); kfree(io_data->to_free);

View File

@ -212,6 +212,7 @@ static inline struct usb_endpoint_descriptor *ep_desc(struct usb_gadget *gadget,
struct usb_endpoint_descriptor *ss) struct usb_endpoint_descriptor *ss)
{ {
switch (gadget->speed) { switch (gadget->speed) {
case USB_SPEED_SUPER_PLUS:
case USB_SPEED_SUPER: case USB_SPEED_SUPER:
return ss; return ss;
case USB_SPEED_HIGH: case USB_SPEED_HIGH:

View File

@ -43,6 +43,7 @@
#define PCI_VENDOR_ID_ETRON 0x1b6f #define PCI_VENDOR_ID_ETRON 0x1b6f
#define PCI_DEVICE_ID_EJ168 0x7023 #define PCI_DEVICE_ID_EJ168 0x7023
#define PCI_DEVICE_ID_EJ188 0x7052
#define PCI_DEVICE_ID_INTEL_LYNXPOINT_XHCI 0x8c31 #define PCI_DEVICE_ID_INTEL_LYNXPOINT_XHCI 0x8c31
#define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI 0x9c31 #define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI 0x9c31
@ -224,6 +225,12 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
xhci->quirks |= XHCI_TRUST_TX_LENGTH; xhci->quirks |= XHCI_TRUST_TX_LENGTH;
xhci->quirks |= XHCI_BROKEN_STREAMS; xhci->quirks |= XHCI_BROKEN_STREAMS;
} }
if (pdev->vendor == PCI_VENDOR_ID_ETRON &&
pdev->device == PCI_DEVICE_ID_EJ188) {
xhci->quirks |= XHCI_RESET_ON_RESUME;
xhci->quirks |= XHCI_BROKEN_STREAMS;
}
if (pdev->vendor == PCI_VENDOR_ID_RENESAS && if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
pdev->device == 0x0014) pdev->device == 0x0014)
xhci->quirks |= XHCI_TRUST_TX_LENGTH; xhci->quirks |= XHCI_TRUST_TX_LENGTH;
@ -270,6 +277,11 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
pdev->device == 0x9026) pdev->device == 0x9026)
xhci->quirks |= XHCI_RESET_PLL_ON_DISCONNECT; xhci->quirks |= XHCI_RESET_PLL_ON_DISCONNECT;
if (pdev->vendor == PCI_VENDOR_ID_AMD &&
(pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_2 ||
pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_4))
xhci->quirks |= XHCI_NO_SOFT_RETRY;
if (xhci->quirks & XHCI_RESET_ON_RESUME) if (xhci->quirks & XHCI_RESET_ON_RESUME)
xhci_dbg_trace(xhci, trace_xhci_dbg_quirks, xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
"QUIRK: Resetting on resume"); "QUIRK: Resetting on resume");

View File

@ -1227,6 +1227,10 @@ static void xhci_handle_cmd_reset_ep(struct xhci_hcd *xhci, int slot_id,
/* Clear our internal halted state */ /* Clear our internal halted state */
ep->ep_state &= ~EP_HALTED; ep->ep_state &= ~EP_HALTED;
} }
/* if this was a soft reset, then restart */
if ((le32_to_cpu(trb->generic.field[3])) & TRB_TSP)
ring_doorbell_for_active_rings(xhci, slot_id, ep_index);
} }
static void xhci_handle_cmd_enable_slot(struct xhci_hcd *xhci, int slot_id, static void xhci_handle_cmd_enable_slot(struct xhci_hcd *xhci, int slot_id,
@ -1920,8 +1924,7 @@ struct xhci_segment *trb_in_td(struct xhci_hcd *xhci,
static void xhci_cleanup_halted_endpoint(struct xhci_hcd *xhci, static void xhci_cleanup_halted_endpoint(struct xhci_hcd *xhci,
unsigned int slot_id, unsigned int ep_index, unsigned int slot_id, unsigned int ep_index,
unsigned int stream_id, unsigned int stream_id, struct xhci_td *td,
struct xhci_td *td, union xhci_trb *ep_trb,
enum xhci_ep_reset_type reset_type) enum xhci_ep_reset_type reset_type)
{ {
struct xhci_virt_ep *ep = &xhci->devs[slot_id]->eps[ep_index]; struct xhci_virt_ep *ep = &xhci->devs[slot_id]->eps[ep_index];
@ -2064,8 +2067,7 @@ static int finish_td(struct xhci_hcd *xhci, struct xhci_td *td,
* The class driver clears the device side halt later. * The class driver clears the device side halt later.
*/ */
xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index, xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index,
ep_ring->stream_id, td, ep_trb, ep_ring->stream_id, td, EP_HARD_RESET);
EP_HARD_RESET);
} else { } else {
/* Update ring dequeue pointer */ /* Update ring dequeue pointer */
while (ep_ring->dequeue != td->last_trb) while (ep_ring->dequeue != td->last_trb)
@ -2317,10 +2319,16 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td,
union xhci_trb *ep_trb, struct xhci_transfer_event *event, union xhci_trb *ep_trb, struct xhci_transfer_event *event,
struct xhci_virt_ep *ep, int *status) struct xhci_virt_ep *ep, int *status)
{ {
struct xhci_slot_ctx *slot_ctx;
struct xhci_ring *ep_ring; struct xhci_ring *ep_ring;
u32 trb_comp_code; u32 trb_comp_code;
u32 remaining, requested, ep_trb_len; u32 remaining, requested, ep_trb_len;
unsigned int slot_id;
int ep_index;
slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags));
slot_ctx = xhci_get_slot_ctx(xhci, xhci->devs[slot_id]->out_ctx);
ep_index = TRB_TO_EP_ID(le32_to_cpu(event->flags)) - 1;
ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer)); ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer));
trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len)); trb_comp_code = GET_COMP_CODE(le32_to_cpu(event->transfer_len));
remaining = EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); remaining = EVENT_TRB_LEN(le32_to_cpu(event->transfer_len));
@ -2329,6 +2337,7 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td,
switch (trb_comp_code) { switch (trb_comp_code) {
case COMP_SUCCESS: case COMP_SUCCESS:
ep_ring->err_count = 0;
/* handle success with untransferred data as short packet */ /* handle success with untransferred data as short packet */
if (ep_trb != td->last_trb || remaining) { if (ep_trb != td->last_trb || remaining) {
xhci_warn(xhci, "WARN Successful completion on short TX\n"); xhci_warn(xhci, "WARN Successful completion on short TX\n");
@ -2349,9 +2358,17 @@ static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td,
goto finish_td; goto finish_td;
case COMP_STOPPED_LENGTH_INVALID: case COMP_STOPPED_LENGTH_INVALID:
/* stopped on ep trb with invalid length, exclude it */ /* stopped on ep trb with invalid length, exclude it */
ep_trb_len = 0; td->urb->actual_length = sum_trb_lengths(xhci, ep_ring, ep_trb);
remaining = 0; goto finish_td;
break; case COMP_USB_TRANSACTION_ERROR:
if (xhci->quirks & XHCI_NO_SOFT_RETRY ||
(ep_ring->err_count++ > MAX_SOFT_RETRY) ||
le32_to_cpu(slot_ctx->tt_info) & TT_SLOT)
break;
*status = 0;
xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index,
ep_ring->stream_id, td, EP_SOFT_RESET);
return 0;
default: default:
/* do nothing */ /* do nothing */
break; break;
@ -2426,7 +2443,7 @@ static int handle_tx_event(struct xhci_hcd *xhci,
case COMP_INVALID_STREAM_TYPE_ERROR: case COMP_INVALID_STREAM_TYPE_ERROR:
case COMP_INVALID_STREAM_ID_ERROR: case COMP_INVALID_STREAM_ID_ERROR:
xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index, 0, xhci_cleanup_halted_endpoint(xhci, slot_id, ep_index, 0,
NULL, NULL, EP_SOFT_RESET); NULL, EP_SOFT_RESET);
goto cleanup; goto cleanup;
case COMP_RING_UNDERRUN: case COMP_RING_UNDERRUN:
case COMP_RING_OVERRUN: case COMP_RING_OVERRUN:
@ -2694,8 +2711,7 @@ static int handle_tx_event(struct xhci_hcd *xhci,
xhci_cleanup_halted_endpoint(xhci, slot_id, xhci_cleanup_halted_endpoint(xhci, slot_id,
ep_index, ep_index,
ep_ring->stream_id, ep_ring->stream_id,
td, ep_trb, td, EP_HARD_RESET);
EP_HARD_RESET);
goto cleanup; goto cleanup;
} }

View File

@ -1506,6 +1506,7 @@ static inline const char *xhci_trb_type_string(u8 type)
/* How much data is left before the 64KB boundary? */ /* How much data is left before the 64KB boundary? */
#define TRB_BUFF_LEN_UP_TO_BOUNDARY(addr) (TRB_MAX_BUFF_SIZE - \ #define TRB_BUFF_LEN_UP_TO_BOUNDARY(addr) (TRB_MAX_BUFF_SIZE - \
(addr & (TRB_MAX_BUFF_SIZE - 1))) (addr & (TRB_MAX_BUFF_SIZE - 1)))
#define MAX_SOFT_RETRY 3
struct xhci_segment { struct xhci_segment {
union xhci_trb *trbs; union xhci_trb *trbs;
@ -1593,6 +1594,7 @@ struct xhci_ring {
* if we own the TRB (if we are the consumer). See section 4.9.1. * if we own the TRB (if we are the consumer). See section 4.9.1.
*/ */
u32 cycle_state; u32 cycle_state;
unsigned int err_count;
unsigned int stream_id; unsigned int stream_id;
unsigned int num_segs; unsigned int num_segs;
unsigned int num_trbs_free; unsigned int num_trbs_free;
@ -1853,6 +1855,7 @@ struct xhci_hcd {
#define XHCI_INTEL_USB_ROLE_SW BIT_ULL(31) #define XHCI_INTEL_USB_ROLE_SW BIT_ULL(31)
#define XHCI_RESET_PLL_ON_DISCONNECT BIT_ULL(34) #define XHCI_RESET_PLL_ON_DISCONNECT BIT_ULL(34)
#define XHCI_SNPS_BROKEN_SUSPEND BIT_ULL(35) #define XHCI_SNPS_BROKEN_SUSPEND BIT_ULL(35)
#define XHCI_NO_SOFT_RETRY BIT_ULL(40)
unsigned int num_active_eps; unsigned int num_active_eps;
unsigned int limit_active_eps; unsigned int limit_active_eps;

View File

@ -690,7 +690,7 @@ static int uss720_probe(struct usb_interface *intf,
struct parport_uss720_private *priv; struct parport_uss720_private *priv;
struct parport *pp; struct parport *pp;
unsigned char reg; unsigned char reg;
int i; int ret;
dev_dbg(&intf->dev, "probe: vendor id 0x%x, device id 0x%x\n", dev_dbg(&intf->dev, "probe: vendor id 0x%x, device id 0x%x\n",
le16_to_cpu(usbdev->descriptor.idVendor), le16_to_cpu(usbdev->descriptor.idVendor),
@ -701,8 +701,8 @@ static int uss720_probe(struct usb_interface *intf,
usb_put_dev(usbdev); usb_put_dev(usbdev);
return -ENODEV; return -ENODEV;
} }
i = usb_set_interface(usbdev, intf->altsetting->desc.bInterfaceNumber, 2); ret = usb_set_interface(usbdev, intf->altsetting->desc.bInterfaceNumber, 2);
dev_dbg(&intf->dev, "set interface result %d\n", i); dev_dbg(&intf->dev, "set interface result %d\n", ret);
interface = intf->cur_altsetting; interface = intf->cur_altsetting;
@ -738,12 +738,18 @@ static int uss720_probe(struct usb_interface *intf,
set_1284_register(pp, 7, 0x00, GFP_KERNEL); set_1284_register(pp, 7, 0x00, GFP_KERNEL);
set_1284_register(pp, 6, 0x30, GFP_KERNEL); /* PS/2 mode */ set_1284_register(pp, 6, 0x30, GFP_KERNEL); /* PS/2 mode */
set_1284_register(pp, 2, 0x0c, GFP_KERNEL); set_1284_register(pp, 2, 0x0c, GFP_KERNEL);
/* debugging */
get_1284_register(pp, 0, &reg, GFP_KERNEL);
dev_dbg(&intf->dev, "reg: %7ph\n", priv->reg);
i = usb_find_last_int_in_endpoint(interface, &epd); /* The Belkin F5U002 Rev 2 P80453-B USB parallel port adapter shares the
if (!i) { * device ID 050d:0002 with some other device that works with this
* driver, but it itself does not. Detect and handle the bad cable
* here. */
ret = get_1284_register(pp, 0, &reg, GFP_KERNEL);
dev_dbg(&intf->dev, "reg: %7ph\n", priv->reg);
if (ret < 0)
return ret;
ret = usb_find_last_int_in_endpoint(interface, &epd);
if (!ret) {
dev_dbg(&intf->dev, "epaddr %d interval %d\n", dev_dbg(&intf->dev, "epaddr %d interval %d\n",
epd->bEndpointAddress, epd->bInterval); epd->bEndpointAddress, epd->bInterval);
} }

View File

@ -580,7 +580,7 @@ static int da8xx_probe(struct platform_device *pdev)
ret = of_platform_populate(pdev->dev.of_node, NULL, ret = of_platform_populate(pdev->dev.of_node, NULL,
da8xx_auxdata_lookup, &pdev->dev); da8xx_auxdata_lookup, &pdev->dev);
if (ret) if (ret)
return ret; goto err_unregister_phy;
memset(musb_resources, 0x00, sizeof(*musb_resources) * memset(musb_resources, 0x00, sizeof(*musb_resources) *
ARRAY_SIZE(musb_resources)); ARRAY_SIZE(musb_resources));
@ -606,9 +606,13 @@ static int da8xx_probe(struct platform_device *pdev)
ret = PTR_ERR_OR_ZERO(glue->musb); ret = PTR_ERR_OR_ZERO(glue->musb);
if (ret) { if (ret) {
dev_err(&pdev->dev, "failed to register musb device: %d\n", ret); dev_err(&pdev->dev, "failed to register musb device: %d\n", ret);
usb_phy_generic_unregister(glue->usb_phy); goto err_unregister_phy;
} }
return 0;
err_unregister_phy:
usb_phy_generic_unregister(glue->usb_phy);
return ret; return ret;
} }

View File

@ -117,6 +117,8 @@ struct alauda_info {
unsigned char sense_key; unsigned char sense_key;
unsigned long sense_asc; /* additional sense code */ unsigned long sense_asc; /* additional sense code */
unsigned long sense_ascq; /* additional sense code qualifier */ unsigned long sense_ascq; /* additional sense code qualifier */
bool media_initialized;
}; };
#define short_pack(lsb,msb) ( ((u16)(lsb)) | ( ((u16)(msb))<<8 ) ) #define short_pack(lsb,msb) ( ((u16)(lsb)) | ( ((u16)(msb))<<8 ) )
@ -488,11 +490,12 @@ static int alauda_check_media(struct us_data *us)
} }
/* Check for media change */ /* Check for media change */
if (status[0] & 0x08) { if (status[0] & 0x08 || !info->media_initialized) {
usb_stor_dbg(us, "Media change detected\n"); usb_stor_dbg(us, "Media change detected\n");
alauda_free_maps(&MEDIA_INFO(us)); alauda_free_maps(&MEDIA_INFO(us));
alauda_init_media(us); rc = alauda_init_media(us);
if (rc == USB_STOR_TRANSPORT_GOOD)
info->media_initialized = true;
info->sense_key = UNIT_ATTENTION; info->sense_key = UNIT_ATTENTION;
info->sense_asc = 0x28; info->sense_asc = 0x28;
info->sense_ascq = 0x00; info->sense_ascq = 0x00;

View File

@ -570,9 +570,11 @@ static int ea_get(struct inode *inode, struct ea_buffer *ea_buf, int min_size)
size_check: size_check:
if (EALIST_SIZE(ea_buf->xattr) != ea_size) { if (EALIST_SIZE(ea_buf->xattr) != ea_size) {
int size = min_t(int, EALIST_SIZE(ea_buf->xattr), ea_size);
printk(KERN_ERR "ea_get: invalid extended attribute\n"); printk(KERN_ERR "ea_get: invalid extended attribute\n");
print_hex_dump(KERN_ERR, "", DUMP_PREFIX_ADDRESS, 16, 1, print_hex_dump(KERN_ERR, "", DUMP_PREFIX_ADDRESS, 16, 1,
ea_buf->xattr, ea_size, 1); ea_buf->xattr, size, 1);
ea_release(inode, ea_buf); ea_release(inode, ea_buf);
rc = -EIO; rc = -EIO;
goto clean_up; goto clean_up;

View File

@ -195,19 +195,24 @@ fail:
return false; return false;
} }
static struct page *nilfs_get_page(struct inode *dir, unsigned long n) static void *nilfs_get_page(struct inode *dir, unsigned long n,
struct page **pagep)
{ {
struct address_space *mapping = dir->i_mapping; struct address_space *mapping = dir->i_mapping;
struct page *page = read_mapping_page(mapping, n, NULL); struct page *page = read_mapping_page(mapping, n, NULL);
void *kaddr;
if (!IS_ERR(page)) { if (IS_ERR(page))
kmap(page); return page;
if (unlikely(!PageChecked(page))) {
if (PageError(page) || !nilfs_check_page(page)) kaddr = kmap(page);
goto fail; if (unlikely(!PageChecked(page))) {
} if (!nilfs_check_page(page))
goto fail;
} }
return page;
*pagep = page;
return kaddr;
fail: fail:
nilfs_put_page(page); nilfs_put_page(page);
@ -284,14 +289,14 @@ static int nilfs_readdir(struct file *file, struct dir_context *ctx)
for ( ; n < npages; n++, offset = 0) { for ( ; n < npages; n++, offset = 0) {
char *kaddr, *limit; char *kaddr, *limit;
struct nilfs_dir_entry *de; struct nilfs_dir_entry *de;
struct page *page = nilfs_get_page(inode, n); struct page *page;
if (IS_ERR(page)) { kaddr = nilfs_get_page(inode, n, &page);
if (IS_ERR(kaddr)) {
nilfs_error(sb, "bad page in #%lu", inode->i_ino); nilfs_error(sb, "bad page in #%lu", inode->i_ino);
ctx->pos += PAGE_SIZE - offset; ctx->pos += PAGE_SIZE - offset;
return -EIO; return -EIO;
} }
kaddr = page_address(page);
de = (struct nilfs_dir_entry *)(kaddr + offset); de = (struct nilfs_dir_entry *)(kaddr + offset);
limit = kaddr + nilfs_last_byte(inode, n) - limit = kaddr + nilfs_last_byte(inode, n) -
NILFS_DIR_REC_LEN(1); NILFS_DIR_REC_LEN(1);
@ -354,11 +359,9 @@ nilfs_find_entry(struct inode *dir, const struct qstr *qstr,
start = 0; start = 0;
n = start; n = start;
do { do {
char *kaddr; char *kaddr = nilfs_get_page(dir, n, &page);
page = nilfs_get_page(dir, n); if (!IS_ERR(kaddr)) {
if (!IS_ERR(page)) {
kaddr = page_address(page);
de = (struct nilfs_dir_entry *)kaddr; de = (struct nilfs_dir_entry *)kaddr;
kaddr += nilfs_last_byte(dir, n) - reclen; kaddr += nilfs_last_byte(dir, n) - reclen;
while ((char *) de <= kaddr) { while ((char *) de <= kaddr) {
@ -396,15 +399,11 @@ found:
struct nilfs_dir_entry *nilfs_dotdot(struct inode *dir, struct page **p) struct nilfs_dir_entry *nilfs_dotdot(struct inode *dir, struct page **p)
{ {
struct page *page = nilfs_get_page(dir, 0); struct nilfs_dir_entry *de = nilfs_get_page(dir, 0, p);
struct nilfs_dir_entry *de = NULL;
if (!IS_ERR(page)) { if (IS_ERR(de))
de = nilfs_next_entry( return NULL;
(struct nilfs_dir_entry *)page_address(page)); return nilfs_next_entry(de);
*p = page;
}
return de;
} }
ino_t nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr) ino_t nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr)
@ -468,12 +467,11 @@ int nilfs_add_link(struct dentry *dentry, struct inode *inode)
for (n = 0; n <= npages; n++) { for (n = 0; n <= npages; n++) {
char *dir_end; char *dir_end;
page = nilfs_get_page(dir, n); kaddr = nilfs_get_page(dir, n, &page);
err = PTR_ERR(page); err = PTR_ERR(kaddr);
if (IS_ERR(page)) if (IS_ERR(kaddr))
goto out; goto out;
lock_page(page); lock_page(page);
kaddr = page_address(page);
dir_end = kaddr + nilfs_last_byte(dir, n); dir_end = kaddr + nilfs_last_byte(dir, n);
de = (struct nilfs_dir_entry *)kaddr; de = (struct nilfs_dir_entry *)kaddr;
kaddr += PAGE_SIZE - reclen; kaddr += PAGE_SIZE - reclen;
@ -636,11 +634,10 @@ int nilfs_empty_dir(struct inode *inode)
char *kaddr; char *kaddr;
struct nilfs_dir_entry *de; struct nilfs_dir_entry *de;
page = nilfs_get_page(inode, i); kaddr = nilfs_get_page(inode, i, &page);
if (IS_ERR(page)) if (IS_ERR(kaddr))
continue; return 0;
kaddr = page_address(page);
de = (struct nilfs_dir_entry *)kaddr; de = (struct nilfs_dir_entry *)kaddr;
kaddr += nilfs_last_byte(inode, i) - NILFS_DIR_REC_LEN(1); kaddr += nilfs_last_byte(inode, i) - NILFS_DIR_REC_LEN(1);

View File

@ -1701,6 +1701,7 @@ static void nilfs_segctor_prepare_write(struct nilfs_sc_info *sci)
if (bh->b_page != bd_page) { if (bh->b_page != bd_page) {
if (bd_page) { if (bd_page) {
lock_page(bd_page); lock_page(bd_page);
wait_on_page_writeback(bd_page);
clear_page_dirty_for_io(bd_page); clear_page_dirty_for_io(bd_page);
set_page_writeback(bd_page); set_page_writeback(bd_page);
unlock_page(bd_page); unlock_page(bd_page);
@ -1714,6 +1715,7 @@ static void nilfs_segctor_prepare_write(struct nilfs_sc_info *sci)
if (bh == segbuf->sb_super_root) { if (bh == segbuf->sb_super_root) {
if (bh->b_page != bd_page) { if (bh->b_page != bd_page) {
lock_page(bd_page); lock_page(bd_page);
wait_on_page_writeback(bd_page);
clear_page_dirty_for_io(bd_page); clear_page_dirty_for_io(bd_page);
set_page_writeback(bd_page); set_page_writeback(bd_page);
unlock_page(bd_page); unlock_page(bd_page);
@ -1730,6 +1732,7 @@ static void nilfs_segctor_prepare_write(struct nilfs_sc_info *sci)
} }
if (bd_page) { if (bd_page) {
lock_page(bd_page); lock_page(bd_page);
wait_on_page_writeback(bd_page);
clear_page_dirty_for_io(bd_page); clear_page_dirty_for_io(bd_page);
set_page_writeback(bd_page); set_page_writeback(bd_page);
unlock_page(bd_page); unlock_page(bd_page);

View File

@ -1946,6 +1946,8 @@ static int __ocfs2_change_file_space(struct file *file, struct inode *inode,
inode_lock(inode); inode_lock(inode);
/* Wait all existing dio workers, newcomers will block on i_rwsem */
inode_dio_wait(inode);
/* /*
* This prevents concurrent writes on other nodes * This prevents concurrent writes on other nodes
*/ */

View File

@ -570,7 +570,7 @@ static int __ocfs2_mknod_locked(struct inode *dir,
fe->i_last_eb_blk = 0; fe->i_last_eb_blk = 0;
strcpy(fe->i_signature, OCFS2_INODE_SIGNATURE); strcpy(fe->i_signature, OCFS2_INODE_SIGNATURE);
fe->i_flags |= cpu_to_le32(OCFS2_VALID_FL); fe->i_flags |= cpu_to_le32(OCFS2_VALID_FL);
ktime_get_real_ts64(&ts); ts = current_kernel_time64();
fe->i_atime = fe->i_ctime = fe->i_mtime = fe->i_atime = fe->i_ctime = fe->i_mtime =
cpu_to_le64(ts.tv_sec); cpu_to_le64(ts.tv_sec);
fe->i_mtime_nsec = fe->i_ctime_nsec = fe->i_atime_nsec = fe->i_mtime_nsec = fe->i_ctime_nsec = fe->i_atime_nsec =

View File

@ -219,13 +219,13 @@ out:
return error; return error;
} }
SYSCALL_DEFINE2(ftruncate, unsigned int, fd, unsigned long, length) SYSCALL_DEFINE2(ftruncate, unsigned int, fd, off_t, length)
{ {
return do_sys_ftruncate(fd, length, 1); return do_sys_ftruncate(fd, length, 1);
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
COMPAT_SYSCALL_DEFINE2(ftruncate, unsigned int, fd, compat_ulong_t, length) COMPAT_SYSCALL_DEFINE2(ftruncate, unsigned int, fd, compat_off_t, length)
{ {
return do_sys_ftruncate(fd, length, 1); return do_sys_ftruncate(fd, length, 1);
} }

View File

@ -242,6 +242,8 @@ static ssize_t __read_vmcore(char *buffer, size_t buflen, loff_t *fpos,
/* leave now if filled buffer already */ /* leave now if filled buffer already */
if (buflen == 0) if (buflen == 0)
return acc; return acc;
cond_resched();
} }
list_for_each_entry(m, &vmcore_list, list) { list_for_each_entry(m, &vmcore_list, list) {

View File

@ -1471,15 +1471,9 @@ reread:
inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) << inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) <<
(inode->i_sb->s_blocksize_bits - 9); (inode->i_sb->s_blocksize_bits - 9);
if (!udf_disk_stamp_to_time(&inode->i_atime, fe->accessTime)) udf_disk_stamp_to_time(&inode->i_atime, fe->accessTime);
inode->i_atime = sbi->s_record_time; udf_disk_stamp_to_time(&inode->i_mtime, fe->modificationTime);
udf_disk_stamp_to_time(&inode->i_ctime, fe->attrTime);
if (!udf_disk_stamp_to_time(&inode->i_mtime,
fe->modificationTime))
inode->i_mtime = sbi->s_record_time;
if (!udf_disk_stamp_to_time(&inode->i_ctime, fe->attrTime))
inode->i_ctime = sbi->s_record_time;
iinfo->i_unique = le64_to_cpu(fe->uniqueID); iinfo->i_unique = le64_to_cpu(fe->uniqueID);
iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr); iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr);
@ -1489,18 +1483,10 @@ reread:
inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) << inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) <<
(inode->i_sb->s_blocksize_bits - 9); (inode->i_sb->s_blocksize_bits - 9);
if (!udf_disk_stamp_to_time(&inode->i_atime, efe->accessTime)) udf_disk_stamp_to_time(&inode->i_atime, efe->accessTime);
inode->i_atime = sbi->s_record_time; udf_disk_stamp_to_time(&inode->i_mtime, efe->modificationTime);
udf_disk_stamp_to_time(&iinfo->i_crtime, efe->createTime);
if (!udf_disk_stamp_to_time(&inode->i_mtime, udf_disk_stamp_to_time(&inode->i_ctime, efe->attrTime);
efe->modificationTime))
inode->i_mtime = sbi->s_record_time;
if (!udf_disk_stamp_to_time(&iinfo->i_crtime, efe->createTime))
iinfo->i_crtime = sbi->s_record_time;
if (!udf_disk_stamp_to_time(&inode->i_ctime, efe->attrTime))
inode->i_ctime = sbi->s_record_time;
iinfo->i_unique = le64_to_cpu(efe->uniqueID); iinfo->i_unique = le64_to_cpu(efe->uniqueID);
iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr); iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr);

View File

@ -887,6 +887,9 @@ static int udf_load_pvoldesc(struct super_block *sb, sector_t block)
struct buffer_head *bh; struct buffer_head *bh;
uint16_t ident; uint16_t ident;
int ret = -ENOMEM; int ret = -ENOMEM;
#ifdef UDFFS_DEBUG
struct timestamp *ts;
#endif
outstr = kmalloc(128, GFP_NOFS); outstr = kmalloc(128, GFP_NOFS);
if (!outstr) if (!outstr)
@ -905,15 +908,15 @@ static int udf_load_pvoldesc(struct super_block *sb, sector_t block)
pvoldesc = (struct primaryVolDesc *)bh->b_data; pvoldesc = (struct primaryVolDesc *)bh->b_data;
if (udf_disk_stamp_to_time(&UDF_SB(sb)->s_record_time, udf_disk_stamp_to_time(&UDF_SB(sb)->s_record_time,
pvoldesc->recordingDateAndTime)) { pvoldesc->recordingDateAndTime);
#ifdef UDFFS_DEBUG #ifdef UDFFS_DEBUG
struct timestamp *ts = &pvoldesc->recordingDateAndTime; ts = &pvoldesc->recordingDateAndTime;
udf_debug("recording time %04u/%02u/%02u %02u:%02u (%x)\n", udf_debug("recording time %04u/%02u/%02u %02u:%02u (%x)\n",
le16_to_cpu(ts->year), ts->month, ts->day, ts->hour, le16_to_cpu(ts->year), ts->month, ts->day, ts->hour,
ts->minute, le16_to_cpu(ts->typeAndTimezone)); ts->minute, le16_to_cpu(ts->typeAndTimezone));
#endif #endif
}
ret = udf_dstrCS0toUTF8(outstr, 31, pvoldesc->volIdent, 32); ret = udf_dstrCS0toUTF8(outstr, 31, pvoldesc->volIdent, 32);
if (ret < 0) { if (ret < 0) {

View File

@ -244,8 +244,8 @@ extern struct long_ad *udf_get_filelongad(uint8_t *, int, uint32_t *, int);
extern struct short_ad *udf_get_fileshortad(uint8_t *, int, uint32_t *, int); extern struct short_ad *udf_get_fileshortad(uint8_t *, int, uint32_t *, int);
/* udftime.c */ /* udftime.c */
extern struct timespec *udf_disk_stamp_to_time(struct timespec *dest, extern void udf_disk_stamp_to_time(struct timespec *dest,
struct timestamp src); struct timestamp src);
extern struct timestamp *udf_time_to_disk_stamp(struct timestamp *dest, struct timespec src); extern void udf_time_to_disk_stamp(struct timestamp *dest, struct timespec src);
#endif /* __UDF_DECL_H */ #endif /* __UDF_DECL_H */

View File

@ -40,7 +40,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/time.h> #include <linux/time.h>
struct timespec * void
udf_disk_stamp_to_time(struct timespec *dest, struct timestamp src) udf_disk_stamp_to_time(struct timespec *dest, struct timestamp src)
{ {
u16 typeAndTimezone = le16_to_cpu(src.typeAndTimezone); u16 typeAndTimezone = le16_to_cpu(src.typeAndTimezone);
@ -60,12 +60,21 @@ udf_disk_stamp_to_time(struct timespec *dest, struct timestamp src)
dest->tv_sec = mktime64(year, src.month, src.day, src.hour, src.minute, dest->tv_sec = mktime64(year, src.month, src.day, src.hour, src.minute,
src.second); src.second);
dest->tv_sec -= offset * 60; dest->tv_sec -= offset * 60;
dest->tv_nsec = 1000 * (src.centiseconds * 10000 +
/*
* Sanitize nanosecond field since reportedly some filesystems are
* recorded with bogus sub-second values.
*/
if (src.centiseconds < 100 && src.hundredsOfMicroseconds < 100 &&
src.microseconds < 100) {
dest->tv_nsec = 1000 * (src.centiseconds * 10000 +
src.hundredsOfMicroseconds * 100 + src.microseconds); src.hundredsOfMicroseconds * 100 + src.microseconds);
return dest; } else {
dest->tv_nsec = 0;
}
} }
struct timestamp * void
udf_time_to_disk_stamp(struct timestamp *dest, struct timespec ts) udf_time_to_disk_stamp(struct timestamp *dest, struct timespec ts)
{ {
long seconds; long seconds;
@ -74,9 +83,6 @@ udf_time_to_disk_stamp(struct timestamp *dest, struct timespec ts)
offset = -sys_tz.tz_minuteswest; offset = -sys_tz.tz_minuteswest;
if (!dest)
return NULL;
dest->typeAndTimezone = cpu_to_le16(0x1000 | (offset & 0x0FFF)); dest->typeAndTimezone = cpu_to_le16(0x1000 | (offset & 0x0FFF));
seconds = ts.tv_sec + offset * 60; seconds = ts.tv_sec + offset * 60;
@ -92,7 +98,6 @@ udf_time_to_disk_stamp(struct timestamp *dest, struct timespec ts)
dest->centiseconds * 10000) / 100; dest->centiseconds * 10000) / 100;
dest->microseconds = (ts.tv_nsec / 1000 - dest->centiseconds * 10000 - dest->microseconds = (ts.tv_nsec / 1000 - dest->centiseconds * 10000 -
dest->hundredsOfMicroseconds * 100); dest->hundredsOfMicroseconds * 100);
return dest;
} }
/* EOF */ /* EOF */

View File

@ -563,7 +563,7 @@ asmlinkage long compat_sys_open_by_handle_at(int mountdirfd,
struct file_handle __user *handle, struct file_handle __user *handle,
int flags); int flags);
asmlinkage long compat_sys_truncate(const char __user *, compat_off_t); asmlinkage long compat_sys_truncate(const char __user *, compat_off_t);
asmlinkage long compat_sys_ftruncate(unsigned int, compat_ulong_t); asmlinkage long compat_sys_ftruncate(unsigned int, compat_off_t);
asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp, asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
compat_ulong_t __user *outp, compat_ulong_t __user *outp,
compat_ulong_t __user *exp, compat_ulong_t __user *exp,

View File

@ -71,8 +71,8 @@ enum {
NVMF_RDMA_QPTYPE_DATAGRAM = 2, /* Reliable Datagram */ NVMF_RDMA_QPTYPE_DATAGRAM = 2, /* Reliable Datagram */
}; };
/* RDMA QP Service Type codes for Discovery Log Page entry TSAS /* RDMA Provider Type codes for Discovery Log Page entry TSAS
* RDMA_QPTYPE field * RDMA_PRTYPE field
*/ */
enum { enum {
NVMF_RDMA_PRTYPE_NOT_SPECIFIED = 1, /* No Provider Specified */ NVMF_RDMA_PRTYPE_NOT_SPECIFIED = 1, /* No Provider Specified */

View File

@ -125,6 +125,15 @@ enum pci_interrupt_pin {
/* The number of legacy PCI INTx interrupts */ /* The number of legacy PCI INTx interrupts */
#define PCI_NUM_INTX 4 #define PCI_NUM_INTX 4
/*
* Reading from a device that doesn't respond typically returns ~0. A
* successful read from a device may also return ~0, so you need additional
* information to reliably identify errors.
*/
#define PCI_ERROR_RESPONSE (~0ULL)
#define PCI_SET_ERROR_RESPONSE(val) (*(val) = ((typeof(*(val))) PCI_ERROR_RESPONSE))
#define PCI_POSSIBLE_ERROR(val) ((val) == ((typeof(val)) PCI_ERROR_RESPONSE))
/* /*
* pci_power_t values must match the bits in the Capabilities PME_Support * pci_power_t values must match the bits in the Capabilities PME_Support
* and Control/Status PowerState fields in the Power Management capability. * and Control/Status PowerState fields in the Power Management capability.

View File

@ -70,6 +70,7 @@ struct rpc_clnt {
struct dentry *cl_debugfs; /* debugfs directory */ struct dentry *cl_debugfs; /* debugfs directory */
#endif #endif
struct rpc_xprt_iter cl_xpi; struct rpc_xprt_iter cl_xpi;
struct super_block *pipefs_sb;
}; };
/* /*

View File

@ -426,7 +426,7 @@ asmlinkage long sys_mount(char __user *dev_name, char __user *dir_name,
asmlinkage long sys_umount(char __user *name, int flags); asmlinkage long sys_umount(char __user *name, int flags);
asmlinkage long sys_oldumount(char __user *name); asmlinkage long sys_oldumount(char __user *name);
asmlinkage long sys_truncate(const char __user *path, long length); asmlinkage long sys_truncate(const char __user *path, long length);
asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length); asmlinkage long sys_ftruncate(unsigned int fd, off_t length);
asmlinkage long sys_stat(const char __user *filename, asmlinkage long sys_stat(const char __user *filename,
struct __old_kernel_stat __user *statbuf); struct __old_kernel_stat __user *statbuf);
asmlinkage long sys_statfs(const char __user * path, asmlinkage long sys_statfs(const char __user * path,

View File

@ -1395,18 +1395,46 @@ static inline int hci_check_conn_params(u16 min, u16 max, u16 latency,
{ {
u16 max_latency; u16 max_latency;
if (min > max || min < 6 || max > 3200) if (min > max) {
BT_WARN("min %d > max %d", min, max);
return -EINVAL; return -EINVAL;
}
if (to_multiplier < 10 || to_multiplier > 3200) if (min < 6) {
BT_WARN("min %d < 6", min);
return -EINVAL; return -EINVAL;
}
if (max >= to_multiplier * 8) if (max > 3200) {
BT_WARN("max %d > 3200", max);
return -EINVAL; return -EINVAL;
}
if (to_multiplier < 10) {
BT_WARN("to_multiplier %d < 10", to_multiplier);
return -EINVAL;
}
if (to_multiplier > 3200) {
BT_WARN("to_multiplier %d > 3200", to_multiplier);
return -EINVAL;
}
if (max >= to_multiplier * 8) {
BT_WARN("max %d >= to_multiplier %d * 8", max, to_multiplier);
return -EINVAL;
}
max_latency = (to_multiplier * 4 / max) - 1; max_latency = (to_multiplier * 4 / max) - 1;
if (latency > 499 || latency > max_latency) if (latency > 499) {
BT_WARN("latency %d > 499", latency);
return -EINVAL; return -EINVAL;
}
if (latency > max_latency) {
BT_WARN("latency %d > max_latency %d", latency, max_latency);
return -EINVAL;
}
return 0; return 0;
} }

View File

@ -443,6 +443,11 @@ static inline void *nft_set_priv(const struct nft_set *set)
return (void *)set->data; return (void *)set->data;
} }
static inline enum nft_data_types nft_set_datatype(const struct nft_set *set)
{
return set->dtype == NFT_DATA_VERDICT ? NFT_DATA_VERDICT : NFT_DATA_VALUE;
}
static inline struct nft_set *nft_set_container_of(const void *priv) static inline struct nft_set *nft_set_container_of(const void *priv)
{ {
return (void *)priv - offsetof(struct nft_set, data); return (void *)priv - offsetof(struct nft_set, data);

View File

@ -20,15 +20,17 @@
#define HUGETLB_FLAG_ENCODE_SHIFT 26 #define HUGETLB_FLAG_ENCODE_SHIFT 26
#define HUGETLB_FLAG_ENCODE_MASK 0x3f #define HUGETLB_FLAG_ENCODE_MASK 0x3f
#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT) #define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
#endif /* _ASM_GENERIC_HUGETLB_ENCODE_H_ */ #endif /* _ASM_GENERIC_HUGETLB_ENCODE_H_ */

View File

@ -25,7 +25,9 @@
#define MFD_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB #define MFD_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
#define MFD_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB #define MFD_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
#define MFD_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB #define MFD_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
#define MFD_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
#define MFD_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB #define MFD_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
#define MFD_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
#define MFD_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB #define MFD_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
#define MFD_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB #define MFD_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
#define MFD_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB #define MFD_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB

View File

@ -28,7 +28,9 @@
#define MAP_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB #define MAP_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
#define MAP_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB #define MAP_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
#define MAP_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB #define MAP_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
#define MAP_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
#define MAP_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB #define MAP_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
#define MAP_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
#define MAP_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB #define MAP_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
#define MAP_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB #define MAP_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
#define MAP_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB #define MAP_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB

View File

@ -65,7 +65,9 @@ struct shmid_ds {
#define SHM_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB #define SHM_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
#define SHM_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB #define SHM_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
#define SHM_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB #define SHM_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
#define SHM_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
#define SHM_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB #define SHM_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
#define SHM_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
#define SHM_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB #define SHM_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
#define SHM_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB #define SHM_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
#define SHM_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB #define SHM_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB

View File

@ -19,7 +19,9 @@
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include "gcov.h" #include "gcov.h"
#if (__GNUC__ >= 10) #if (__GNUC__ >= 14)
#define GCOV_COUNTERS 9
#elif (__GNUC__ >= 10)
#define GCOV_COUNTERS 8 #define GCOV_COUNTERS 8
#elif (__GNUC__ >= 7) #elif (__GNUC__ >= 7)
#define GCOV_COUNTERS 9 #define GCOV_COUNTERS 9

View File

@ -1304,7 +1304,8 @@ static bool rcu_torture_one_read(struct torture_random_state *trsp)
preempt_disable(); preempt_disable();
pipe_count = p->rtort_pipe_count; pipe_count = p->rtort_pipe_count;
if (pipe_count > RCU_TORTURE_PIPE_LEN) { if (pipe_count > RCU_TORTURE_PIPE_LEN) {
/* Should not happen, but... */ // Should not happen in a correct RCU implementation,
// happens quite often for torture_type=busted.
pipe_count = RCU_TORTURE_PIPE_LEN; pipe_count = RCU_TORTURE_PIPE_LEN;
} }
completed = cur_ops->get_gp_seq(); completed = cur_ops->get_gp_seq();

View File

@ -26,7 +26,7 @@
#include <linux/cache.h> #include <linux/cache.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/jiffies.h> #include <linux/jiffies.h>

View File

@ -24,7 +24,7 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/jiffies.h> #include <linux/jiffies.h>
#include <linux/kernel.h> #include <linux/kernel.h>

View File

@ -22,7 +22,7 @@
#include <linux/byteorder/generic.h> #include <linux/byteorder/generic.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/jiffies.h> #include <linux/jiffies.h>
#include <linux/kernel.h> #include <linux/kernel.h>

View File

@ -24,7 +24,7 @@
#include <linux/crc16.h> #include <linux/crc16.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/if_vlan.h> #include <linux/if_vlan.h>

View File

@ -23,7 +23,7 @@
#include <linux/byteorder/generic.h> #include <linux/byteorder/generic.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/if_vlan.h> #include <linux/if_vlan.h>

View File

@ -22,7 +22,7 @@
#include <linux/byteorder/generic.h> #include <linux/byteorder/generic.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/jiffies.h> #include <linux/jiffies.h>
#include <linux/kernel.h> #include <linux/kernel.h>

View File

@ -22,7 +22,7 @@
#include <linux/byteorder/generic.h> #include <linux/byteorder/generic.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/if_vlan.h> #include <linux/if_vlan.h>
#include <linux/in.h> #include <linux/in.h>

View File

@ -21,7 +21,7 @@
#include <linux/atomic.h> #include <linux/atomic.h>
#include <linux/byteorder/generic.h> #include <linux/byteorder/generic.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/if.h> #include <linux/if.h>
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>

View File

@ -18,7 +18,7 @@
#include "hash.h" #include "hash.h"
#include "main.h" #include "main.h"
#include <linux/fs.h> #include <linux/gfp.h>
#include <linux/lockdep.h> #include <linux/lockdep.h>
#include <linux/slab.h> #include <linux/slab.h>

View File

@ -26,6 +26,7 @@
#include <linux/export.h> #include <linux/export.h>
#include <linux/fcntl.h> #include <linux/fcntl.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/gfp.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/list.h> #include <linux/list.h>

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