diff --git a/.elts/config.yaml b/.elts/config.yaml index ccc013e4516d..3376a25b5216 100644 --- a/.elts/config.yaml +++ b/.elts/config.yaml @@ -3,3 +3,4 @@ upstream_base: 4.19.304 base: 4.14.336 upstream_version: 4.19.322 version: 4.14.355 +rc: 1 diff --git a/.elts/meta/4.14.356.yaml b/.elts/meta/4.14.356.yaml new file mode 100644 index 000000000000..bf987b891aa2 --- /dev/null +++ b/.elts/meta/4.14.356.yaml @@ -0,0 +1,992 @@ +5ea681973e3c518892825457c55559b0daa1c3d3: + title: 'staging: iio: frequency: ad9833: Get frequency value statically' + mainline: 80109c32348d7b2e85def9efc3f9524fb166569d + upstream: a3138f0925714ea47f817257447fa0b87c8bcf28 +2253daf50c035c2cd8a8ca74b7bba17bb936fb18: + title: 'staging: iio: frequency: ad9833: Load clock using clock framework' + mainline: 8e8040c52e63546d1171c188a24aacf145a9a7e0 + upstream: a6316b6f127a877285c83d2ed45b20e6712e6d1b +ab37e7fbaeb484d79986ed060a4f865c05c3c248: + title: 'staging: iio: frequency: ad9834: Validate frequency parameter value' + mainline: b48aa991758999d4e8f9296c5bbe388f293ef465 + upstream: 5edc3a45ef428501000a7b23d0e1777a548907f6 +12cd0e98282326cc494b69e74947a585afd21f53: + title: 'usbnet: ipheth: fix carrier detection in modes 1 and 4' + mainline: 67927a1b255d883881be9467508e0af9a5e0be9d + upstream: 32dafeb84c84a2d420de27e5e30e4ea6339e4d07 +c0360f13de3287dfab2137634c65b55e3949f325: + title: 'net: ethernet: use ip_hdrlen() instead of bit shift' + mainline: 9a039eeb71a42c8b13408a1976e300f3898e1be0 + upstream: a81761c1ba59444fc3f644e7d8713ac35e7911c4 +71d7a71aecd5608f04ebe27edf45e296131503b1: + title: 'scripts: kconfig: merge_config: config files: add a trailing newline' + mainline: 33330bcf031818e60a816db0cfd3add9eecc3b28 + upstream: 6a130ec2f0646a8544308b6cf983269d5a2a7fa0 +e1ebafd5c0058b061a4583c4ba60a4508b00d55f: + title: 'arm64: dts: rockchip: override BIOS_DISABLE signal via GPIO hog on RK3399 Puma' + mainline: 741f5ba7ccba5d7ae796dd11c320e28045524771 + upstream: 4a0400793ac3961a07fcd472f7eb789d12d0db6a +64bdfeaca4b2bca14039364e1569c9f0d399e8cf: + title: 'net/mlx5: Update the list of the PCI supported devices' + mainline: 85327a9c415057259b337805d356705d0d0f4200 + upstream: a689f610abc8d4c8dfd775e09fd306f19cfe6509 +94fc3405a60ae7370428a02b7ffa8c1e1a0db0fb: + title: 'net: ftgmac100: Enable TX interrupt to avoid TX timeout' + mainline: fef2843bb49f414d1523ca007d088071dee0e055 + upstream: 7f84d4613b9fdf9e14bbab867e879a0df782a163 +d3cde3469100da8f52f60b814b8cab66244d7f56: + title: 'net: dpaa: Pad packets to ETH_ZLEN' + mainline: cbd7ec083413c6a2e0c326d49e24ec7d12c7a9e0 + upstream: cd5b9d657ecd44ad5f254c3fea3a6ab1cf0e2ef7 +e2ed6238364c4b1a6beba54d4d16c0f2dc801dc0: + title: 'selftests/vm: remove call to ksft_set_plan()' +c29e4bebce862efea2d600187e150237e563b89b: + title: 'selftests/kcmp: remove call to ksft_set_plan()' +a7d6bf885524c3d4063dd145fb93c2c89cc98848: + title: 'ASoC: allow module autoloading for table db1200_pids' + mainline: 0e9fdab1e8df490354562187cdbb8dec643eae2c + upstream: 71d74f78ae565a64eae3022020a9d4e82dace694 +ac0819d2626c52220d318ed9ea3d5b2ee4b2f1c2: + title: 'pinctrl: at91: make it work with current gpiolib' + mainline: 752f387faaae0ae2e84d3f496922524785e77d60 + upstream: 33d615ee40f0651bb3d282a66e6f59eae6ea4ada +fc168b848cd91fb8dd89637cb6a063670ed6b5dd: + title: 'microblaze: don''t treat zero reserved memory regions as error' + mainline: 0075df288dd8a7abfe03b3766176c393063591dd + upstream: a5bfdf7e4d956f3035779687eade8da23560f4bb +0fcd4ef6d494a3de6307fa976919cd800f343df6: + title: 'net: ftgmac100: Ensure tx descriptor updates are visible' + mainline: 4186c8d9e6af57bab0687b299df10ebd47534a0a + upstream: 46974d97d58a2a91da16b032de0c78c4346bc1c2 +f3f9ddf39b4b25d0a99b2323cfed0659b6cffb45: + title: 'spi: bcm63xx: Enable module autoloading' + mainline: 709df70a20e990d262c473ad9899314039e8ec82 + upstream: 1cde0480b087bd8f4e12396fcbb133ee9d9876bd +b427f522d100d82fc9a282af7780cd140ac4e0bf: + title: 'x86/hyperv: Set X86_FEATURE_TSC_KNOWN_FREQ when Hyper-V provides frequency' + mainline: 8fcc514809de41153b43ccbe1a0cdf7f72b78e7e + upstream: 1da08d443212eba1f731b3f163c5b23ec1c882c1 +900f2cf495f5f7e9088364d3e4e483756bff58e3: + title: 'ocfs2: add bounds checking to ocfs2_xattr_find_entry()' + mainline: 9e3041fecdc8f78a5900c3aa51d3d756e73264d6 + upstream: b49a786beb11ff740cb9e0c20b999c2a0e1729c2 +317e5483f3b80fb042b955d0e80c336698046cc1: + title: 'ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()' + mainline: af77c4fc1871847b528d58b7fdafb4aa1f6a9262 + upstream: e2b3d7a9d019d4d1a0da6c3ea64a1ff79c99c090 +c087e2303ab05433ed6981a730807bfc14dabe78: + title: 'gpio: prevent potential speculation leaks in gpio_device_get_desc()' + mainline: d795848ecce24a75dfd46481aee066ae6fe39775 + upstream: 18504710442671b02d00e6db9804a0ad26c5a479 +fd204ed48bc3d5d4315957a2bf536d2df43c44e8: + title: 'USB: serial: pl2303: add device id for Macrosilicon MS3020' + mainline: 7d47d22444bb7dc1b6d768904a22070ef35e1fc0 + upstream: 79efd61e1c50d79d89a48e6c01761f8f890a83dd +90c7ddee26f4a63a9d2f173c5056eae945d345a7: + title: 'wifi: ath9k: fix parameter check in ath9k_init_debug()' + mainline: 6edb4ba6fb5b946d112259f54f4657f82eb71e89 + upstream: ac848aff235efdd903c0c185c1cb44496c5b9bb0 +f2682fdc54e734785dd48a4850403f89e0e3cbe8: + title: 'wifi: ath9k: Remove error checks when creating debugfs entries' + mainline: f6ffe7f0184792c2f99aca6ae5b916683973d7d3 + upstream: 0c3bbcbce030ca203963c520191ad2c5d89bf862 +a99c4727604215b66734a480a049ad9451bfef34: + title: 'can: bcm: Clear bo->bcm_proc_read after remove_proc_entry().' + mainline: 94b0818fa63555a65f6ba107080659ea6bcca63e + upstream: f5059fae5ed518fc56494ce5bdd4f5360de4b3bc +ae07cf5eff7f99b3eb8927ace566f0786221dee4: + title: 'Bluetooth: btusb: Fix not handling ZPL/short-transfer' + mainline: 7b05933340f4490ef5b09e84d644d12484b05fdf + upstream: 2dfadca5439eca817fbb206c6003e5526d5e73df +3bb55bc8856f2de993ef77536a774c62dc252926: + title: 'block, bfq: fix possible UAF for bfqq->bic with merge chain' + mainline: 18ad4df091dd5d067d2faa8fce1180b79f7041a7 + upstream: a9bdd5b36887d2bacb8bc777fd18317c99fc2587 +940b968ed647a978296610464a5bfd0ee1c8b0f4: + title: 'block, bfq: don''t break merge chain in bfq_split_bfqq()' + mainline: 42c306ed723321af4003b2a41bb73728cab54f85 + upstream: 9e813033594b141f61ff0ef0cfaaef292564b041 +086695765117a72978f0210989a2fd377a86287a: + title: 'spi: ppc4xx: handle irq_of_parse_and_map() errors' + mainline: 0f245463b01ea254ae90e1d0389e90b0e7d8dc75 + upstream: f2a73a1f728e6fe765fc07c043a3d1670d854518 +2c79e19208b397228218de1ceb98f907ea84b720: + title: 'spi: ppc4xx: Avoid returning 0 when failed to parse and map IRQ' + mainline: 7781f1d120fec8624fc654eda900fc8748262082 + upstream: e546902c4917656203e0e134630a873e9b6d28af +8e6ee55dc9b2117c6e85d4e00724de05acc66e40: + title: 'ARM: versatile: fix OF node leak in CPUs prepare' + mainline: f2642d97f2105ed17b2ece0c597450f2ff95d704 + upstream: 722d698f3e8de32a753ee1148b009406d0b3b829 +f2dbb797e5c4fbe261bac004384161a4d2df0485: + title: 'reset: berlin: fix OF node leak in probe() error path' + mainline: 5f58a88cc91075be38cec69b7cb70aaa4ba69e8b + upstream: 041b763798bf460307db3bd8144e3732aef52902 +115ada83f0a71ae108fe8c58a4d9f6b0ef3b3be3: + title: 'clocksource/drivers/qcom: Add missing iounmap() on errors in msm_dt_timer_init()' + mainline: ca140a0dc0a18acd4653b56db211fec9b2339986 + upstream: 24d689791c6dbdb11b4b5208ed746f28fe651715 +1ed2f7aabb6e52fd4d1b13daeb56b5e1c6904e90: + title: 'hwmon: (max16065) Fix overflows seen when writing limits' + mainline: 744ec4477b11c42e2c8de9eb8364675ae7a0bd81 + upstream: b665734d4772df97eaeb4d943dc104dbd9ec1e9a +e7ee0a8fd442b2fb7586cc29d397017bc638ed50: + title: 'mtd: slram: insert break after errors in parsing the map' + mainline: 336c218dd7f0588ed8a7345f367975a00a4f003f + upstream: 6015f85fc8eba1ccf7db8b20a9518388fcb4fbf7 +b8dbab0d70214275e00278a332c3456de5c74031: + title: 'hwmon: (ntc_thermistor) fix module autoloading' + mainline: b6964d66a07a9003868e428a956949e17ab44d7e + upstream: 6f91b0464947c4119682731401e11e095d8db06d +c02345a3444b243abae115fc9cc38d3453c8964a: + title: 'power: supply: max17042_battery: Fix SOC threshold calc w/ no current sense' + mainline: 3a3acf839b2cedf092bdd1ff65b0e9895df1656b + upstream: f9e9ce0f2b420b63c29e96840865640098bbafe7 +8e8bed0aecaeb206024593bc125ecb5949b10cb5: + title: 'fbdev: hpfb: Fix an error handling path in hpfb_dio_probe()' + mainline: aa578e897520f32ae12bec487f2474357d01ca9c + upstream: da77622151181c1d7d8ce99019c14cd5bd6453b5 +2b1444de44d853578d982acd4d0a58082334d1ba: + title: 'drm/amd: fix typo' + mainline: 229f7b1d6344ea35fff0b113e4d91128921f8937 + upstream: f4a502c468886ffc54e436279d7f573b4d02bd5b +28cbb9587a21b4052424ece391f8953ea3ce1d93: + title: 'drm/rockchip: vop: Allow 4096px width scaling' + mainline: 0ef968d91a20b5da581839f093f98f7a03a804f7 + upstream: 6a512ab02cde62f147351d38ebefa250522336c4 +541940c2d6db90f0a9448686b0e0838a2a7f134b: + title: 'drm/radeon/evergreen_cs: fix int overflow errors in cs track offsets' + mainline: 3fbaf475a5b8361ebee7da18964db809e37518b7 + upstream: ec7cf75b4e2b584e6f2b167ce998428b42522df6 +e903f2245bb193bb8a6f11804e56b0b85ae6a9a9: + title: 'jfs: fix out-of-bounds in dbNextAG() and diAlloc()' + mainline: e63866a475562810500ea7f784099bfe341e761a + upstream: d1017d2a0f3f16dc1db5120e7ddbe7c6680425b0 +2f418bb73f8edbe9b8afbbf59e5b2e217ab391bd: + title: 'ipmi: docs: don''t advertise deprecated sysfs entries' + mainline: 64dce81f8c373c681e62d5ffe0397c45a35d48a2 + upstream: e4e81788a8b83f267d25b9f3b68cb4837b71bdd9 +f9d12089d914dc23b18637db0091a61a2c0ea32b: + title: 'drm/msm: fix %s null argument error' + mainline: 25b85075150fe8adddb096db8a4b950353045ee1 + upstream: b7a63d4bac70f660d63cba66684bc03f09be50ad +aa244feeb7d2f904f18638a7369216d4e410d44b: + title: 'xen: use correct end address of kernel for conflict checking' + mainline: fac1bceeeb04886fc2ee952672e6e6c85ce41dca + upstream: f38d39918cff054f4bfc466cac1c110d735eda94 +1a07c8045664899758b6c312761686e49f6d2fc0: + title: 'xen/swiotlb: simplify range_straddles_page_boundary()' + mainline: bf70726668c6116aa4976e0cc87f470be6268a2f + upstream: 5937434b2ca4884798571079cc71ad3a58b3c8fd +2690899d56f2ed0cb6b24a60c02bcbf8c950d35c: + title: 'xen/swiotlb: add alignment check for dma buffers' + mainline: 9f40ec84a7976d95c34e7cc070939deb103652b0 + upstream: 66c845af6613a62f08d1425054526cc294842914 +29e08a988cd84cd6b7afb1790e343d8290f58664: + title: 'selftests/bpf: Fix error compiling test_lru_map.c' + mainline: cacf2a5a78cd1f5f616eae043ebc6f024104b721 + upstream: e5fa35e20078c3f08a249a15e616645a7e7068e2 +efd2f49ae3bc833b879ef4091384fe42db871bec: + title: 'kthread: add kthread_work tracepoints' + mainline: f630c7c6f10546ebff15c3a856e7949feb7a2372 + upstream: 65c1957181a1e2cd5344e49d4e5b6e9f930092d1 +85a8b320b6eda4e743d3633d86653d16e9a859c1: + title: 'kthread: fix task state in kthread worker if being frozen' + mainline: e16c7b07784f3fb03025939c4590b9a7c64970a7 + upstream: 6430d6a00b0d8d3de663ecc0da248f8f3557b82e +449027e8478709334ca7d9445060ed04464b43bb: + title: 'jbd2: introduce/export functions jbd2_journal_submit|finish_inode_data_buffers()' + mainline: aa3c0c61f62d682259e3e66cdc01846290f9cd6c + upstream: 58a48155ce22e8e001308a41a16d8c89ee003b80 +aa5e7df17ef64ae426c4ac8fcdde231c2bba3d57: + title: 'ext4: clear EXT4_GROUP_INFO_WAS_TRIMMED_BIT even mount with discard' + mainline: 20cee68f5b44fdc2942d20f3172a262ec247b117 + upstream: 6f44db60f9c42265e1e61596994f457f3c30d432 +179d760ab3fee99160a41a12ba49017e61c7ae34: + title: 'smackfs: Use rcu_assign_pointer() to ensure safe assignment in smk_set_cipso' + mainline: 2749749afa071f8a0e405605de9da615e771a7ce + upstream: 029ebd49aab06dd438c1256876730518aef7da35 +09313601d16d88eed265af9c0bd4b029c4524220: + title: 'ext4: avoid negative min_clusters in find_group_orlov()' + mainline: bb0a12c3439b10d88412fd3102df5b9a6e3cd6dc + upstream: 7b98a77cdad322fa3c7babf15c37659a94aa3593 +a71386889f3ee75ee1507c741298d505973cb8d8: + title: 'ext4: return error on ext4_find_inline_entry' + mainline: 4d231b91a944f3cab355fce65af5871fb5d7735b + upstream: ce8f41fca0b6bc69753031afea8fc01f97b5e1af +c3afa5821f1e517165033292a44f8aeb43a8341c: + title: 'ext4: avoid OOB when system.data xattr changes underneath the filesystem' + mainline: c6b72f5d82b1017bad80f9ebf502832fc321d796 + upstream: 5b076d37e8d99918e9294bd6b35a8bbb436819b0 +41f3f6c63ebe7984124f65fdcf0d1ef3bfff9e41: + title: 'nilfs2: fix potential null-ptr-deref in nilfs_btree_insert()' + mainline: 9403001ad65ae4f4c5de368bdda3a0636b51d51a + upstream: 2b78e9df10fb7f4e9d3d7a18417dd72fbbc1dfd0 +1150830d554e2921e69ebb150c3c2d07baa0216d: + title: 'nilfs2: determine empty node blocks as corrupted' + mainline: 111b812d3662f3a1b831d19208f83aa711583fe6 + upstream: 6d7f4fac707a187882b8c610e8889c097b289082 +811f9859f37f3be1ebeb26c221fbaaa593199e99: + title: 'nilfs2: fix potential oob read in nilfs_btree_check_delete()' + mainline: f9c96351aa6718b42a9f42eaf7adce0356bdb5e8 + upstream: f3a9859767c7aea758976f5523903d247e585129 +218417bab6747be0d5ae6e0161a5796d433d75ea: + title: 'perf sched timehist: Fix missing free of session in perf_sched__timehist()' + mainline: 6bdf5168b6fb19541b0c1862bdaa596d116c7bfb + upstream: 1d4d7e56c4aa834f359a29aa64f5f5c01e3453eb +c30bffcf9b9de7aeb85e602a62c1b199e44c7b04: + title: 'perf sched timehist: Fixed timestamp error when unable to confirm event sched_in time' + mainline: 39c243411bdb8fb35777adf49ee32549633c4e12 + upstream: d825de712b59dfd6e256c0ecad7443da652c2b22 +cfec54fd64719d252a6f53f7cf8925d439b5a440: + title: 'perf time-utils: Fix 32-bit nsec parsing' + mainline: 38e2648a81204c9fc5b4c87a8ffce93a6ed91b65 + upstream: c062eebe3b3d98ae2ef61fe8008f2c12bfa31249 +6e0b571ed540f42734528e92a461d02f7da43a01: + title: 'clk: rockchip: Set parent rate for DCLK_VOP clock on RK3228' + mainline: 1d34b9757523c1ad547bd6d040381f62d74a3189 + upstream: 7b9e7a258b9f4d68a9425c67bfee1e1e926d1960 +fe35dd3f675597f83ae26c6d5086a9464c8dc941: + title: 'drivers: media: dvb-frontends/rtl2832: fix an out-of-bounds write error' + mainline: 8ae06f360cfaca2b88b98ca89144548b3186aab1 + upstream: 7065c05c6d58b9b9a98127aa14e9a5ec68173918 +f046671d18d577d0ed12e6cf37913d543be14952: + title: 'drivers: media: dvb-frontends/rtl2830: fix an out-of-bounds write error' + mainline: 46d7ebfe6a75a454a5fa28604f0ef1491f9d8d14 + upstream: 8ffbe7d07b8e76193b151107878ddc1ccc94deb5 +526fd6e5af9933b37ab818aeb51beca91da649be: + title: 'PCI: xilinx-nwl: Fix register misspelling' + mainline: a437027ae1730b8dc379c75fa0dd7d3036917400 + upstream: 43b361ca2c977e593319c8248e549c0863ab1730 +e2138450b0fd6eec4ec39b7c0ddc8bd2c63e1158: + title: 'RDMA/iwcm: Fix WARNING:at_kernel/workqueue.c:#check_flush_dependency' + mainline: 86dfdd8288907f03c18b7fb462e0e232c4f98d89 + upstream: da2708a19f45b4a7278adf523837c8db21d1e2b5 +fab82568499e61ec55a0fac9781cffff4d9d6ba7: + title: 'pinctrl: single: fix missing error code in pcs_probe()' + mainline: cacd8cf79d7823b07619865e994a7916fcc8ae91 + upstream: 4f227c4dc81187fcca9c858b070b9d3f586c9b30 +904ce6f2f61066aab8e6e20b705b8e45a6adafd3: + title: 'clk: ti: dra7-atl: Fix leak of of_nodes' + mainline: 9d6e9f10e2e031fb7bfb3030a7d1afc561a28fea + upstream: d6b680af89ca0bf498d105265bc32061979e87f1 +f6340536595507abf266bf00336263a0fe54b6d5: + title: 'pinctrl: mvebu: Fix devinit_dove_pinctrl_probe function' + mainline: c25478419f6fd3f74c324a21ec007cf14f2688d7 + upstream: 856d3ea97be0dfa5d7369e071c06c9259acfff33 +c3222aec5dbf651634bac47c1137c4b0c5209b13: + title: 'RDMA/cxgb4: Added NULL check for lookup_atid' + mainline: e766e6a92410ca269161de059fff0843b8ddd65f + upstream: b12e25d91c7f97958341538c7dc63ee49d01548f +a4191b6aaf636e979332330d22348c461169a8c7: + title: 'ntb: intel: Fix the NULL vs IS_ERR() bug for debugfs_create_dir()' + mainline: e229897d373a87ee09ec5cc4ecd4bb2f895fc16b + upstream: 20cbc281033ef5324f67f2d54bc539968f937255 +e6eedced9e6d8c218bd815ac165a299c10b37471: + title: 'nfsd: call cache_put if xdr_reserve_space returns NULL' + mainline: d078cbf5c38de83bc31f83c47dcd2184c04a50c7 + upstream: 3e8081ebff12bec1347deaceb6bce0765cce54df +6a591f347a7c201678a3932d5a2ebc08f6fbf50a: + title: 'netfilter: nf_reject_ipv6: fix nf_reject_ip6_tcphdr_put()' + mainline: 9c778fe48d20ef362047e3376dee56d77f8500d4 + upstream: 872eca64c3267dbc5836b715716fc6c03a18eda7 +5489a0e446410516b104e0dbc7901cf96ca0d3e9: + title: 'net: qrtr: Update packets cloning when broadcasting' + mainline: f011b313e8ebd5b7abd8521b5119aecef403de45 + upstream: 7f02a7d8a2890678f0bfd563eb99dd31bafc36eb +6ada46e520db9db21909d1333f2d1f11d0ea47d8: + title: 'netfilter: ctnetlink: compile ctnetlink_label_size with CONFIG_NF_CONNTRACK_EVENTS' + mainline: e1f1ee0e9ad8cbe660f5c104e791c5f1a7cf4c31 + upstream: b14c58e37050703568ab498404018294807209a5 +24ee879c5a39f2f8e92ef5dc6b82ad71890af0b9: + title: 'crypto: aead,cipher - zeroize key buffer after use' + mainline: 23e4099bdc3c8381992f9eb975c79196d6755210 + upstream: 89b9b6fa4463daf820e6a5ef65c3b0c2db239513 +ad481d5cbb6fc4c2fbe847eaab398a667608aa41: + title: Remove *.orig pattern from .gitignore + mainline: 76be4f5a784533c71afbbb1b8f2963ef9e2ee258 + upstream: e19774a171f108433e9fba98a7bfbf65ec2a18de +2903e604526b78ba231eff10d4d32eecc84b7d13: + title: 'soc: versatile: integrator: fix OF node leak in probe() error path' + mainline: 874c5b601856adbfda10846b9770a6c66c41e229 + upstream: 6ab18d4ada166d38046ca8eb9598a3f1fdabd2b7 +5b2fc11840b44e9989d9e931881108d56828398b: + title: 'USB: appledisplay: close race between probe and completion handler' + mainline: 8265d06b7794493d82c5c21a12d7ba43eccc30cb + upstream: 17720dd1be72e4cf5436883cf9d114d0c3e47d19 +7fe54b4967d33e67db68d83c1126f160341fcf3a: + title: 'USB: misc: cypress_cy7c63: check for short transfer' + mainline: 49cd2f4d747eeb3050b76245a7f72aa99dbd3310 + upstream: 638810fe9c0c15ffaa1b4129e54f1e8affb28afd +8265d9830ede6739edfeeac27d7d97fa2ff60f24: + title: 'tty: rp2: Fix reset with non forgiving PCIe host bridges' + mainline: f16dd10ba342c429b1e36ada545fb36d4d1f0e63 + upstream: 279994e23d7e6d2a30f2cc7b7437fedccac0834d +29cbc0c5c3d689694a2de42d48938385c321d073: + title: 'drbd: Fix atomicity violation in drbd_uuid_set_bm()' + mainline: 2f02b5af3a4482b216e6a466edecf6ba8450fa45 + upstream: b674f1b49f9eaec9aac5c64a75e535aa3f359af7 +fa3bcef6588b3c2d861f5888dfe595d671bf790e: + title: 'drbd: Add NULL check for net_conf to prevent dereference in state validation' + mainline: a5e61b50c9f44c5edb6e134ede6fee8806ffafa9 + upstream: 3b3ed68f695ee000e9c9fa536761a0554bfc1340 +722db7a1dfcd05605e4fe31285eb51416a7c5f3f: + title: 'ACPI: sysfs: validate return type of _STR method' + mainline: 4bb1e7d027413835b086aed35bc3f0713bc0f72b + upstream: 92fd5209fc014405f63a7db79802ca4b01dc0c05 +764b74ce49fcac9d4ce79f2382f5a72f7e4ce9ee: + title: 'f2fs: prevent possible int overflow in dir_block_index()' + mainline: 47f268f33dff4a5e31541a990dc09f116f80e61c + upstream: 60bffc6e6b32fb88e5c1234448de5ccf88b590f5 +6e6800bf67a4f4d90bfeac9576562c4b94f86b4f: + title: 'f2fs: avoid potential int overflow in sanity_check_area_boundary()' + mainline: 50438dbc483ca6a133d2bce9d5d6747bcee38371 + upstream: 24dfe070d6d05d62a00c41d5d52af5a448ae7af7 +2b8c76dea7cd29cd76056aa1622f824203672a78: + title: 'vfs: fix race between evice_inodes() and find_inode()&iput()' + mainline: 88b1afbf0f6b221f6c5bb66cc80cd3b38d696687 + upstream: 6cc13a80a26e6b48f78c725c01b91987d61563ef +6aec9a2b2ea68124ec578150968e918b714b4951: + title: 'nfs: fix memory leak in error path of nfs4_do_reclaim' + mainline: 8f6a7c9467eaf39da4c14e5474e46190ab3fb529 + upstream: f239240d65807113e565226b8e0a7ea13390bff3 +4d86dbe788e3493096e0ac52cb1d67da3a97f253: + title: 'PCI: xilinx-nwl: Use irq_data_get_irq_chip_data()' + mainline: e56427068a8d796bb7b8e297f2b6e947380e383f + upstream: d957766954641b4bbd7e359d51206c0b940988a6 +85f9e31d10684f30ee9dd7181101849d66bb46ea: + title: 'PCI: xilinx-nwl: Fix off-by-one in INTx IRQ handler' + mainline: 0199d2f2bd8cd97b310f7ed82a067247d7456029 + upstream: ebf6629fcff1e04e43ef75bd2c2dbfb410a95870 +a221ba7b5c10912b64ef3214f340d306a7f2f716: + title: 'soc: versatile: realview: fix memory leak during device remove' + mainline: 1c4f26a41f9d052f334f6ae629e01f598ed93508 + upstream: 0accfec683c0a3e31c8ba738be0b0014e316d6a0 +d8f64e84dd728d7c0b98963b34a5a8c3bf1cb3a9: + title: 'soc: versatile: realview: fix soc_dev leak during device remove' + mainline: c774f2564c0086c23f5269fd4691f233756bf075 + upstream: b05605f5a42b4719918486e2624e44f3fa9e818f +763e7b56a44b2c0b2adf924cfdbe078001aa424d: + title: 'usb: yurex: Replace snprintf() with the safer scnprintf() variant' + mainline: 86b20af11e84c26ae3fde4dcc4f490948e3f8035 + upstream: a2ac6cb8aaa2eb23209ffa641962dd62958522a1 +4445f05310701e77940cd1105f380f29838acbe0: + title: 'USB: misc: yurex: fix race between read and write' + mainline: 93907620b308609c72ba4b95b09a6aa2658bb553 + upstream: 1250cd9dee69ace62b9eb87230e8274b48bc9460 +a7f890cc3d58e08cf2ec730b95376b94862c6576: + title: 'i2c: aspeed: Update the stop sw state when the bus recovery occurs' + mainline: 93701d3b84ac5f3ea07259d4ced405c53d757985 + upstream: 16cfd59341f73157ef319c588e639fc1013d94cf +bdd844b72fada07b3849e5eea841181c97d16f3e: + title: 'i2c: isch: Add missed ''else''' + mainline: 1db4da55070d6a2754efeb3743f5312fc32f5961 + upstream: bbe3396e96a2ee857cf2206784f06bc3f49ff240 +a8e1dbee0dfa30fe4d52939c495d469541cf5c8f: + title: 'usb: yurex: Fix inconsistent locking bug in yurex_read()' + mainline: e7d3b9f28654dbfce7e09f8028210489adaf6a33 + upstream: 709b0b70011b577bc78406e76c4563e10579ddad +198501d96c89d17a8ee79587f593537f2773aa07: + title: 'mailbox: rockchip: fix a typo in module autoloading' + mainline: e92d87c9c5d769e4cb1dd7c90faa38dddd7e52e3 + upstream: ae2d6fdd49669f35ed3a1156a4aab66a37e6a450 +07726a73bd9cdc1843231a43985b5d310ee37fb2: + title: 'mailbox: bcm2835: Fix timeout during suspend mode' + mainline: dc09f007caed3b2f6a3b6bd7e13777557ae22bfd + upstream: 4e1e03760ee7cc4779b6306867fe0fc02921b963 +5f8a65de609aaf9a0ef037ca8110bc9a3361c6c4: + title: 'ceph: remove the incorrect Fw reference check when dirtying pages' + mainline: c08dfb1b49492c09cf13838c71897493ea3b424e + upstream: c26c5ec832dd9e9dcd0a0a892a485c99889b68f0 +51f85acdf26900ae9d4b89f2a92b1aeb3c84cb5a: + title: 'netfilter: nf_tables: prevent nf_skb_duplicated corruption' + mainline: 92ceba94de6fb4cee2bf40b485979c342f44a492 + upstream: 50067d8b3f48e4cd4c9e817d3e9a5b5ff3507ca7 +d8d31cfbc82a0ae2e5ec55c7017ffbacc7f5fa4f: + title: 'r8152: Factor out OOB link list waits' + mainline: 5f71c84038d39def573744a145c573758f52a949 + upstream: e8bed7c8845878f8c60e76f0a10d61ea2f709580 +5f9dc86cd8db3619cde8c03030791e3785d57212: + title: 'net: ethernet: lantiq_etop: fix memory disclosure' + mainline: 45c0de18ff2dc9af01236380404bbd6a46502c69 + upstream: 905f06a34f960676e7dc77bea00f2f8fe18177ad +e2c585677eacdc04469488dac62f2fed9e626fed: + title: 'ALSA: hda/generic: Unconditionally prefer preferred_dacs pairs' + mainline: 1c801e7f77445bc56e5e1fec6191fd4503534787 + upstream: a66828fdf8ba3ccb30204f7e44761007a7437a3a +3633a4341c2cea95f2294738f08398c864731ba8: + title: 'ALSA: hda/conexant: Fix conflicting quirk for System76 Pangolin' + mainline: b3ebb007060f89d5a45c9b99f06a55e36a1945b5 + upstream: ba4ec41f6958bd5fc314b98c0ba17f5bb9a11375 +e4ca685be5fe41db336a29877df4a012f919c6ae: + title: 'f2fs: Require FMODE_WRITE for atomic write ioctls' + mainline: 4f5a100f87f32cb65d4bb1ad282a08c92f6f591e + upstream: 700f3a7c7fa5764c9f24bbf7c78e0b6e479fa653 +404a43ffc1ecfac85855f309721cc4000e9e9171: + title: 'wifi: ath9k: fix possible integer overflow in ath9k_get_et_stats()' + mainline: 3f66f26703093886db81f0610b97a6794511917c + upstream: 600f668453be81b25dcc2f20096eac2243aebdaa +1bb884ba1941c7a5cf9cf7cc4037f3c3a6b106d4: + title: 'wifi: ath9k_htc: Use __skb_set_length() for resetting urb before resubmit' + mainline: 94745807f3ebd379f23865e6dab196f220664179 + upstream: e6b9bf32e0695e4f374674002de0527d2a6768eb +b8516592581c30f76def9221190dc9380f8da6c7: + title: 'net: hisilicon: hip04: fix OF node leak in probe()' + mainline: 17555297dbd5bccc93a01516117547e26a61caf1 + upstream: 8c354ddfec8126ef58cdcde82dccc5cbb2c34e45 +3d3fbd73239ca0d6f8e2965cd98982aecbaa79e8: + title: 'net: hisilicon: hns_dsaf_mac: fix OF node leak in hns_mac_get_info()' + mainline: 5680cf8d34e1552df987e2f4bb1bff0b2a8c8b11 + upstream: 7df217a21b74e730db216984218bde434dffc34b +e07b666a56c1d67776a3189f4493afd19e050305: + title: 'net: hisilicon: hns_mdio: fix OF node leak in probe()' + mainline: e62beddc45f487b9969821fad3a0913d9bc18a2f + upstream: 963174dad7d4993ff3a4e1b43cefd296df0296b4 +165bb61dc09819ee1c5f1a33fc9709f57b6cd5e2: + title: 'ACPICA: Fix memory leak if acpi_ps_get_next_namepath() fails' + mainline: 5accb265f7a1b23e52b0ec42313d1e12895552f4 + upstream: b017675cfbd126954d3b45afbdd6ee345a0ce368 +5d842b757d1a15ffb7abcd840bed276126302558: + title: 'ACPICA: Fix memory leak if acpi_ps_get_next_field() fails' + mainline: e6169a8ffee8a012badd8c703716e761ce851b15 + upstream: 40fa60e0bf406ced3dfd857015dafdcd677a4929 +e6f96efbe6713164a9656bc0b4fc70d17f253486: + title: 'ACPI: EC: Do not release locks during operation region accesses' + mainline: dc171114926ec390ab90f46534545420ec03e458 + upstream: 8d5dd2d2ef6cc87799b4ff915e561814d3c35d2c +74270bedeea7735c0ba9518b3fee24181e0c6da2: + title: 'ACPICA: check null return of ACPI_ALLOCATE_ZEROED() in acpi_db_convert_to_package()' + mainline: a5242874488eba2b9062985bf13743c029821330 + upstream: 4669da66ebc5b09881487f30669b0fcdb462188e +f5ce9568dc7b5120dbf2e74500c11266592afd7a: + title: 'tipc: guard against string buffer overrun' + mainline: 6555a2a9212be6983d2319d65276484f7c5f431a + upstream: 8298b6e45fb4d8944f356b08e4ea3e54df5e0488 +5601f1cd6c89caede02c512aceba1122c1cb3883: + title: 'ipv4: Check !in_dev earlier for ioctl(SIOCSIFADDR).' + mainline: e3af3d3c5b26c33a7950e34e137584f6056c4319 + upstream: 098a9b686df8c560f5f7683a1a388646aae0f023 +87987dd1f838cdbb660e1ec61ec971fd2f9ea6aa: + title: 'ipv4: Mask upper DSCP bits and ECN bits in NETLINK_FIB_LOOKUP family' + mainline: 8fed54758cd248cd311a2b5c1e180abef1866237 + upstream: 05905659e2591368b50eaa79d94c75aeb18c46ef +3b69e39d186eea8fc7e7be3ce493386062cfa847: + title: 'ACPICA: iasl: handle empty connection_node' + mainline: a0a2459b79414584af6c46dd8c6f866d8f1aa421 + upstream: ea69502703bd3c38c3f016f8b6614ef0de2b94c2 +86713ec5023b52e2c29abf8d15dbd59318bc1ea0: + title: 'wifi: mwifiex: Fix memcpy() field-spanning write warning in mwifiex_cmd_802_11_scan_ext()' + mainline: 498365e52bebcbc36a93279fe7e9d6aec8479cee + upstream: b55c8848fdc81514ec047b2a0ec782ffe9ab5323 +62fda267887348a38a2931739e43e3c3cf22f7ab: + title: 'signal: Replace BUG_ON()s' + mainline: 7f8af7bac5380f2d95a63a6f19964e22437166e1 + upstream: 0f9c27fbb8a52c50ff7d2659386f1f43e7fbddee +26883705cb402fecd342e313afc02958f3c4c9e2: + title: 'ALSA: asihpi: Fix potential OOB array access' + mainline: 7b986c7430a6bb68d523dac7bfc74cbd5b44ef96 + upstream: a6bdb691cf7b66dcd929de1a253c5c42edd2e522 +8835daf1e8994a559b89b4935218a7f9f0edefb2: + title: 'ALSA: hdsp: Break infinite MIDI input flush loop' + mainline: c01f3815453e2d5f699ccd8c8c1f93a5b8669e59 + upstream: dc0c68e2e6e2c544b1361baa1ca230569ab6279d +5c788f3e00af8da7b9e127980d0d782713d0ac6b: + title: 'fbdev: pxafb: Fix possible use after free in pxafb_task()' + mainline: 4a6921095eb04a900e0000da83d9475eb958e61e + upstream: e657fa2df4429f3805a9b3e47fb1a4a1b02a72bd +c44e3d43c84de7db15a4743c5683c5cef64e986e: + title: 'power: reset: brcmstb: Do not go into infinite loop if reset fails' + mainline: cf8c39b00e982fa506b16f9d76657838c09150cb + upstream: 61a6d482734804e0a81c3951b8a0d3852085a2cc +c9591bc1d6b4f3722215d12cc1626f04783b63bf: + title: 'ata: sata_sil: Rename sil_blacklist to sil_quirks' + mainline: 93b0f9e11ce511353c65b7f924cf5f95bd9c3aba + upstream: a57a97bb79d5123442068f887e5f1614ed4c752c +ac92419af8e1b7f89db62054d06b3be6baa5bb41: + title: 'jfs: UBSAN: shift-out-of-bounds in dbFindBits' + mainline: b0b2fc815e514221f01384f39fbfbff65d897e1c + upstream: 830d908130d88745f0fd3ed9912cc381edf11ff1 +79bf2ab235866b9421e5606ebed6984c19f2e0ae: + title: 'jfs: Fix uaf in dbFreeBits' + mainline: d6c1b3599b2feb5c7291f5ac3a36e5fa7cedb234 + upstream: 4ac58f7734937f3249da734ede946dfb3b1af5e4 +232dea142d9e232619aff122916b326975dd2511: + title: 'jfs: check if leafidx greater than num leaves per dmap tree' + mainline: d64ff0d2306713ff084d4b09f84ed1a8c75ecc32 + upstream: d76b9a4c283c7535ae7c7c9b14984e75402951e1 +643f01f400ff296cd1263fcd1896e261b64ed1c6: + title: 'jfs: Fix uninit-value access of new_ea in ea_buffer' + mainline: 2b59ffad47db1c46af25ccad157bb3b25147c35c + upstream: 7b24d41d47a6805c45378debf8bd115675d41da8 +4e150b2ed11f1ce7bfe2e243637886862eda74d3: + title: 'drm/radeon/r100: Handle unknown family in r100_cp_init_microcode()' + mainline: c6dbab46324b1742b50dc2fb5c1fee2c28129439 + upstream: 7d91358e819a2761a5feff67d902456aaf4e567a +c19d34cfa203f3c75b5e25a6f657cb4a8adf372e: + title: 'of/irq: Refer to actual buffer size in of_irq_parse_one()' + mainline: 39ab331ab5d377a18fbf5a0e0b228205edfcc7f4 + upstream: 64bf240f2dfc242d507c7f8404cd9938d61db7cc +9d2a9cdceb4ae4c4bd1ee308052de6f10602cb15: + title: 'ext4: ext4_search_dir should return a proper error' + mainline: cd69f8f9de280e331c9e6ff689ced0a688a9ce8f + upstream: a15514ec9f080fe24ee71edf8b97b49ab9b8fc80 +6982e3324dbcc51b1cec4f5488fc6a0bbf7be4ad: + title: 'ext4: fix i_data_sem unlock order in ext4_ind_migrate()' + mainline: cc749e61c011c255d81b192a822db650c68b313f + upstream: 4192adefc9c570698821c5eb9873320eac2fcbf1 +19730760522e21af34cdab871e3908e7b7dc8521: + title: 'spi: s3c64xx: fix timeout counters in flush_fifo' + mainline: 68a16708d2503b6303d67abd43801e2ca40c208d + upstream: 12f47fdd4fb4c4592c9cfad6c21b3855a6bdadb8 +1fad7228e67992a1b120ff76b4887190ca32e8f6: + title: 'selftests: breakpoints: use remaining time to check if suspend succeed' + mainline: c66be905cda24fb782b91053b196bd2e966f95b7 + upstream: 8dea5ffbd147f6708e2f70f04406d8b711873433 +e8219bced027378a40a33c1044eca3135db5e83d: + title: 'selftests: vDSO: fix vDSO symbols lookup for powerpc64' + mainline: ba83b3239e657469709d15dcea5f9b65bf9dbf34 + upstream: 058d587e7f1520934823bae8f41db3c0b1097b59 +e9851b22b5a7211b32db852c9e6a6910230faebf: + title: 'i2c: xiic: Wait for TX empty to avoid missed TX NAKs' + mainline: 521da1e9225450bd323db5fa5bca942b1dc485b7 + upstream: 8a6158421b417bb0841c4c7cb7a649707a1089d2 +e8c0b2c2e4064aa5e3f7fdb517265f788156fdc3: + title: 'spi: bcm63xx: Fix module autoloading' + mainline: 909f34f2462a99bf876f64c5c61c653213e32fce + upstream: 54feac119535e0273730720fe9a4683389f71bff +7a6139e316c9dd16f9f3dcf8a225ddfbe487c6db: + title: 'perf/core: Fix small negative period being ignored' + mainline: 62c0b1061593d7012292f781f11145b2d46f43ab + upstream: 7fddba7b1bb6f1cc35269e510bc832feb3c54b11 +38e7f1b9fd9e1f67d748242d07a430c85f9024a8: + title: 'ALSA: core: add isascii() check to card ID generator' + mainline: d278a9de5e1837edbe57b2f1f95a104ff6c84846 + upstream: 3b9b0efb330f9d2ab082b7f426993d7bac3f2c66 +9e7a4c15b80cc0547d89230298eb7d9e71afb999: + title: 'ext4: no need to continue when the number of entries is 1' + mainline: 1a00a393d6a7fb1e745a41edd09019bd6a0ad64c + upstream: 64c8c484242b141998f7408596ddb2dc6da4b1d3 +ffe3a60234391b1045ee3ed64896bf14da3613b3: + title: 'ext4: propagate errors from ext4_find_extent() in ext4_insert_range()' + mainline: 369c944ed1d7c3fb7b35f24e4735761153afe7b3 + upstream: d38a882fadb0431747342637ad3a9166663e8a86 +d493509e9bd943f52ecb658bce751a5665491843: + title: 'ext4: fix incorrect tid assumption in __jbd2_log_wait_for_space()' + mainline: 972090651ee15e51abfb2160e986fa050cfc7a40 + upstream: 330ecdae721e62cd7ee287fb3cd7f88afa26e85a +5ddb510c87c40bf7bc87aa90c9e6689970ea7733: + title: 'ext4: aovid use-after-free in ext4_ext_insert_extent()' + mainline: a164f3a432aae62ca23d03e6d926b122ee5b860d + upstream: e17ebe4fdd7665c93ae9459ba40fcdfb76769ac1 +47c536f76d494c3b5e14839b5857c8f8dbba1242: + title: 'ext4: fix double brelse() the buffer of the extents path' + mainline: dcaa6c31134c0f515600111c38ed7750003e1b9c + upstream: d4574bda63906bf69660e001470bfe1a0ac524ae +5a0581e18a4b83fc0931a64224872c539457d2cd: + title: 'ext4: fix incorrect tid assumption in ext4_wait_for_tail_page_commit()' + mainline: dd589b0f1445e1ea1085b98edca6e4d5dedb98d0 + upstream: 93fd249f197eeca81bb1c744ac8aec2804afd219 +c87ca927b9e3d847d7c44ecf9f07528f1ef033e4: + title: 'of/irq: Support #msi-cells=<0> in of_msi_get_domain' + mainline: db8e81132cf051843c9a59b46fa5a071c45baeb3 + upstream: 030de6c36c48a40f42d7d59732ee69990340e0a1 +d3355be0380a6ec95a835e359a68d4f42af056b8: + title: 'jbd2: stop waiting for space when jbd2_cleanup_journal_tail() returns error' + mainline: f5cacdc6f2bb2a9bf214469dd7112b43dd2dd68a + upstream: 801a35dfef6996f3d5eaa96a59caf00440d9165e +0835b9f76d8069704f9620b14593572fb33fc20a: + title: 'ocfs2: fix the la space leak when unmounting an ocfs2 volume' + mainline: dfe6c5692fb525e5e90cefe306ee0dffae13d35f + upstream: 5a074861ae1b6262b50fa9780957db7d17b86672 +74930aa28c3a2c7c23718c81400a79bb362bc740: + title: 'ocfs2: fix uninit-value in ocfs2_get_block()' + mainline: 2af148ef8549a12f8025286b8825c2833ee6bcb8 + upstream: e95da10e6fcac684895c334eca9d95e2fd10b0fe +760f46ded0728ed84afb0a9859c89b0f92dca609: + title: 'ocfs2: reserve space for inline xattr before attaching reflink tree' + mainline: 5ca60b86f57a4d9648f68418a725b3a7de2816b0 + upstream: 5c9807c523b4fca81d3e8e864dabc8c806402121 +a03082a35421c27be3c50fe1d15abf899546cc66: + title: 'ocfs2: cancel dqi_sync_work before freeing oinfo' + mainline: 35fccce29feb3706f649726d410122dd81b92c18 + upstream: fc5cc716dfbdc5fd5f373ff3b51358174cf88bfc +1ca500197bcc7e1e485788aed1dacdfb9f973ff9: + title: 'ocfs2: remove unreasonable unlock in ocfs2_read_blocks' + mainline: c03a82b4a0c935774afa01fd6d128b444fd930a1 + upstream: 5245f109b4afb6595360d4c180d483a6d2009a59 +c3bd19a739dcaaae0cbab86f0c0b0b27eda93601: + title: 'ocfs2: fix null-ptr-deref when journal load failed.' + mainline: 5784d9fcfd43bd853654bb80c87ef293b9e8e80a + upstream: fd89d92c1140cee8f59de336cb37fa65e359c123 +ae8eab265d15a47a46d1c6b58a75d801814cb86c: + title: 'ocfs2: fix possible null-ptr-deref in ocfs2_set_buffer_uptodate' + mainline: 33b525cef4cff49e216e4133cc48452e11c0391e + upstream: 190d98bcd61117a78fe185222d162180f061a6ca +fb101f7fce16d22e18b8bf9fa9d13373f38536e6: + title: 'clk: rockchip: fix error for unknown clocks' + mainline: 12fd64babaca4dc09d072f63eda76ba44119816a + upstream: 2f1e1a9047b1644d05284fc0da1d6ab9c4434cf6 +62369afcf4db28d2c18ed331f75448c97ee53bac: + title: 'media: uapi/linux/cec.h: cec_msg_set_reply_to: zero flags' + mainline: 599f6899051cb70c4e0aa9fd591b9ee220cb6f14 + upstream: 4afab2197e530b480c4cc099255d12a08c6a1f93 +66dd5129c4b2756157ab65da5826aba26c3adc1d: + title: 'media: venus: fix use after free bug in venus_remove due to race condition' + mainline: c5a85ed88e043474161bbfe54002c89c1cb50ee2 + upstream: 5098b9e6377577fe13d03e1d8914930f014a3314 +8eafd43568c906c485c18f684d67a19ec2e4edcd: + title: 'iio: magnetometer: ak8975: Fix reading for ak099xx sensors' + mainline: 129464e86c7445a858b790ac2d28d35f58256bbe + upstream: 2e78095a0cc35d6210de051accb2fe45649087cd +f24bdf3d0d8335026c719db068c6472acbf0839d: + title: 'tomoyo: fallback to realpath if symlink''s pathname does not exist' + mainline: ada1986d07976d60bed5017aa38b7f7cf27883f7 + upstream: 455246846468503ac739924d5b63af32c6261b31 +bd7cd397ff7943c113c695eb7cd40b4b6afc06bc: + title: 'Input: adp5589-keys - fix adp5589_gpio_get_value()' + mainline: c684771630e64bc39bddffeb65dd8a6612a6b249 + upstream: 9ff7ae486d51c0da706a29b116d7fa399db677f5 +3fd6acda2f9ff74d3281d09cc1ce73e4ad65c469: + title: 'btrfs: wait for fixup workers before stopping cleaner kthread during umount' + mainline: 41fd1e94066a815a7ab0a7025359e9b40e4b3576 + upstream: cd686dfff63f27d712877aef5b962fbf6b8bc264 +1acfbc7cdb47b0749f0cd34c0f2b622127307b1b: + title: 'gpio: davinci: fix lazy disable' + mainline: 3360d41f4ac490282fddc3ccc0b58679aa5c065d + upstream: e9b751c0d7abde1837ee1510cbdc705570107ef1 +57d9a27da5d76dde393792654826c5371b51c77b: + title: 'arm64: Add Cortex-715 CPU part definition' + mainline: 07e39e60bbf0ccd5f895568e1afca032193705c0 + upstream: 3781b92af63e7a53805e105875d4dace65bcefef +0a56f80bfe3292c9e87a85762ac9693abadec8c5: + title: 'uprobes: fix kernel info leak via "[uprobes]" vma' + mainline: 34820304cc2cd1804ee1f8f3504ec77813d29c8e + upstream: f31f92107e5a8ecc8902705122c594e979a351fe +2c85a79aba7b7724ff506258d04032d4f1b4f503: + title: 'nfsd: use ktime_get_seconds() for timestamps' + mainline: b3f255ef6bffc18a28c3b6295357f2a3380c033f + upstream: f81fcf39509d30cb5f1c659099c1d8f0c2a9a57a +2002a57e83b51260eb9de16d0935c7291c203c13: + title: 'nfsd: fix delegation_blocked() to block correctly for at least 30 seconds' + mainline: 45bb63ed20e02ae146336412889fe5450316a84f + upstream: ccbd18223985635b8dbb1393bacac9e1a5fa3f2f +36949604b7d7db06dd36f3871bf9c2d6a06d8b89: + title: 'ext4: fix inode tree inconsistency caused by ENOMEM' + mainline: 3f5424790d4377839093b68c12b130077a4e4510 + upstream: eea5a4e7fe4424245aeba77bb0f24a38a1bead16 +825559c99e1897b27fe9034af05c2d4febcf50e2: + title: 'tracing: Remove precision vsnprintf() check from print event' + mainline: 5efd3e2aef91d2d812290dcb25b2058e6f3f532c + upstream: f3de4b5d1ab8139aee39cc8afbd86a2cf260ad91 +c69c205a6a13dbe8ff4f2b65ce5170a4e182edae: + title: 'virtio_console: fix misc probe bugs' + mainline: b9efbe2b8f0177fa97bfab290d60858900aa196b + upstream: 42a7c0fd6e5b7c5db8af8ab2bab6eff2a723b168 +fe91966767513b8ae7f637bfc2c2fb68636a37dc: + title: 's390/facility: Disable compile time optimization for decompressor code' + mainline: 0147addc4fb72a39448b8873d8acdf3a0f29aa65 + upstream: f559306a168fb92a936beaa1f020f5c45cdedac6 +cc84719d9b691915a4fde154667d84e2ad74a0c9: + title: 's390/mm: Add cond_resched() to cmm_alloc/free_pages()' + mainline: 131b8db78558120f58c5dc745ea9655f6b854162 + upstream: a12b82d741350b89b4df55fa8a4e5c0579d919cb +0c92a05a334ec247c1c27ecfd35705b865a2eb5d: + title: 'ext4: nested locking for xattr inode' + mainline: d1bc560e9a9c78d0b2314692847fc8661e0aeb99 + upstream: c0f57dd0f1603ae27ef694bacde66147f9d57d32 +2ac0320e88b9c9005998c2e3b5734f7961070cc6: + title: 'clk: bcm: bcm53573: fix OF node leak in init' + mainline: f92d67e23b8caa81f6322a2bad1d633b00ca000e + upstream: 8ac316aed34fa1a49ebbaa93465bf8bfe73e9937 +98450b5f38eb8a75e2b40b3174bc00600347d329: + title: 'i2c: i801: Use a different adapter-name for IDF adapters' + mainline: 43457ada98c824f310adb7bd96bd5f2fcd9a3279 + upstream: a2eb6e5a03de2ecbba68384c1c8f2a34c89ed7b8 +3df84428b103d405f250cfdf5936537dedc7c2fd: + title: 'media: videobuf2-core: clear memory related fields in __vb2_plane_dmabuf_put()' + mainline: 6a9c97ab6b7e85697e0b74e86062192a5ffffd99 + upstream: 940e83f377cb3863bd5a4e483ef1b228fbc86812 +fffec2079f8107bb33fd1a1928239c142510aa2f: + title: 'usb: chipidea: udc: enable suspend interrupt after usb reset' + mainline: e4fdcc10092fb244218013bfe8ff01c55d54e8e4 + upstream: 93233aa73b3ac373ffd4dd9e6fb7217a8051b760 +ca910899b554f8d476bcf4b14980f8845269e742: + title: 'tools/iio: Add memory allocation failure check for trigger_name' + mainline: 3c6b818b097dd6932859bcc3d6722a74ec5931c1 + upstream: e0daff560940b0d370d4328b9ff9294b7f893daa +a22a1046d7d1b88568ba8da927e821b4f0babaac: + title: 'driver core: bus: Return -EIO instead of 0 when show/store invalid bus attribute' + mainline: c0fd973c108cdc22a384854bc4b3e288a9717bb2 + upstream: aca863154863d0a97305a089399cee1d39e852da +ef5963eabdc48181eee93f7233f433cc2a588ea2: + title: 'fbdev: sisfb: Fix strbuf array overflow' + mainline: 9cf14f5a2746c19455ce9cb44341b5527b5e19c3 + upstream: 433c84c8495008922534c5cafdae6ff970fb3241 +5e4b995a3aca9fdd2272546ec5667c32747443f4: + title: 'tcp: fix tcp_enter_recovery() to zero retrans_stamp when it''s safe' + mainline: b41b4cbd9655bcebcce941bef3601db8110335be + upstream: a58878d7106b229a2d91a647629a0a7bedccaa8a +29037061623d008c997450f67e5b5d05f756bb7c: + title: 'netfilter: br_netfilter: fix panic with metadata_dst skb' + mainline: f9ff7665cd128012868098bbd07e28993e314fdb + upstream: f07131239a76cc10d5e82c19d91f53cb55727297 +648c574af6e92af84ebd54f3d8044c21ae820655: + title: 'Bluetooth: RFCOMM: FIX possible deadlock in rfcomm_sk_state_change' + mainline: 08d1914293dae38350b8088980e59fbc699a72fe + upstream: b77b3fb12fd483cae7c28648903b1d8a6b275f01 +55a6946bb46cdc7b528dfbd30bb2fb2376525619: + title: 'gpio: aspeed: Add the flush write to ensure the write complete.' + mainline: 1bb5a99e1f3fd27accb804aa0443a789161f843c + upstream: 8c4d52b80f2d9dcc5053226ddd18a3bb1177c8ed +5a801c62a51b1c210698f59e40aa5417f071d7fc: + title: 'igb: Do not bring the device up after non-fatal error' + mainline: 330a699ecbfc9c26ec92c6310686da1230b4e7eb + upstream: dca2ca65a8695d9593e2cf1b40848e073ad75413 +1fde287fcb280b7ae6a4a0b3edc99dc455a5c30d: + title: 'net: ibm: emac: mal: fix wrong goto' + mainline: 08c8acc9d8f3f70d62dd928571368d5018206490 + upstream: 4bd7823cacb21e32f3750828148ed5d18d3bf007 +cebdbf6f73b01661300d39d2064f6d5c69f24f8d: + title: 'ppp: fix ppp_async_encode() illegal access' + mainline: 40dddd4b8bd08a69471efd96107a4e1c73fabefc + upstream: 4151ec65abd755133ebec687218fadd2d2631167 +a5b30e4f682b2971d4455afa1b3d3531d37534e6: + title: 'CDC-NCM: avoid overflow in sanity checking' + mainline: 8d2b1a1ec9f559d30b724877da4ce592edc41fdc + upstream: a612395c7631918e0e10ea48b9ce5ab4340f26a6 +35af89640d1d44ff6c7973922c43c4f5b83af8b9: + title: 'HID: plantronics: Workaround for an unexcepted opposite volume key' + mainline: 87b696209007b7c4ef7bdfe39ea0253404a43770 + upstream: b1ce11ce52359eefa7bc33be13e946a7154fd35f +93cddf4d4c509f0ec53017297294d0a302ffd0da: + title: 'Revert "usb: yurex: Replace snprintf() with the safer scnprintf() variant"' + mainline: 71c717cd8a2e180126932cc6851ff21c1d04d69a + upstream: 6f8f23390160355a4a571230986d524fd3929c2a +dc89df53f4c97dedfcb4568191037e3ebeef159d: + title: 'usb: xhci: Fix problem with xhci resume from suspend' + mainline: d44238d8254a36249d576c96473269dbe500f5e4 + upstream: 52e998173cfed7d6953b3185f2da174712ce4a8f +b742600e3e092e2857196e7173387925a5111631: + title: 'usb: storage: ignore bogus device raised by JieLi BR21 USB sound chip' + mainline: a6555cb1cb69db479d0760e392c175ba32426842 + upstream: 7a8df891d679d6627d91e334a734578ca16518eb +44dcccd712b6d2c691634dfd49fa5903ad691fc8: + title: 'net: Fix an unsafe loop on the list' + mainline: 1dae9f1187189bc09ff6d25ca97ead711f7e26f9 + upstream: 464801a0f6ccb52b21faa33bac6014fd74cc5e10 +d669e5f7d2c8746e3ed062d73b9426fb09039573: + title: 'posix-clock: Fix missing timespec64 check in pc_clock_settime()' + mainline: d8794ac20a299b647ba9958f6d657051fc51a540 + upstream: 29f085345cde24566efb751f39e5d367c381c584 +7d6f8b1d7746e0b3269b0e61c8d374d09a6b771b: + title: 'arm64: probes: Remove broken LDR (literal) uprobe support' + mainline: acc450aa07099d071b18174c22a1119c57da8227 + upstream: cc86f2e9876c8b5300238cec6bf0bd8c842078ee +ed1774c811054dd8ff235b4830782572676f7b00: + title: 'arm64: probes: Fix simulate_ldr*_literal()' + mainline: 50f813e57601c22b6f26ced3193b9b94d70a2640 + upstream: 19f4d3a94c77295ee3a7bbac91e466955f458671 +9b9e89aeb9b0df1de45bb186662572a1b8b921e4: + title: 'PCI: Add function 0 DMA alias quirk for Glenfly Arise chip' + mainline: 9246b487ab3c3b5993aae7552b7a4c541cc14a49 + upstream: 029efe3b57d981b0c239e50f3513838cae121578 +5a2b55312783d9a4f60898793dd5aadea0360504: + title: 'fat: fix uninitialized variable' + mainline: 963a7f4d3b90ee195b895ca06b95757fcba02d1a + upstream: 09b2d2a2267187336b446f4c08e6204c30688bcf +70b388b0efb874251eee3df2059246413ee623e7: + title: 'KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin()' + mainline: 49f683b41f28918df3e51ddc0d928cb2e934ccdb + upstream: 11a772d5376aa6d3e2e69b5b5c585f79b60c0e17 +b291c7c1eed423874cdbc28d717d0f4944b4b0fc: + title: 's390/sclp_vt220: Convert newlines to CRLF instead of LFCR' + mainline: dee3df68ab4b00fff6bdf9fc39541729af37307c + upstream: ce6924fdafb09a7231ecfcea119b4e4c83023c97 +4386af4473d15479b5c96b9941faf351b614bfbb: + title: 'KVM: s390: Change virtual to physical address access in diag 0x258 handler' + mainline: cad4b3d4ab1f062708fff33f44d246853f51e966 + upstream: a9dee098c6931dfd75abe015b04c1c66fa1507f6 +67d246dc91071f9cc960c2f6f969857bb2922c7f: + title: 'x86/cpufeatures: Define X86_FEATURE_AMD_IBPB_RET' + mainline: ff898623af2ed564300752bba83a680a1e4fec8d + upstream: 9e460c6c7c8b72c4c23853627789c812fd2c3cf5 +bc865c54ef9ef2e2ef7097787e63ed03b1d5b6bc: + title: 'drm/vmwgfx: Handle surface check failure correctly' + mainline: 26498b8d54373d31a621d7dec95c4bd842563b3b + upstream: f924af529417292c74c043c627289f56ad95a002 +76b3e6598c2a4f5ecf6ae67f03f4fb0f85f90a61: + title: 'iio: dac: stm32-dac-core: add missing select REGMAP_MMIO in Kconfig' + mainline: 27b6aa68a68105086aef9f0cb541cd688e5edea8 + upstream: 842911035eb20561218a0742f3e54e7978799c6a +6e6aa73932d86ce5335cdb2e50f9c9c46ad85b53: + title: 'iio: hid-sensors: Fix an error handling path in _hid_sensor_set_report_latency()' + mainline: 3a29b84cf7fbf912a6ab1b9c886746f02b74ea25 + upstream: 485744b5bd1f15a3ce50f70af52a9d68761c57dd +abf9b8555e8b720496841609025a6c9aa1a9188f: + title: 'iio: light: opt3001: add missing full-scale range value' + mainline: 530688e39c644543b71bdd9cb45fdfb458a28eaa + upstream: 4401780146a19d65df6f49d5273855f33c9c0a35 +edc69f40262617c7257c732edc12d613a9687e86: + title: 'Bluetooth: btusb: Fix regression with fake CSR controllers 0a12:0001' + mainline: 2c1dda2acc4192d826e84008d963b528e24d12bc + upstream: e32ae4a12628bb2c1046715f47ea7d57fc2b9cbf +98205e0fb61135f36e438d637862d78061396814: + title: 'xhci: Fix incorrect stream context type macro' + mainline: 6599b6a6fa8060145046d0744456b6abdb3122a7 + upstream: e76b961d32fd94c7af80bc0ea35e345f1f838c59 +14f0ba83331cb218f676f0cf81cda64c290c3ed4: + title: 'USB: serial: option: add support for Quectel EG916Q-GL' + mainline: 540eff5d7faf0c9330ec762da49df453263f7676 + upstream: cdb2c8b31ea3ba692c9ab213369b095e794c8f39 +1128e72fca7832afc143680fe12d0c938b3270d7: + title: 'USB: serial: option: add Telit FN920C04 MBIM compositions' + mainline: 6d951576ee16430822a8dee1e5c54d160e1de87d + upstream: 20cc2b146a8748902a5e4f5aa70457f48174b5c4 +f3fce0c6ccd5abc38c912f3233df450af041b90c: + title: 'parport: Proper fix for array out-of-bounds access' + mainline: 02ac3a9ef3a18b58d8f3ea2b6e46de657bf6c4f9 + upstream: 8aadef73ba3b325704ed5cfc4696a25c350182cf +adeaa3e2c7e54bbd83852d8e302ca76d7a1f256d: + title: 'x86/apic: Always explicitly disarm TSC-deadline timer' + mainline: ffd95846c6ec6cf1f93da411ea10d504036cab42 + upstream: e75562346cac53c7e933373a004b1829e861123a +4ff716b2bb631baecc1eb6eca17a3d23b2850ad7: + title: 'nilfs2: propagate directory read errors from nilfs_find_entry()' + mainline: 08cfa12adf888db98879dbd735bc741360a34168 + upstream: bb857ae1efd3138c653239ed1e7aef14e1242c81 +85ee27f8ef66432d98e386248c7d8fa90a092b9d: + title: 'RDMA/bnxt_re: Fix incorrect AVID type in WQE structure' + mainline: 9ab20f76ae9fad55ebaf36bdff04aea1c2552374 + upstream: 3e98839514a883188710c5467cf3b62a36c7885a +6371ff58cca7cd85a5f875a9e08b51f3bfa55a6e: + title: 'RDMA/cxgb4: Fix RDMA_CM_EVENT_UNREACHABLE error for iWARP' + mainline: c659b405b82ead335bee6eb33f9691bf718e21e8 + upstream: 361576c9d34bd16b089864545073db383e372ba8 +093416fbc1a9209422cb76784577eae3430a207d: + title: 'RDMA/bnxt_re: Return more meaningful error' + mainline: 98647df0178df215b8239c5c365537283b2852a6 + upstream: 8fb8f613a904d3ccf61fa824a95f2fa2c3b8f191 +e28fdf954db36a46cba23d2fe2d01635cca2063f: + title: 'net: ethernet: aeroflex: fix potential memory leak in greth_start_xmit_gbit()' + mainline: cf57b5d7a2aad456719152ecd12007fe031628a3 + upstream: 7517c13ae14dac758e4ec0d881e463a8315bbc7d +69215607dc1760d491ac751b05456a18b8adf01d: + title: 'net: systemport: fix potential memory leak in bcm_sysport_xmit()' + mainline: c401ed1c709948e57945485088413e1bb5e94bd1 + upstream: 8e81ce7d0166a2249deb6d5e42f28a8b8c9ea72f +e0a01897a0cdcee042136aa737dda898b2a2cb60: + title: 'Bluetooth: bnep: fix wild-memory-access in proto_unregister' + mainline: 64a90991ba8d4e32e3173ddd83d0b24167a5668c + upstream: e232728242c4e98fb30e4c6bedb6ba8b482b6301 +644ca3d02eed5d09144291c2700a14cb2183bc0d: + title: arm64:uprobe fix the uprobe SWBP_INSN in big-endian + mainline: 60f07e22a73d318cddaafa5ef41a10476807cc07 + upstream: 8fd414d25465bb666c71b5490fa939411e49228b +e33413f73e839b4c49efa91f2a26d4fde33361e4: + title: 'arm64: probes: Fix uprobes for big-endian kernels' + mainline: 13f8f1e05f1dc36dbba6cba0ae03354c0dafcde7 + upstream: b6a638cb600e13f94b5464724eaa6ab7f3349ca2 +531aa0f03b79233bfcfe6e067b0b04a0e8494817: + title: 'jfs: Fix sanity check in dbMount' + mainline: 67373ca8404fe57eb1bb4b57f314cff77ce54932 + upstream: ea462ee11dbc4eb779146313d3abf5e5187775e1 +db382d47beb9d7e9c0d27f0c5d866b67148ca799: + title: 'net/sun3_82586: fix potential memory leak in sun3_82586_send_packet()' + mainline: 2cb3f56e827abb22c4168ad0c1bbbf401bb2f3b8 + upstream: 137010d26dc5cd47cd62fef77cbe952d31951b7a +9f21e06d2a8bb717e49f8ef4a96672f939380c03: + title: 'be2net: fix potential memory leak in be_xmit()' + mainline: e4dd8bfe0f6a23acd305f9b892c00899089bd621 + upstream: 941026023c256939943a47d1c66671526befbb26 +2ca8893515d6c0360b38a5ebb726322c28f2585e: + title: 'net: usb: usbnet: fix name regression' + mainline: 8a7d12d674ac6f2147c18f36d1e15f1a48060edf + upstream: 8f83f28d93d380fa4083f6a80fd7793f650e5278 +d792e0c744f67188b6e873a2dd188f1f03dc4f3b: + title: 'posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime()' + mainline: 6e62807c7fbb3c758d233018caf94dfea9c65dbd + upstream: d005400262ddaf1ca1666bbcd1acf42fe81d57ce +9612b486b817fa6fc19b8fe9a81bd547c476e6c6: + title: 'nilfs2: fix kernel bug due to missing clearing of buffer delay flag' + mainline: 6ed469df0bfbef3e4b44fca954a781919db9f7ab + upstream: 033bc52f35868c2493a2d95c56ece7fc155d7cb3 +8877c26f575b56ea80275c39aeb6e9ae85aafad1: + title: 'arm64/uprobes: change the uprobe_opcode_t typedef to fix the sparse warning' + mainline: ef08c0fadd8a17ebe429b85e23952dac3263ad34 + upstream: 974955b61fe226c0d837106738fc0fb5910d67a8 +7ca707ec81d8be129613f262fbffe9e15d327167: + title: 'xfrm: validate new SA''s prefixlen using SA family when sel.family is unset' + mainline: 3f0ab59e6537c6a8f9e1b355b48f9c05a76e8563 + upstream: f31398570acf0f0804c644006f7bfa9067106b0a +db7bbe2185d31a31d50702582589d967d016587e: + title: 'cgroup: Fix potential overflow issue when checking max_depth' + mainline: 3cc4e13bb1617f6a13e5e6882465984148743cf4 + upstream: 339df130db47ae7e89fddce5729b0f0566405d1d +38b579881e78d85e81e8625fb057a96e45b3adc6: + title: 'wifi: mac80211: skip non-uploaded keys in ieee80211_iter_keys' + mainline: 52009b419355195912a628d0a9847922e90c348c + upstream: c9cf9510970e5b33e5bc21377380f1cf61685ed0 +ebfd3809b08074d25f038a1300971645bbe98b5b: + title: 'gtp: simplify error handling code in ''gtp_encap_enable()''' + mainline: b289ba5e07105548b8219695e5443d807a825eb8 + upstream: 66f635f6ae87c35bd1bda16927e9393cacd05ee4 +7f3a3eeed91e7c7bff96403270e2471fd29873b2: + title: 'gtp: allow -1 to be specified as file description from userspace' + mainline: 7515e37bce5c428a56a9b04ea7e96b3f53f17150 + upstream: 63d8172188c759c44cae7a57eece140e0b90a2e1 +69fcd1905bea29c01c7a659aa16268f2b40ebce8: + title: 'net/sched: stop qdisc_tree_reduce_backlog on TC_H_ROOT' + mainline: 2e95c4384438adeaa772caa560244b1a2efef816 + upstream: e7f9a6f97eb067599a74f3bcb6761976b0ed303e +a829200ea0a4ce6e889bf23df1bfbee34daf9746: + title: 'net: support ip generic csum processing in skb_csum_hwoffload_help' + mainline: 62fafcd63139920eb25b3fbf154177ce3e6f3232 + upstream: 2c88668d57735d4ff65ce35747c8aa6662cc5013 +d2216921d39819c8ba0f48dc6fd2c15e6290b6cd: + title: 'net: skip offload for NETIF_F_IPV6_CSUM if ipv6 header contains extension' + mainline: 04c20a9356f283da623903e81e7c6d5df7e4dc3c + upstream: bcefc3cd7f592a70fcbbbfd7ad1fbc69172ea78b +51fb462970ebd4757675ab968175a3047847fa1d: + title: 'netfilter: nft_payload: sanitize offset and length before calling skb_checksum()' + mainline: d5953d680f7e96208c29ce4139a0e38de87a57fe + upstream: a661ed364ae6ae88c2fafa9ddc27df1af2a73701 +3551df53194d0dfd74258bea61b7f82b3b97105e: + title: 'net: amd: mvme147: Fix probe banner message' + mainline: 82c5b53140faf89c31ea2b3a0985a2f291694169 + upstream: 34f2d9975aff5ddb9e15e4ddd58528c8fd570c4a +5a9eb453112676da334380bda6fb9e7b126d04d9: + title: 'misc: sgi-gru: Don''t disable preemption in GRU driver' + mainline: b983b271662bd6104d429b0fd97af3333ba760bf + upstream: 88a0888162b375d79872fb1dece834bebea76fe3 +6fb928dc4510f0382b79a2960b0c8fae57c76a33: + title: 'usb: phy: Fix API devm_usb_put_phy() can not release the phy' + mainline: fdce49b5da6e0fb6d077986dec3e90ef2b094b50 + upstream: 3a5693be9a47d368d39fee08325f5bf6cdd2ebaf +b166e22b1f580bef5d1b09e00de9d718d7bb2eeb: + title: 'xhci: Fix Link TRB DMA in command ring stopped completion event' + mainline: 075919f6df5dd82ad0b1894898b315fbb3c29b84 + upstream: d55d92597b7143f70e2db6108dac521d231ffa29 +6a8dc3623eedca5d2fe8ac115d05cdf0e7def887: + title: 'Revert "driver core: Fix uevent_show() vs driver detach race"' + mainline: 9a71892cbcdb9d1459c84f5a4c722b14354158a5 + upstream: fe10c8367687c27172a10ba5cc849bd82077bd7d +c2faf8e8c6c985e70a6c3174e9f1b53d440a8b51: + title: 'wifi: mac80211: do not pass a stopped vif to the driver in .get_txpower' + mainline: 393b6bc174b0dd21bb2a36c13b36e62fc3474a23 + upstream: b0b862aa3dbcd16b3c4715259a825f48ca540088 +c7df04a616677a7c4473babee0b81900a2728200: + title: 'wifi: iwlegacy: Clear stale interrupts before resuming device' + mainline: 07c90acb071b9954e1fecb1e4f4f13d12c544b34 + upstream: 271d282ecc15d7012e71ca82c89a6c0e13a063dd +452c0cdb1398e3788d1af22b061acaebfa8a3915: + title: 'nilfs2: fix potential deadlock with newly created symlinks' + mainline: b3a033e3ecd3471248d474ef263aadc0059e516a + upstream: cc38c596e648575ce58bfc31623a6506eda4b94a +f38c624794c3ea409b8ee122b2a9a9f7df076a25: + title: 'ocfs2: pass u64 to ocfs2_truncate_inline maybe overflow' + mainline: bc0a2f3a73fcdac651fca64df39306d1e5ebe3b0 + upstream: 27d95867bee806cdc448d122bd99f1d8b0544035 +53f13ddee939d270ae9524040c1d9b45321fb656: + title: 'nilfs2: fix kernel bug due to missing clearing of checked flag' + mainline: 41e192ad2779cae0102879612dfe46726e4396aa + upstream: 994b2fa13a6c9cf3feca93090a9c337d48e3d60d diff --git a/.elts/upstream/4.19.323.yaml b/.elts/upstream/4.19.323.yaml new file mode 100644 index 000000000000..7df40564807f --- /dev/null +++ b/.elts/upstream/4.19.323.yaml @@ -0,0 +1,1384 @@ +a3138f0925714ea47f817257447fa0b87c8bcf28: + title: 'staging: iio: frequency: ad9833: Get frequency value statically' + mainline: 80109c32348d7b2e85def9efc3f9524fb166569d + backport: 5ea681973e3c518892825457c55559b0daa1c3d3 +a6316b6f127a877285c83d2ed45b20e6712e6d1b: + title: 'staging: iio: frequency: ad9833: Load clock using clock framework' + mainline: 8e8040c52e63546d1171c188a24aacf145a9a7e0 + backport: 2253daf50c035c2cd8a8ca74b7bba17bb936fb18 +5edc3a45ef428501000a7b23d0e1777a548907f6: + title: 'staging: iio: frequency: ad9834: Validate frequency parameter value' + mainline: b48aa991758999d4e8f9296c5bbe388f293ef465 + backport: ab37e7fbaeb484d79986ed060a4f865c05c3c248 +32dafeb84c84a2d420de27e5e30e4ea6339e4d07: + title: 'usbnet: ipheth: fix carrier detection in modes 1 and 4' + mainline: 67927a1b255d883881be9467508e0af9a5e0be9d + backport: 12cd0e98282326cc494b69e74947a585afd21f53 +a81761c1ba59444fc3f644e7d8713ac35e7911c4: + title: 'net: ethernet: use ip_hdrlen() instead of bit shift' + mainline: 9a039eeb71a42c8b13408a1976e300f3898e1be0 + backport: c0360f13de3287dfab2137634c65b55e3949f325 +020489d4ab6a650594f1e8dbae11bd0e57b8de03: + title: 'net: phy: vitesse: repair vsc73xx autonegotiation' + mainline: de7a670f8defe4ed2115552ad23dea0f432f7be4 + skipped: vsc73xx_config_aneg not in 4.1.4y +6a130ec2f0646a8544308b6cf983269d5a2a7fa0: + title: 'scripts: kconfig: merge_config: config files: add a trailing newline' + mainline: 33330bcf031818e60a816db0cfd3add9eecc3b28 + backport: 71d7a71aecd5608f04ebe27edf45e296131503b1 +4a0400793ac3961a07fcd472f7eb789d12d0db6a: + title: 'arm64: dts: rockchip: override BIOS_DISABLE signal via GPIO hog on RK3399 Puma' + mainline: 741f5ba7ccba5d7ae796dd11c320e28045524771 + backport: e1ebafd5c0058b061a4583c4ba60a4508b00d55f +a689f610abc8d4c8dfd775e09fd306f19cfe6509: + title: 'net/mlx5: Update the list of the PCI supported devices' + mainline: 85327a9c415057259b337805d356705d0d0f4200 + backport: 64bdfeaca4b2bca14039364e1569c9f0d399e8cf +7f84d4613b9fdf9e14bbab867e879a0df782a163: + title: 'net: ftgmac100: Enable TX interrupt to avoid TX timeout' + mainline: fef2843bb49f414d1523ca007d088071dee0e055 + backport: 94fc3405a60ae7370428a02b7ffa8c1e1a0db0fb +cd5b9d657ecd44ad5f254c3fea3a6ab1cf0e2ef7: + title: 'net: dpaa: Pad packets to ETH_ZLEN' + mainline: cbd7ec083413c6a2e0c326d49e24ec7d12c7a9e0 + backport: d3cde3469100da8f52f60b814b8cab66244d7f56 +45fe2dca538477b9f86f2ddb6d6472e38557d7ae: + title: 'soundwire: stream: Revert "soundwire: stream: fix programming slave ports for non-continous port maps"' + mainline: 233a95fd574fde1c375c486540a90304a2d2d49f + skipped: fixes patch not in branch +26a7159fdc3683e90998339d5ca5e0ce231a6391: + title: 'selftests/vm: remove call to ksft_set_plan()' +1a136754b12424b99bf4e0bb13554d68605ac642: + title: 'selftests/kcmp: remove call to ksft_set_plan()' +71d74f78ae565a64eae3022020a9d4e82dace694: + title: 'ASoC: allow module autoloading for table db1200_pids' + mainline: 0e9fdab1e8df490354562187cdbb8dec643eae2c + backport: a7d6bf885524c3d4063dd145fb93c2c89cc98848 +33d615ee40f0651bb3d282a66e6f59eae6ea4ada: + title: 'pinctrl: at91: make it work with current gpiolib' + mainline: 752f387faaae0ae2e84d3f496922524785e77d60 + backport: ac0819d2626c52220d318ed9ea3d5b2ee4b2f1c2 +a5bfdf7e4d956f3035779687eade8da23560f4bb: + title: 'microblaze: don''t treat zero reserved memory regions as error' + mainline: 0075df288dd8a7abfe03b3766176c393063591dd + backport: fc168b848cd91fb8dd89637cb6a063670ed6b5dd +46974d97d58a2a91da16b032de0c78c4346bc1c2: + title: 'net: ftgmac100: Ensure tx descriptor updates are visible' + mainline: 4186c8d9e6af57bab0687b299df10ebd47534a0a + backport: 0fcd4ef6d494a3de6307fa976919cd800f343df6 +f4eb52b18a74812151105b6e0afe640a74eeebfa: + title: 'wifi: iwlwifi: mvm: fix iwl_mvm_max_scan_ie_fw_cmd_room()' + mainline: 916a5d9c5354c426220a0a6533a5e8ea1287d6ea + skipped: iwl_mvm_add_tpc_report_ie not in 4.1.4y +ad2fcc2daa203a6ad491f00e9ae3b7867e8fe0f3: + title: 'wifi: iwlwifi: mvm: don''t wait for tx queues if firmware is dead' + mainline: 3a84454f5204718ca5b4ad2c1f0bf2031e2403d1 + skipped: WARNING is not converted yet, and a bit tough resolve without taking in commits +ba5ce81f9f91ed855206421b49beeeddcd83f550: + title: 'ASoC: tda7419: fix module autoloading' + mainline: 934b44589da9aa300201a00fe139c5c54f421563 + skipped: file not found in 4.14.y +1cde0480b087bd8f4e12396fcbb133ee9d9876bd: + title: 'spi: bcm63xx: Enable module autoloading' + mainline: 709df70a20e990d262c473ad9899314039e8ec82 + backport: f3f9ddf39b4b25d0a99b2323cfed0659b6cffb45 +1da08d443212eba1f731b3f163c5b23ec1c882c1: + title: 'x86/hyperv: Set X86_FEATURE_TSC_KNOWN_FREQ when Hyper-V provides frequency' + mainline: 8fcc514809de41153b43ccbe1a0cdf7f72b78e7e + backport: b427f522d100d82fc9a282af7780cd140ac4e0bf +b49a786beb11ff740cb9e0c20b999c2a0e1729c2: + title: 'ocfs2: add bounds checking to ocfs2_xattr_find_entry()' + mainline: 9e3041fecdc8f78a5900c3aa51d3d756e73264d6 + backport: 900f2cf495f5f7e9088364d3e4e483756bff58e3 +e2b3d7a9d019d4d1a0da6c3ea64a1ff79c99c090: + title: 'ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()' + mainline: af77c4fc1871847b528d58b7fdafb4aa1f6a9262 + backport: 317e5483f3b80fb042b955d0e80c336698046cc1 +18504710442671b02d00e6db9804a0ad26c5a479: + title: 'gpio: prevent potential speculation leaks in gpio_device_get_desc()' + mainline: d795848ecce24a75dfd46481aee066ae6fe39775 + backport: c087e2303ab05433ed6981a730807bfc14dabe78 +79efd61e1c50d79d89a48e6c01761f8f890a83dd: + title: 'USB: serial: pl2303: add device id for Macrosilicon MS3020' + mainline: 7d47d22444bb7dc1b6d768904a22070ef35e1fc0 + backport: fd204ed48bc3d5d4315957a2bf536d2df43c44e8 +90d62b53d8281851d8cff06f3a663dd169c5536a: + title: 'ACPI: PMIC: Remove unneeded check in tps68470_pmic_opregion_probe()' + mainline: 07442c46abad1d50ac82af5e0f9c5de2732c4592 + skipped: fixes patch not in branch +ac848aff235efdd903c0c185c1cb44496c5b9bb0: + title: 'wifi: ath9k: fix parameter check in ath9k_init_debug()' + mainline: 6edb4ba6fb5b946d112259f54f4657f82eb71e89 + backport: 90c7ddee26f4a63a9d2f173c5056eae945d345a7 +0c3bbcbce030ca203963c520191ad2c5d89bf862: + title: 'wifi: ath9k: Remove error checks when creating debugfs entries' + mainline: f6ffe7f0184792c2f99aca6ae5b916683973d7d3 + backport: f2682fdc54e734785dd48a4850403f89e0e3cbe8 +c44a7f4cc1b96506480623d7fdfe38ec275b21e5: + title: 'netfilter: nf_tables: elements with timeout below CONFIG_HZ never expire' + mainline: e0c47281723f301894c14e6f5cd5884fdfb813f9 + skipped: fixes patch not in branch +e23a1bdf74f091a0b9192b81ffbb376d33c759c9: + title: 'wifi: cfg80211: fix UBSAN noise in cfg80211_wext_siwscan()' + mainline: a26a5107bc52922cf5f67361e307ad66547b51c7 + skipped: (unknown reason) +595d15606530187d833d3c2116c509dc37fe2118: + title: 'wifi: cfg80211: fix two more possible UBSAN-detected off-by-one errors' + mainline: 15ea13b1b1fbf6364d4cd568e65e4c8479632999 + skipped: (unknown reason) +07eb0bd7b0a8abed9d45e0f567c9af1dc83e5268: + title: 'wifi: mac80211: use two-phase skb reclamation in ieee80211_do_stop()' + mainline: 9d301de12da6e1bb069a9835c38359b8e8135121 + skipped: commit did not cherry-pick cleanly +f5059fae5ed518fc56494ce5bdd4f5360de4b3bc: + title: 'can: bcm: Clear bo->bcm_proc_read after remove_proc_entry().' + mainline: 94b0818fa63555a65f6ba107080659ea6bcca63e + backport: a99c4727604215b66734a480a049ad9451bfef34 +2dfadca5439eca817fbb206c6003e5526d5e73df: + title: 'Bluetooth: btusb: Fix not handling ZPL/short-transfer' + mainline: 7b05933340f4490ef5b09e84d644d12484b05fdf + backport: ae07cf5eff7f99b3eb8927ace566f0786221dee4 +a9bdd5b36887d2bacb8bc777fd18317c99fc2587: + title: 'block, bfq: fix possible UAF for bfqq->bic with merge chain' + mainline: 18ad4df091dd5d067d2faa8fce1180b79f7041a7 + backport: 3bb55bc8856f2de993ef77536a774c62dc252926 +c463e673e1ac1ae2d7491df4bfa22fb228d33449: + title: 'block, bfq: choose the last bfqq from merge chain in bfq_setup_cooperator()' + mainline: 0e456dba86c7f9a19792204a044835f1ca2c8dbb + skipped: 'Although it looks easy to resolve not doing that due to missing commit: 7b8fa3b900a0 and commit: 2c1b1848357d in 4.14.y' +9e813033594b141f61ff0ef0cfaaef292564b041: + title: 'block, bfq: don''t break merge chain in bfq_split_bfqq()' + mainline: 42c306ed723321af4003b2a41bb73728cab54f85 + backport: 940b968ed647a978296610464a5bfd0ee1c8b0f4 +f2a73a1f728e6fe765fc07c043a3d1670d854518: + title: 'spi: ppc4xx: handle irq_of_parse_and_map() errors' + mainline: 0f245463b01ea254ae90e1d0389e90b0e7d8dc75 + backport: 086695765117a72978f0210989a2fd377a86287a +e546902c4917656203e0e134630a873e9b6d28af: + title: 'spi: ppc4xx: Avoid returning 0 when failed to parse and map IRQ' + mainline: 7781f1d120fec8624fc654eda900fc8748262082 + backport: 2c79e19208b397228218de1ceb98f907ea84b720 +722d698f3e8de32a753ee1148b009406d0b3b829: + title: 'ARM: versatile: fix OF node leak in CPUs prepare' + mainline: f2642d97f2105ed17b2ece0c597450f2ff95d704 + backport: 8e6ee55dc9b2117c6e85d4e00724de05acc66e40 +041b763798bf460307db3bd8144e3732aef52902: + title: 'reset: berlin: fix OF node leak in probe() error path' + mainline: 5f58a88cc91075be38cec69b7cb70aaa4ba69e8b + backport: f2dbb797e5c4fbe261bac004384161a4d2df0485 +24d689791c6dbdb11b4b5208ed746f28fe651715: + title: 'clocksource/drivers/qcom: Add missing iounmap() on errors in msm_dt_timer_init()' + mainline: ca140a0dc0a18acd4653b56db211fec9b2339986 + backport: 115ada83f0a71ae108fe8c58a4d9f6b0ef3b3be3 +b665734d4772df97eaeb4d943dc104dbd9ec1e9a: + title: 'hwmon: (max16065) Fix overflows seen when writing limits' + mainline: 744ec4477b11c42e2c8de9eb8364675ae7a0bd81 + backport: 1ed2f7aabb6e52fd4d1b13daeb56b5e1c6904e90 +6015f85fc8eba1ccf7db8b20a9518388fcb4fbf7: + title: 'mtd: slram: insert break after errors in parsing the map' + mainline: 336c218dd7f0588ed8a7345f367975a00a4f003f + backport: e7ee0a8fd442b2fb7586cc29d397017bc638ed50 +6f91b0464947c4119682731401e11e095d8db06d: + title: 'hwmon: (ntc_thermistor) fix module autoloading' + mainline: b6964d66a07a9003868e428a956949e17ab44d7e + backport: b8dbab0d70214275e00278a332c3456de5c74031 +f9e9ce0f2b420b63c29e96840865640098bbafe7: + title: 'power: supply: max17042_battery: Fix SOC threshold calc w/ no current sense' + mainline: 3a3acf839b2cedf092bdd1ff65b0e9895df1656b + backport: c02345a3444b243abae115fc9cc38d3453c8964a +da77622151181c1d7d8ce99019c14cd5bd6453b5: + title: 'fbdev: hpfb: Fix an error handling path in hpfb_dio_probe()' + mainline: aa578e897520f32ae12bec487f2474357d01ca9c + backport: 8e8bed0aecaeb206024593bc125ecb5949b10cb5 +1a4bdeb4c5f63f23b0338e4da4692eef41c1e97c: + title: 'drm/stm: Fix an error handling path in stm_drm_platform_probe()' + mainline: ce7c90bfda2656418c69ba0dd8f8a7536b8928d4 + skipped: commit did not cherry-pick cleanly +f4a502c468886ffc54e436279d7f573b4d02bd5b: + title: 'drm/amd: fix typo' + mainline: 229f7b1d6344ea35fff0b113e4d91128921f8937 + backport: 2b1444de44d853578d982acd4d0a58082334d1ba +97cc5abcf27afaf66859e0206c2d5d622a0d8764: + title: 'drm/amdgpu: Replace one-element array with flexible-array member' + mainline: 320e2590e281d0a7865e861f50155b5b435e9813 + skipped: (unknown reason) +843816d328c48f4c19983df2c50408f643ce07ec: + title: 'drm/amdgpu: properly handle vbios fake edid sizing' + mainline: 8155566a26b8d6c1dd914f06a0c652e4e2f2adf1 + skipped: (unknown reason) +9e56b8528ffe641ffa5d95bf2867945bb2982adc: + title: 'drm/radeon: Replace one-element array with flexible-array member' + mainline: c81c5bd5cf2f428867e0bcfcccd4e4d2f8c68f51 + skipped: (unknown reason) +f476e487c6cd39e6c7ecbbb5d790c6a8525baec4: + title: 'drm/radeon: properly handle vbios fake edid sizing' + mainline: 17c6baff3d5f65c8da164137a58742541a060b2f + skipped: (unknown reason) +6a512ab02cde62f147351d38ebefa250522336c4: + title: 'drm/rockchip: vop: Allow 4096px width scaling' + mainline: 0ef968d91a20b5da581839f093f98f7a03a804f7 + backport: 28cbb9587a21b4052424ece391f8953ea3ce1d93 +ec7cf75b4e2b584e6f2b167ce998428b42522df6: + title: 'drm/radeon/evergreen_cs: fix int overflow errors in cs track offsets' + mainline: 3fbaf475a5b8361ebee7da18964db809e37518b7 + backport: 541940c2d6db90f0a9448686b0e0838a2a7f134b +d1017d2a0f3f16dc1db5120e7ddbe7c6680425b0: + title: 'jfs: fix out-of-bounds in dbNextAG() and diAlloc()' + mainline: e63866a475562810500ea7f784099bfe341e761a + backport: e903f2245bb193bb8a6f11804e56b0b85ae6a9a9 +af48ce867d804c3b216a8dfce3f98e53b8f9de69: + title: 'drm/msm/a5xx: properly clear preemption records on resume' + mainline: 64fd6d01a52904bdbda0ce810a45a428c995a4ca + skipped: fixes patch not in branch +47da5178610a0ad57fc26b3c9058cce96430c84c: + title: 'drm/msm/a5xx: fix races in preemption evaluation stage' + mainline: ce050f307ad93bcc5958d0dd35fc276fd394d274 + skipped: fixes patch not in branch +e4e81788a8b83f267d25b9f3b68cb4837b71bdd9: + title: 'ipmi: docs: don''t advertise deprecated sysfs entries' + mainline: 64dce81f8c373c681e62d5ffe0397c45a35d48a2 + backport: 2f418bb73f8edbe9b8afbbf59e5b2e217ab391bd +b7a63d4bac70f660d63cba66684bc03f09be50ad: + title: 'drm/msm: fix %s null argument error' + mainline: 25b85075150fe8adddb096db8a4b950353045ee1 + backport: f9d12089d914dc23b18637db0091a61a2c0ea32b +f38d39918cff054f4bfc466cac1c110d735eda94: + title: 'xen: use correct end address of kernel for conflict checking' + mainline: fac1bceeeb04886fc2ee952672e6e6c85ce41dca + backport: aa244feeb7d2f904f18638a7369216d4e410d44b +5937434b2ca4884798571079cc71ad3a58b3c8fd: + title: 'xen/swiotlb: simplify range_straddles_page_boundary()' + mainline: bf70726668c6116aa4976e0cc87f470be6268a2f + backport: 1a07c8045664899758b6c312761686e49f6d2fc0 +66c845af6613a62f08d1425054526cc294842914: + title: 'xen/swiotlb: add alignment check for dma buffers' + mainline: 9f40ec84a7976d95c34e7cc070939deb103652b0 + backport: 2690899d56f2ed0cb6b24a60c02bcbf8c950d35c +e5fa35e20078c3f08a249a15e616645a7e7068e2: + title: 'selftests/bpf: Fix error compiling test_lru_map.c' + mainline: cacf2a5a78cd1f5f616eae043ebc6f024104b721 + backport: 29e08a988cd84cd6b7afb1790e343d8290f58664 +c135ac8bbed0c01af24c16bd0473fd8c3487a57e: + title: 'xz: cleanup CRC32 edits from 2018' + mainline: 2ee96abef214550d9e92f5143ee3ac1fd1323e67 + skipped: fixes patch not in branch +65c1957181a1e2cd5344e49d4e5b6e9f930092d1: + title: 'kthread: add kthread_work tracepoints' + mainline: f630c7c6f10546ebff15c3a856e7949feb7a2372 + backport: efd2f49ae3bc833b879ef4091384fe42db871bec +6430d6a00b0d8d3de663ecc0da248f8f3557b82e: + title: 'kthread: fix task state in kthread worker if being frozen' + mainline: e16c7b07784f3fb03025939c4590b9a7c64970a7 + backport: 85a8b320b6eda4e743d3633d86653d16e9a859c1 +58a48155ce22e8e001308a41a16d8c89ee003b80: + title: 'jbd2: introduce/export functions jbd2_journal_submit|finish_inode_data_buffers()' + mainline: aa3c0c61f62d682259e3e66cdc01846290f9cd6c + backport: 449027e8478709334ca7d9445060ed04464b43bb +6f44db60f9c42265e1e61596994f457f3c30d432: + title: 'ext4: clear EXT4_GROUP_INFO_WAS_TRIMMED_BIT even mount with discard' + mainline: 20cee68f5b44fdc2942d20f3172a262ec247b117 + backport: aa5e7df17ef64ae426c4ac8fcdde231c2bba3d57 +029ebd49aab06dd438c1256876730518aef7da35: + title: 'smackfs: Use rcu_assign_pointer() to ensure safe assignment in smk_set_cipso' + mainline: 2749749afa071f8a0e405605de9da615e771a7ce + backport: 179d760ab3fee99160a41a12ba49017e61c7ae34 +7b98a77cdad322fa3c7babf15c37659a94aa3593: + title: 'ext4: avoid negative min_clusters in find_group_orlov()' + mainline: bb0a12c3439b10d88412fd3102df5b9a6e3cd6dc + backport: 09313601d16d88eed265af9c0bd4b029c4524220 +ce8f41fca0b6bc69753031afea8fc01f97b5e1af: + title: 'ext4: return error on ext4_find_inline_entry' + mainline: 4d231b91a944f3cab355fce65af5871fb5d7735b + backport: a71386889f3ee75ee1507c741298d505973cb8d8 +5b076d37e8d99918e9294bd6b35a8bbb436819b0: + title: 'ext4: avoid OOB when system.data xattr changes underneath the filesystem' + mainline: c6b72f5d82b1017bad80f9ebf502832fc321d796 + backport: c3afa5821f1e517165033292a44f8aeb43a8341c +2b78e9df10fb7f4e9d3d7a18417dd72fbbc1dfd0: + title: 'nilfs2: fix potential null-ptr-deref in nilfs_btree_insert()' + mainline: 9403001ad65ae4f4c5de368bdda3a0636b51d51a + backport: 41f3f6c63ebe7984124f65fdcf0d1ef3bfff9e41 +6d7f4fac707a187882b8c610e8889c097b289082: + title: 'nilfs2: determine empty node blocks as corrupted' + mainline: 111b812d3662f3a1b831d19208f83aa711583fe6 + backport: 1150830d554e2921e69ebb150c3c2d07baa0216d +f3a9859767c7aea758976f5523903d247e585129: + title: 'nilfs2: fix potential oob read in nilfs_btree_check_delete()' + mainline: f9c96351aa6718b42a9f42eaf7adce0356bdb5e8 + backport: 811f9859f37f3be1ebeb26c221fbaaa593199e99 +1d4d7e56c4aa834f359a29aa64f5f5c01e3453eb: + title: 'perf sched timehist: Fix missing free of session in perf_sched__timehist()' + mainline: 6bdf5168b6fb19541b0c1862bdaa596d116c7bfb + backport: 218417bab6747be0d5ae6e0161a5796d433d75ea +d825de712b59dfd6e256c0ecad7443da652c2b22: + title: 'perf sched timehist: Fixed timestamp error when unable to confirm event sched_in time' + mainline: 39c243411bdb8fb35777adf49ee32549633c4e12 + backport: c30bffcf9b9de7aeb85e602a62c1b199e44c7b04 +c062eebe3b3d98ae2ef61fe8008f2c12bfa31249: + title: 'perf time-utils: Fix 32-bit nsec parsing' + mainline: 38e2648a81204c9fc5b4c87a8ffce93a6ed91b65 + backport: cfec54fd64719d252a6f53f7cf8925d439b5a440 +7b9e7a258b9f4d68a9425c67bfee1e1e926d1960: + title: 'clk: rockchip: Set parent rate for DCLK_VOP clock on RK3228' + mainline: 1d34b9757523c1ad547bd6d040381f62d74a3189 + backport: 6e0b571ed540f42734528e92a461d02f7da43a01 +7065c05c6d58b9b9a98127aa14e9a5ec68173918: + title: 'drivers: media: dvb-frontends/rtl2832: fix an out-of-bounds write error' + mainline: 8ae06f360cfaca2b88b98ca89144548b3186aab1 + backport: fe35dd3f675597f83ae26c6d5086a9464c8dc941 +8ffbe7d07b8e76193b151107878ddc1ccc94deb5: + title: 'drivers: media: dvb-frontends/rtl2830: fix an out-of-bounds write error' + mainline: 46d7ebfe6a75a454a5fa28604f0ef1491f9d8d14 + backport: f046671d18d577d0ed12e6cf37913d543be14952 +43b361ca2c977e593319c8248e549c0863ab1730: + title: 'PCI: xilinx-nwl: Fix register misspelling' + mainline: a437027ae1730b8dc379c75fa0dd7d3036917400 + backport: 526fd6e5af9933b37ab818aeb51beca91da649be +da2708a19f45b4a7278adf523837c8db21d1e2b5: + title: 'RDMA/iwcm: Fix WARNING:at_kernel/workqueue.c:#check_flush_dependency' + mainline: 86dfdd8288907f03c18b7fb462e0e232c4f98d89 + backport: e2138450b0fd6eec4ec39b7c0ddc8bd2c63e1158 +4f227c4dc81187fcca9c858b070b9d3f586c9b30: + title: 'pinctrl: single: fix missing error code in pcs_probe()' + mainline: cacd8cf79d7823b07619865e994a7916fcc8ae91 + backport: fab82568499e61ec55a0fac9781cffff4d9d6ba7 +d6b680af89ca0bf498d105265bc32061979e87f1: + title: 'clk: ti: dra7-atl: Fix leak of of_nodes' + mainline: 9d6e9f10e2e031fb7bfb3030a7d1afc561a28fea + backport: 904ce6f2f61066aab8e6e20b705b8e45a6adafd3 +856d3ea97be0dfa5d7369e071c06c9259acfff33: + title: 'pinctrl: mvebu: Fix devinit_dove_pinctrl_probe function' + mainline: c25478419f6fd3f74c324a21ec007cf14f2688d7 + backport: f6340536595507abf266bf00336263a0fe54b6d5 +b12e25d91c7f97958341538c7dc63ee49d01548f: + title: 'RDMA/cxgb4: Added NULL check for lookup_atid' + mainline: e766e6a92410ca269161de059fff0843b8ddd65f + backport: c3222aec5dbf651634bac47c1137c4b0c5209b13 +20cbc281033ef5324f67f2d54bc539968f937255: + title: 'ntb: intel: Fix the NULL vs IS_ERR() bug for debugfs_create_dir()' + mainline: e229897d373a87ee09ec5cc4ecd4bb2f895fc16b + backport: a4191b6aaf636e979332330d22348c461169a8c7 +3e8081ebff12bec1347deaceb6bce0765cce54df: + title: 'nfsd: call cache_put if xdr_reserve_space returns NULL' + mainline: d078cbf5c38de83bc31f83c47dcd2184c04a50c7 + backport: e6eedced9e6d8c218bd815ac165a299c10b37471 +4d9c9b7991627db9e3b97a62908dfef8b2b7201b: + title: 'f2fs: enhance to update i_mode and acl atomically in f2fs_setattr()' + mainline: 17232e830afb800acdcc22ae8980bf9d330393ef + skipped: commit did not cherry-pick cleanly +54739b2a2e312436ce9c0cf8860f1167979a5f1f: + title: 'f2fs: fix typo' + mainline: d382e36970ecf8242921400db2afde15fb6ed49e + skipped: 'commit: 39d787bec4f and commit: 0a007b97aad6 not in 4.14.y' +eb92623290e2b5a942bf480f8abcb8c7c47c4c06: + title: 'f2fs: fix to update i_ctime in __f2fs_setxattr()' + mainline: 8874ad7dae8d91d24cc87c545c0073b3b2da5688 + skipped: commit did not cherry-pick cleanly +c1ea7a86d7e18dc629d717f57cd5df127cea0f88: + title: 'f2fs: remove unneeded check condition in __f2fs_setxattr()' + mainline: bc3994ffa4cf23f55171943c713366132c3ff45d + skipped: commit did not cherry-pick cleanly +72c6b13f468ed21148f3b1b9b2b0aeecc1a74e59: + title: 'f2fs: reduce expensive checkpoint trigger frequency' + mainline: aaf8c0b9ae042494cb4585883b15c1332de77840 + skipped: too risky +66ba259a360892837b35bcc4e072bb62b520b3ba: + title: 'coresight: tmc: sg: Do not leak sg_table' + mainline: c58dc5a1f886f2fcc1133746d0cbaa1fe7fd44ff + skipped: fixes patch not in branch +872eca64c3267dbc5836b715716fc6c03a18eda7: + title: 'netfilter: nf_reject_ipv6: fix nf_reject_ip6_tcphdr_put()' + mainline: 9c778fe48d20ef362047e3376dee56d77f8500d4 + backport: 6a591f347a7c201678a3932d5a2ebc08f6fbf50a +25d559ed2beec9b34045886100dac46d1ad92eba: + title: 'net: seeq: Fix use after free vulnerability in ether3 Driver Due to Race Condition' + mainline: b5109b60ee4fcb2f2bb24f589575e10cc5283ad4 + skipped: fixes patch not in branch +624db16292e1d6b0b54d911deca5a603e1dc8e1a: + title: 'tcp: introduce tcp_skb_timestamp_us() helper' + mainline: 2fd66ffba50716fc5ab481c48db643af3bda2276 + skipped: too many changes +ad4f0a14d6856e68f023fc4e5017cfd881a3dfbc: + title: 'tcp: check skb is non-NULL in tcp_rto_delta_us()' + mainline: c8770db2d54437a5f49417ae7b46f7de23d14db6 + skipped: We didn't take the conversion +7f02a7d8a2890678f0bfd563eb99dd31bafc36eb: + title: 'net: qrtr: Update packets cloning when broadcasting' + mainline: f011b313e8ebd5b7abd8521b5119aecef403de45 + backport: 5489a0e446410516b104e0dbc7901cf96ca0d3e9 +b14c58e37050703568ab498404018294807209a5: + title: 'netfilter: ctnetlink: compile ctnetlink_label_size with CONFIG_NF_CONNTRACK_EVENTS' + mainline: e1f1ee0e9ad8cbe660f5c104e791c5f1a7cf4c31 + backport: 6ada46e520db9db21909d1333f2d1f11d0ea47d8 +89b9b6fa4463daf820e6a5ef65c3b0c2db239513: + title: 'crypto: aead,cipher - zeroize key buffer after use' + mainline: 23e4099bdc3c8381992f9eb975c79196d6755210 + backport: 24ee879c5a39f2f8e92ef5dc6b82ad71890af0b9 +e19774a171f108433e9fba98a7bfbf65ec2a18de: + title: Remove *.orig pattern from .gitignore + mainline: 76be4f5a784533c71afbbb1b8f2963ef9e2ee258 + backport: ad481d5cbb6fc4c2fbe847eaab398a667608aa41 +6ab18d4ada166d38046ca8eb9598a3f1fdabd2b7: + title: 'soc: versatile: integrator: fix OF node leak in probe() error path' + mainline: 874c5b601856adbfda10846b9770a6c66c41e229 + backport: 2903e604526b78ba231eff10d4d32eecc84b7d13 +17720dd1be72e4cf5436883cf9d114d0c3e47d19: + title: 'USB: appledisplay: close race between probe and completion handler' + mainline: 8265d06b7794493d82c5c21a12d7ba43eccc30cb + backport: 5b2fc11840b44e9989d9e931881108d56828398b +638810fe9c0c15ffaa1b4129e54f1e8affb28afd: + title: 'USB: misc: cypress_cy7c63: check for short transfer' + mainline: 49cd2f4d747eeb3050b76245a7f72aa99dbd3310 + backport: 7fe54b4967d33e67db68d83c1126f160341fcf3a +d1768e5535d3ded59f888637016e6f821f4e069f: + title: 'firmware_loader: Block path traversal' + mainline: f0e5311aa8022107d63c54e2f03684ec097d1394 + skipped: commit did not cherry-pick cleanly +279994e23d7e6d2a30f2cc7b7437fedccac0834d: + title: 'tty: rp2: Fix reset with non forgiving PCIe host bridges' + mainline: f16dd10ba342c429b1e36ada545fb36d4d1f0e63 + backport: 8265d9830ede6739edfeeac27d7d97fa2ff60f24 +b674f1b49f9eaec9aac5c64a75e535aa3f359af7: + title: 'drbd: Fix atomicity violation in drbd_uuid_set_bm()' + mainline: 2f02b5af3a4482b216e6a466edecf6ba8450fa45 + backport: 29cbc0c5c3d689694a2de42d48938385c321d073 +3b3ed68f695ee000e9c9fa536761a0554bfc1340: + title: 'drbd: Add NULL check for net_conf to prevent dereference in state validation' + mainline: a5e61b50c9f44c5edb6e134ede6fee8806ffafa9 + backport: fa3bcef6588b3c2d861f5888dfe595d671bf790e +92fd5209fc014405f63a7db79802ca4b01dc0c05: + title: 'ACPI: sysfs: validate return type of _STR method' + mainline: 4bb1e7d027413835b086aed35bc3f0713bc0f72b + backport: 722db7a1dfcd05605e4fe31285eb51416a7c5f3f +60bffc6e6b32fb88e5c1234448de5ccf88b590f5: + title: 'f2fs: prevent possible int overflow in dir_block_index()' + mainline: 47f268f33dff4a5e31541a990dc09f116f80e61c + backport: 764b74ce49fcac9d4ce79f2382f5a72f7e4ce9ee +24dfe070d6d05d62a00c41d5d52af5a448ae7af7: + title: 'f2fs: avoid potential int overflow in sanity_check_area_boundary()' + mainline: 50438dbc483ca6a133d2bce9d5d6747bcee38371 + backport: 6e6800bf67a4f4d90bfeac9576562c4b94f86b4f +6cc13a80a26e6b48f78c725c01b91987d61563ef: + title: 'vfs: fix race between evice_inodes() and find_inode()&iput()' + mainline: 88b1afbf0f6b221f6c5bb66cc80cd3b38d696687 + backport: 2b8c76dea7cd29cd76056aa1622f824203672a78 +1560603721bd004c893ceba984748c9d675858ea: + title: 'fs: Fix file_set_fowner LSM hook inconsistencies' + mainline: 26f204380a3c182e5adf1a798db0724d6111b597 + skipped: commit did not cherry-pick cleanly +f239240d65807113e565226b8e0a7ea13390bff3: + title: 'nfs: fix memory leak in error path of nfs4_do_reclaim' + mainline: 8f6a7c9467eaf39da4c14e5474e46190ab3fb529 + backport: 6aec9a2b2ea68124ec578150968e918b714b4951 +d957766954641b4bbd7e359d51206c0b940988a6: + title: 'PCI: xilinx-nwl: Use irq_data_get_irq_chip_data()' + mainline: e56427068a8d796bb7b8e297f2b6e947380e383f + backport: 4d86dbe788e3493096e0ac52cb1d67da3a97f253 +ebf6629fcff1e04e43ef75bd2c2dbfb410a95870: + title: 'PCI: xilinx-nwl: Fix off-by-one in INTx IRQ handler' + mainline: 0199d2f2bd8cd97b310f7ed82a067247d7456029 + backport: 85f9e31d10684f30ee9dd7181101849d66bb46ea +0accfec683c0a3e31c8ba738be0b0014e316d6a0: + title: 'soc: versatile: realview: fix memory leak during device remove' + mainline: 1c4f26a41f9d052f334f6ae629e01f598ed93508 + backport: a221ba7b5c10912b64ef3214f340d306a7f2f716 +b05605f5a42b4719918486e2624e44f3fa9e818f: + title: 'soc: versatile: realview: fix soc_dev leak during device remove' + mainline: c774f2564c0086c23f5269fd4691f233756bf075 + backport: d8f64e84dd728d7c0b98963b34a5a8c3bf1cb3a9 +a2ac6cb8aaa2eb23209ffa641962dd62958522a1: + title: 'usb: yurex: Replace snprintf() with the safer scnprintf() variant' + mainline: 86b20af11e84c26ae3fde4dcc4f490948e3f8035 + backport: 763e7b56a44b2c0b2adf924cfdbe078001aa424d +1250cd9dee69ace62b9eb87230e8274b48bc9460: + title: 'USB: misc: yurex: fix race between read and write' + mainline: 93907620b308609c72ba4b95b09a6aa2658bb553 + backport: 4445f05310701e77940cd1105f380f29838acbe0 +73d3f00e6e979f8ef35d8213344e162c838aa0fa: + title: 'pps: remove usage of the deprecated ida_simple_xx() API' + mainline: 55dbc5b5174d0e7d1fa397d05aa4cb145e8b887e + skipped: commit did not cherry-pick cleanly +4c8a99c3b3f936a608c102695d02a6c23dc888da: + title: 'pps: add an error check in parport_attach' + mainline: 62c5a01a5711c8e4be8ae7b6f0db663094615d48 + skipped: fixes patch not in branch +16cfd59341f73157ef319c588e639fc1013d94cf: + title: 'i2c: aspeed: Update the stop sw state when the bus recovery occurs' + mainline: 93701d3b84ac5f3ea07259d4ced405c53d757985 + backport: a7f890cc3d58e08cf2ec730b95376b94862c6576 +bbe3396e96a2ee857cf2206784f06bc3f49ff240: + title: 'i2c: isch: Add missed ''else''' + mainline: 1db4da55070d6a2754efeb3743f5312fc32f5961 + backport: bdd844b72fada07b3849e5eea841181c97d16f3e +709b0b70011b577bc78406e76c4563e10579ddad: + title: 'usb: yurex: Fix inconsistent locking bug in yurex_read()' + mainline: e7d3b9f28654dbfce7e09f8028210489adaf6a33 + backport: a8e1dbee0dfa30fe4d52939c495d469541cf5c8f +ae2d6fdd49669f35ed3a1156a4aab66a37e6a450: + title: 'mailbox: rockchip: fix a typo in module autoloading' + mainline: e92d87c9c5d769e4cb1dd7c90faa38dddd7e52e3 + backport: 198501d96c89d17a8ee79587f593537f2773aa07 +4e1e03760ee7cc4779b6306867fe0fc02921b963: + title: 'mailbox: bcm2835: Fix timeout during suspend mode' + mainline: dc09f007caed3b2f6a3b6bd7e13777557ae22bfd + backport: 07726a73bd9cdc1843231a43985b5d310ee37fb2 +c26c5ec832dd9e9dcd0a0a892a485c99889b68f0: + title: 'ceph: remove the incorrect Fw reference check when dirtying pages' + mainline: c08dfb1b49492c09cf13838c71897493ea3b424e + backport: 5f8a65de609aaf9a0ef037ca8110bc9a3361c6c4 +9fb165c3f7f3e13a9b7253180cf051dc82081e28: + title: 'netfilter: uapi: NFTA_FLOWTABLE_HOOK is NLA_NESTED' + mainline: 76f1ed087b562a469f2153076f179854b749c09a + skipped: fixes patch not in branch +50067d8b3f48e4cd4c9e817d3e9a5b5ff3507ca7: + title: 'netfilter: nf_tables: prevent nf_skb_duplicated corruption' + mainline: 92ceba94de6fb4cee2bf40b485979c342f44a492 + backport: 51f85acdf26900ae9d4b89f2a92b1aeb3c84cb5a +e8bed7c8845878f8c60e76f0a10d61ea2f709580: + title: 'r8152: Factor out OOB link list waits' + mainline: 5f71c84038d39def573744a145c573758f52a949 + backport: d8d31cfbc82a0ae2e5ec55c7017ffbacc7f5fa4f +905f06a34f960676e7dc77bea00f2f8fe18177ad: + title: 'net: ethernet: lantiq_etop: fix memory disclosure' + mainline: 45c0de18ff2dc9af01236380404bbd6a46502c69 + backport: 5f9dc86cd8db3619cde8c03030791e3785d57212 +d70ca7598943572d5e384227bd268acb5109bf72: + title: 'net: avoid potential underflow in qdisc_pkt_len_init() with UFO' + mainline: c20029db28399ecc50e556964eaba75c43b1e2f1 + skipped: (unknown reason) +d7d1a28f5dd57b4d83def876f8d7b4403bd37df9: + title: 'net: add more sanity checks to qdisc_pkt_len_init()' + mainline: ab9a9a9e9647392a19e7a885b08000e89c86b535 + skipped: (unknown reason) +7166927b1fe54b1d48b01d6d4ee1d09240caa315: + title: 'ipv4: ip_gre: Fix drops of small packets in ipgre_xmit' + mainline: c4a14f6d9d17ad1e41a36182dd3b8a5fd91efbd7 + skipped: fixes patch not in branch +89bbead9d897c77d0b566349c8643030ff2abeba: + title: 'sctp: set sk_state back to CLOSED if autobind fails in sctp_listen_start' + mainline: 8beee4d8dee76b67c75dc91fd8185d91e845c160 + skipped: (unknown reason) +a66828fdf8ba3ccb30204f7e44761007a7437a3a: + title: 'ALSA: hda/generic: Unconditionally prefer preferred_dacs pairs' + mainline: 1c801e7f77445bc56e5e1fec6191fd4503534787 + backport: e2c585677eacdc04469488dac62f2fed9e626fed +ba4ec41f6958bd5fc314b98c0ba17f5bb9a11375: + title: 'ALSA: hda/conexant: Fix conflicting quirk for System76 Pangolin' + mainline: b3ebb007060f89d5a45c9b99f06a55e36a1945b5 + backport: 3633a4341c2cea95f2294738f08398c864731ba8 +700f3a7c7fa5764c9f24bbf7c78e0b6e479fa653: + title: 'f2fs: Require FMODE_WRITE for atomic write ioctls' + mainline: 4f5a100f87f32cb65d4bb1ad282a08c92f6f591e + backport: e4ca685be5fe41db336a29877df4a012f919c6ae +600f668453be81b25dcc2f20096eac2243aebdaa: + title: 'wifi: ath9k: fix possible integer overflow in ath9k_get_et_stats()' + mainline: 3f66f26703093886db81f0610b97a6794511917c + backport: 404a43ffc1ecfac85855f309721cc4000e9e9171 +e6b9bf32e0695e4f374674002de0527d2a6768eb: + title: 'wifi: ath9k_htc: Use __skb_set_length() for resetting urb before resubmit' + mainline: 94745807f3ebd379f23865e6dab196f220664179 + backport: 1bb884ba1941c7a5cf9cf7cc4037f3c3a6b106d4 +8c354ddfec8126ef58cdcde82dccc5cbb2c34e45: + title: 'net: hisilicon: hip04: fix OF node leak in probe()' + mainline: 17555297dbd5bccc93a01516117547e26a61caf1 + backport: b8516592581c30f76def9221190dc9380f8da6c7 +7df217a21b74e730db216984218bde434dffc34b: + title: 'net: hisilicon: hns_dsaf_mac: fix OF node leak in hns_mac_get_info()' + mainline: 5680cf8d34e1552df987e2f4bb1bff0b2a8c8b11 + backport: 3d3fbd73239ca0d6f8e2965cd98982aecbaa79e8 +963174dad7d4993ff3a4e1b43cefd296df0296b4: + title: 'net: hisilicon: hns_mdio: fix OF node leak in probe()' + mainline: e62beddc45f487b9969821fad3a0913d9bc18a2f + backport: e07b666a56c1d67776a3189f4493afd19e050305 +b017675cfbd126954d3b45afbdd6ee345a0ce368: + title: 'ACPICA: Fix memory leak if acpi_ps_get_next_namepath() fails' + mainline: 5accb265f7a1b23e52b0ec42313d1e12895552f4 + backport: 165bb61dc09819ee1c5f1a33fc9709f57b6cd5e2 +40fa60e0bf406ced3dfd857015dafdcd677a4929: + title: 'ACPICA: Fix memory leak if acpi_ps_get_next_field() fails' + mainline: e6169a8ffee8a012badd8c703716e761ce851b15 + backport: 5d842b757d1a15ffb7abcd840bed276126302558 +8d5dd2d2ef6cc87799b4ff915e561814d3c35d2c: + title: 'ACPI: EC: Do not release locks during operation region accesses' + mainline: dc171114926ec390ab90f46534545420ec03e458 + backport: e6f96efbe6713164a9656bc0b4fc70d17f253486 +4669da66ebc5b09881487f30669b0fcdb462188e: + title: 'ACPICA: check null return of ACPI_ALLOCATE_ZEROED() in acpi_db_convert_to_package()' + mainline: a5242874488eba2b9062985bf13743c029821330 + backport: 74270bedeea7735c0ba9518b3fee24181e0c6da2 +8298b6e45fb4d8944f356b08e4ea3e54df5e0488: + title: 'tipc: guard against string buffer overrun' + mainline: 6555a2a9212be6983d2319d65276484f7c5f431a + backport: f5ce9568dc7b5120dbf2e74500c11266592afd7a +0598c4f78298d1d498b6feb90cfec302beeaec55: + title: 'net: mvpp2: Increase size of queue_name buffer' + mainline: 91d516d4de48532d967a77967834e00c8c53dfe6 + skipped: mvpp2.h not in 4.14.y +098a9b686df8c560f5f7683a1a388646aae0f023: + title: 'ipv4: Check !in_dev earlier for ioctl(SIOCSIFADDR).' + mainline: e3af3d3c5b26c33a7950e34e137584f6056c4319 + backport: 5601f1cd6c89caede02c512aceba1122c1cb3883 +05905659e2591368b50eaa79d94c75aeb18c46ef: + title: 'ipv4: Mask upper DSCP bits and ECN bits in NETLINK_FIB_LOOKUP family' + mainline: 8fed54758cd248cd311a2b5c1e180abef1866237 + backport: 87987dd1f838cdbb660e1ec61ec971fd2f9ea6aa +09e4ae353c0ae9e1c54ec566a31c9e4f7cda97b1: + title: 'tcp: avoid reusing FIN_WAIT2 when trying to find port in connect() process' + mainline: 0d9e5df4a257afc3a471a82961ace9a22b88295a + skipped: too diff code base, reuse is not even defined in the function +ea69502703bd3c38c3f016f8b6614ef0de2b94c2: + title: 'ACPICA: iasl: handle empty connection_node' + mainline: a0a2459b79414584af6c46dd8c6f866d8f1aa421 + backport: 3b69e39d186eea8fc7e7be3ce493386062cfa847 +b55c8848fdc81514ec047b2a0ec782ffe9ab5323: + title: 'wifi: mwifiex: Fix memcpy() field-spanning write warning in mwifiex_cmd_802_11_scan_ext()' + mainline: 498365e52bebcbc36a93279fe7e9d6aec8479cee + backport: 86713ec5023b52e2c29abf8d15dbd59318bc1ea0 +0f9c27fbb8a52c50ff7d2659386f1f43e7fbddee: + title: 'signal: Replace BUG_ON()s' + mainline: 7f8af7bac5380f2d95a63a6f19964e22437166e1 + backport: 62fda267887348a38a2931739e43e3c3cf22f7ab +a6bdb691cf7b66dcd929de1a253c5c42edd2e522: + title: 'ALSA: asihpi: Fix potential OOB array access' + mainline: 7b986c7430a6bb68d523dac7bfc74cbd5b44ef96 + backport: 26883705cb402fecd342e313afc02958f3c4c9e2 +dc0c68e2e6e2c544b1361baa1ca230569ab6279d: + title: 'ALSA: hdsp: Break infinite MIDI input flush loop' + mainline: c01f3815453e2d5f699ccd8c8c1f93a5b8669e59 + backport: 8835daf1e8994a559b89b4935218a7f9f0edefb2 +e657fa2df4429f3805a9b3e47fb1a4a1b02a72bd: + title: 'fbdev: pxafb: Fix possible use after free in pxafb_task()' + mainline: 4a6921095eb04a900e0000da83d9475eb958e61e + backport: 5c788f3e00af8da7b9e127980d0d782713d0ac6b +61a6d482734804e0a81c3951b8a0d3852085a2cc: + title: 'power: reset: brcmstb: Do not go into infinite loop if reset fails' + mainline: cf8c39b00e982fa506b16f9d76657838c09150cb + backport: c44e3d43c84de7db15a4743c5683c5cef64e986e +a57a97bb79d5123442068f887e5f1614ed4c752c: + title: 'ata: sata_sil: Rename sil_blacklist to sil_quirks' + mainline: 93b0f9e11ce511353c65b7f924cf5f95bd9c3aba + backport: c9591bc1d6b4f3722215d12cc1626f04783b63bf +830d908130d88745f0fd3ed9912cc381edf11ff1: + title: 'jfs: UBSAN: shift-out-of-bounds in dbFindBits' + mainline: b0b2fc815e514221f01384f39fbfbff65d897e1c + backport: ac92419af8e1b7f89db62054d06b3be6baa5bb41 +4ac58f7734937f3249da734ede946dfb3b1af5e4: + title: 'jfs: Fix uaf in dbFreeBits' + mainline: d6c1b3599b2feb5c7291f5ac3a36e5fa7cedb234 + backport: 79bf2ab235866b9421e5606ebed6984c19f2e0ae +d76b9a4c283c7535ae7c7c9b14984e75402951e1: + title: 'jfs: check if leafidx greater than num leaves per dmap tree' + mainline: d64ff0d2306713ff084d4b09f84ed1a8c75ecc32 + backport: 232dea142d9e232619aff122916b326975dd2511 +7b24d41d47a6805c45378debf8bd115675d41da8: + title: 'jfs: Fix uninit-value access of new_ea in ea_buffer' + mainline: 2b59ffad47db1c46af25ccad157bb3b25147c35c + backport: 643f01f400ff296cd1263fcd1896e261b64ed1c6 +3944d226f55235a960d8f1135927f95e9801be12: + title: 'drm/amd/display: Check stream before comparing them' + mainline: 35ff747c86767937ee1e0ca987545b7eed7a0810 + skipped: affected file not in 4.14.y +b3dfa878257a7e98830b3009ca5831a01d8f85fc: + title: 'drm/amd/display: Fix index out of bounds in degamma hardware format translation' + mainline: b7e99058eb2e86aabd7a10761e76cae33d22b49f + skipped: affected file not in 4.14.y +193605d5512bf611d289893e59b8059424a0b0dc: + title: 'drm/printer: Allow NULL data in devcoredump printer' + mainline: 53369581dc0c68a5700ed51e1660f44c4b2bb524 + skipped: no __drm_puts_coredump in 4.14.y +60d3886c33e619bb0929e4270515fa6edf962f5a: + title: 'scsi: aacraid: Rearrange order of struct aac_srb_unit' + mainline: 6e5860b0ad4934baee8c7a202c02033b2631bb44 + skipped: no structure to swap members +7d91358e819a2761a5feff67d902456aaf4e567a: + title: 'drm/radeon/r100: Handle unknown family in r100_cp_init_microcode()' + mainline: c6dbab46324b1742b50dc2fb5c1fee2c28129439 + backport: 4e150b2ed11f1ce7bfe2e243637886862eda74d3 +64bf240f2dfc242d507c7f8404cd9938d61db7cc: + title: 'of/irq: Refer to actual buffer size in of_irq_parse_one()' + mainline: 39ab331ab5d377a18fbf5a0e0b228205edfcc7f4 + backport: c19d34cfa203f3c75b5e25a6f657cb4a8adf372e +a15514ec9f080fe24ee71edf8b97b49ab9b8fc80: + title: 'ext4: ext4_search_dir should return a proper error' + mainline: cd69f8f9de280e331c9e6ff689ced0a688a9ce8f + backport: 9d2a9cdceb4ae4c4bd1ee308052de6f10602cb15 +4192adefc9c570698821c5eb9873320eac2fcbf1: + title: 'ext4: fix i_data_sem unlock order in ext4_ind_migrate()' + mainline: cc749e61c011c255d81b192a822db650c68b313f + backport: 6982e3324dbcc51b1cec4f5488fc6a0bbf7be4ad +12f47fdd4fb4c4592c9cfad6c21b3855a6bdadb8: + title: 'spi: s3c64xx: fix timeout counters in flush_fifo' + mainline: 68a16708d2503b6303d67abd43801e2ca40c208d + backport: 19730760522e21af34cdab871e3908e7b7dc8521 +8dea5ffbd147f6708e2f70f04406d8b711873433: + title: 'selftests: breakpoints: use remaining time to check if suspend succeed' + mainline: c66be905cda24fb782b91053b196bd2e966f95b7 + backport: 1fad7228e67992a1b120ff76b4887190ca32e8f6 +058d587e7f1520934823bae8f41db3c0b1097b59: + title: 'selftests: vDSO: fix vDSO symbols lookup for powerpc64' + mainline: ba83b3239e657469709d15dcea5f9b65bf9dbf34 + backport: e8219bced027378a40a33c1044eca3135db5e83d +8a6158421b417bb0841c4c7cb7a649707a1089d2: + title: 'i2c: xiic: Wait for TX empty to avoid missed TX NAKs' + mainline: 521da1e9225450bd323db5fa5bca942b1dc485b7 + backport: e9851b22b5a7211b32db852c9e6a6910230faebf +54feac119535e0273730720fe9a4683389f71bff: + title: 'spi: bcm63xx: Fix module autoloading' + mainline: 909f34f2462a99bf876f64c5c61c653213e32fce + backport: e8c0b2c2e4064aa5e3f7fdb517265f788156fdc3 +7fddba7b1bb6f1cc35269e510bc832feb3c54b11: + title: 'perf/core: Fix small negative period being ignored' + mainline: 62c0b1061593d7012292f781f11145b2d46f43ab + backport: 7a6139e316c9dd16f9f3dcf8a225ddfbe487c6db +de109ca4af7222b8664af6b04f8dae2c6da03c70: + title: 'parisc: Fix itlb miss handler for 64-bit programs' + mainline: 9542130937e9dc707dd7c6b7af73326437da2d50 + skipped: conflicts hint that this code is not affected so skip +3b9b0efb330f9d2ab082b7f426993d7bac3f2c66: + title: 'ALSA: core: add isascii() check to card ID generator' + mainline: d278a9de5e1837edbe57b2f1f95a104ff6c84846 + backport: 38e7f1b9fd9e1f67d748242d07a430c85f9024a8 +64c8c484242b141998f7408596ddb2dc6da4b1d3: + title: 'ext4: no need to continue when the number of entries is 1' + mainline: 1a00a393d6a7fb1e745a41edd09019bd6a0ad64c + backport: 9e7a4c15b80cc0547d89230298eb7d9e71afb999 +d38a882fadb0431747342637ad3a9166663e8a86: + title: 'ext4: propagate errors from ext4_find_extent() in ext4_insert_range()' + mainline: 369c944ed1d7c3fb7b35f24e4735761153afe7b3 + backport: ffe3a60234391b1045ee3ed64896bf14da3613b3 +330ecdae721e62cd7ee287fb3cd7f88afa26e85a: + title: 'ext4: fix incorrect tid assumption in __jbd2_log_wait_for_space()' + mainline: 972090651ee15e51abfb2160e986fa050cfc7a40 + backport: d493509e9bd943f52ecb658bce751a5665491843 +e17ebe4fdd7665c93ae9459ba40fcdfb76769ac1: + title: 'ext4: aovid use-after-free in ext4_ext_insert_extent()' + mainline: a164f3a432aae62ca23d03e6d926b122ee5b860d + backport: 5ddb510c87c40bf7bc87aa90c9e6689970ea7733 +d4574bda63906bf69660e001470bfe1a0ac524ae: + title: 'ext4: fix double brelse() the buffer of the extents path' + mainline: dcaa6c31134c0f515600111c38ed7750003e1b9c + backport: 47c536f76d494c3b5e14839b5857c8f8dbba1242 +93fd249f197eeca81bb1c744ac8aec2804afd219: + title: 'ext4: fix incorrect tid assumption in ext4_wait_for_tail_page_commit()' + mainline: dd589b0f1445e1ea1085b98edca6e4d5dedb98d0 + backport: 5a0581e18a4b83fc0931a64224872c539457d2cd +6de0e6b773599022227d6a4b139e27b048ea7c75: + title: 'parisc: Fix 64-bit userspace syscall path' + mainline: d24449864da5838936669618356b0e30ca2999c3 + skipped: commit did not cherry-pick cleanly +030de6c36c48a40f42d7d59732ee69990340e0a1: + title: 'of/irq: Support #msi-cells=<0> in of_msi_get_domain' + mainline: db8e81132cf051843c9a59b46fa5a071c45baeb3 + backport: c87ca927b9e3d847d7c44ecf9f07528f1ef033e4 +801a35dfef6996f3d5eaa96a59caf00440d9165e: + title: 'jbd2: stop waiting for space when jbd2_cleanup_journal_tail() returns error' + mainline: f5cacdc6f2bb2a9bf214469dd7112b43dd2dd68a + backport: d3355be0380a6ec95a835e359a68d4f42af056b8 +5a074861ae1b6262b50fa9780957db7d17b86672: + title: 'ocfs2: fix the la space leak when unmounting an ocfs2 volume' + mainline: dfe6c5692fb525e5e90cefe306ee0dffae13d35f + backport: 0835b9f76d8069704f9620b14593572fb33fc20a +e95da10e6fcac684895c334eca9d95e2fd10b0fe: + title: 'ocfs2: fix uninit-value in ocfs2_get_block()' + mainline: 2af148ef8549a12f8025286b8825c2833ee6bcb8 + backport: 74930aa28c3a2c7c23718c81400a79bb362bc740 +5c9807c523b4fca81d3e8e864dabc8c806402121: + title: 'ocfs2: reserve space for inline xattr before attaching reflink tree' + mainline: 5ca60b86f57a4d9648f68418a725b3a7de2816b0 + backport: 760f46ded0728ed84afb0a9859c89b0f92dca609 +fc5cc716dfbdc5fd5f373ff3b51358174cf88bfc: + title: 'ocfs2: cancel dqi_sync_work before freeing oinfo' + mainline: 35fccce29feb3706f649726d410122dd81b92c18 + backport: a03082a35421c27be3c50fe1d15abf899546cc66 +5245f109b4afb6595360d4c180d483a6d2009a59: + title: 'ocfs2: remove unreasonable unlock in ocfs2_read_blocks' + mainline: c03a82b4a0c935774afa01fd6d128b444fd930a1 + backport: 1ca500197bcc7e1e485788aed1dacdfb9f973ff9 +fd89d92c1140cee8f59de336cb37fa65e359c123: + title: 'ocfs2: fix null-ptr-deref when journal load failed.' + mainline: 5784d9fcfd43bd853654bb80c87ef293b9e8e80a + backport: c3bd19a739dcaaae0cbab86f0c0b0b27eda93601 +190d98bcd61117a78fe185222d162180f061a6ca: + title: 'ocfs2: fix possible null-ptr-deref in ocfs2_set_buffer_uptodate' + mainline: 33b525cef4cff49e216e4133cc48452e11c0391e + backport: ae8eab265d15a47a46d1c6b58a75d801814cb86c +7d0c427021e9d522248cfc6169ba5c5c33bfa63e: + title: 'riscv: define ILLEGAL_POINTER_VALUE for 64bit' + mainline: 5c178472af247c7b50f962495bb7462ba453b9fb + skipped: fixes patch not in branch +12f7b89dd72b25da4eeaa22097877963cad6418e: + title: 'aoe: fix the potential use-after-free problem in more places' + mainline: 6d6e54fc71ad1ab0a87047fd9c211e75d86084a3 + skipped: commit did not cherry-pick cleanly +2f1e1a9047b1644d05284fc0da1d6ab9c4434cf6: + title: 'clk: rockchip: fix error for unknown clocks' + mainline: 12fd64babaca4dc09d072f63eda76ba44119816a + backport: fb101f7fce16d22e18b8bf9fa9d13373f38536e6 +4afab2197e530b480c4cc099255d12a08c6a1f93: + title: 'media: uapi/linux/cec.h: cec_msg_set_reply_to: zero flags' + mainline: 599f6899051cb70c4e0aa9fd591b9ee220cb6f14 + backport: 62369afcf4db28d2c18ed331f75448c97ee53bac +5098b9e6377577fe13d03e1d8914930f014a3314: + title: 'media: venus: fix use after free bug in venus_remove due to race condition' + mainline: c5a85ed88e043474161bbfe54002c89c1cb50ee2 + backport: 66dd5129c4b2756157ab65da5826aba26c3adc1d +2e78095a0cc35d6210de051accb2fe45649087cd: + title: 'iio: magnetometer: ak8975: Fix reading for ak099xx sensors' + mainline: 129464e86c7445a858b790ac2d28d35f58256bbe + backport: 8eafd43568c906c485c18f684d67a19ec2e4edcd +455246846468503ac739924d5b63af32c6261b31: + title: 'tomoyo: fallback to realpath if symlink''s pathname does not exist' + mainline: ada1986d07976d60bed5017aa38b7f7cf27883f7 + backport: f24bdf3d0d8335026c719db068c6472acbf0839d +9ff7ae486d51c0da706a29b116d7fa399db677f5: + title: 'Input: adp5589-keys - fix adp5589_gpio_get_value()' + mainline: c684771630e64bc39bddffeb65dd8a6612a6b249 + backport: bd7cd397ff7943c113c695eb7cd40b4b6afc06bc +cd686dfff63f27d712877aef5b962fbf6b8bc264: + title: 'btrfs: wait for fixup workers before stopping cleaner kthread during umount' + mainline: 41fd1e94066a815a7ab0a7025359e9b40e4b3576 + backport: 3fd6acda2f9ff74d3281d09cc1ce73e4ad65c469 +e9b751c0d7abde1837ee1510cbdc705570107ef1: + title: 'gpio: davinci: fix lazy disable' + mainline: 3360d41f4ac490282fddc3ccc0b58679aa5c065d + backport: 1acfbc7cdb47b0749f0cd34c0f2b622127307b1b +a0c3b0d44802b02b0bb6a68d3a44417be01f9175: + title: 'ext4: avoid ext4_error()''s caused by ENOMEM in the truncate path' + mainline: 73c384c0cdaa8ea9ca9ef2d0cff6a25930f1648e + skipped: commit did not cherry-pick cleanly +393a46f60ea4f249dc9d496d4eb2d542f5e11ade: + title: 'ext4: fix slab-use-after-free in ext4_split_extent_at()' + mainline: c26ab35702f8cd0cdc78f96aa5856bfb77be798f + skipped: (unknown reason) +ec0c0beb9b777cdd1edd7df9b36e0f3e67e2bdff: + title: 'ext4: update orig_path in ext4_find_extent()' + mainline: 5b4b2dcace35f618fe361a87bae6f0d13af31bc1 + skipped: (unknown reason) +3781b92af63e7a53805e105875d4dace65bcefef: + title: 'arm64: Add Cortex-715 CPU part definition' + mainline: 07e39e60bbf0ccd5f895568e1afca032193705c0 + backport: 57d9a27da5d76dde393792654826c5371b51c77b +e30c75d171b55ad7324e98987685ea2ca9452158: + title: 'arm64: cputype: Add Neoverse-N3 definitions' + mainline: 924725707d80bc2588cefafef76ff3f164d299bc + skipped: commit did not cherry-pick cleanly +2606ccae1e72f426997ecf5945aedb84fd72685a: + title: 'arm64: errata: Expand speculative SSBS workaround once more' + mainline: 081eb7932c2b244f63317a982c5e3990e2c7fbdd + skipped: commit did not cherry-pick cleanly +f31f92107e5a8ecc8902705122c594e979a351fe: + title: 'uprobes: fix kernel info leak via "[uprobes]" vma' + mainline: 34820304cc2cd1804ee1f8f3504ec77813d29c8e + backport: 0a56f80bfe3292c9e87a85762ac9693abadec8c5 +f81fcf39509d30cb5f1c659099c1d8f0c2a9a57a: + title: 'nfsd: use ktime_get_seconds() for timestamps' + mainline: b3f255ef6bffc18a28c3b6295357f2a3380c033f + backport: 2c85a79aba7b7724ff506258d04032d4f1b4f503 +ccbd18223985635b8dbb1393bacac9e1a5fa3f2f: + title: 'nfsd: fix delegation_blocked() to block correctly for at least 30 seconds' + mainline: 45bb63ed20e02ae146336412889fe5450316a84f + backport: 2002a57e83b51260eb9de16d0935c7291c203c13 +9a23fd5a0532ab1aab85ae043d68653d9f88c479: + title: 'rtc: at91sam9: drop platform_data support' + mainline: 1a76a77c8800a50b98bd38b7b1ffec32fe107bc1 + skipped: commit did not cherry-pick cleanly +225713a4e1cc34f3b7c0df7f6e0950f41f52a92f: + title: 'rtc: at91sam9: fix OF node leak in probe() error path' + mainline: 73580e2ee6adfb40276bd420da3bb1abae204e10 + skipped: commit did not cherry-pick cleanly +079b8c72b42747af8a7d49e19bbf91d2960ee792: + title: 'ACPI: battery: Simplify battery hook locking' + mainline: 86309cbed26139e1caae7629dcca1027d9a28e75 + skipped: commit did not cherry-pick cleanly +76fb2cbf01571926da8ecf6876cc8cb07d3f5183: + title: 'ACPI: battery: Fix possible crash when unregistering a battery hook' + mainline: 76959aff14a0012ad6b984ec7686d163deccdc16 + skipped: fixes patch not in branch +eea5a4e7fe4424245aeba77bb0f24a38a1bead16: + title: 'ext4: fix inode tree inconsistency caused by ENOMEM' + mainline: 3f5424790d4377839093b68c12b130077a4e4510 + backport: 36949604b7d7db06dd36f3871bf9c2d6a06d8b89 +bee7c7b6f1cf93fe1876fe0dd00e304a115d3985: + title: 'net: ethernet: cortina: Drop TSO support' + mainline: ac631873c9e7a50d2a8de457cfc4b9f86666403e + skipped: fixes patch not in branch +f3de4b5d1ab8139aee39cc8afbd86a2cf260ad91: + title: 'tracing: Remove precision vsnprintf() check from print event' + mainline: 5efd3e2aef91d2d812290dcb25b2058e6f3f532c + backport: 825559c99e1897b27fe9034af05c2d4febcf50e2 +831d8d67c339a5782e75c8c907fd90a6a91b4b34: + title: 'drm: Move drm_mode_setcrtc() local re-init to failure path' + mainline: c232e9f41b136c141df9938024e521191a7b910d + skipped: commit did not cherry-pick cleanly +98d49bc3f6295c86febebfdb027a2d8de4eaf433: + title: 'drm/crtc: fix uninitialized variable use even harder' + mainline: b6802b61a9d0e99dcfa6fff7c50db7c48a9623d3 + skipped: commit did not cherry-pick cleanly +42a7c0fd6e5b7c5db8af8ab2bab6eff2a723b168: + title: 'virtio_console: fix misc probe bugs' + mainline: b9efbe2b8f0177fa97bfab290d60858900aa196b + backport: c69c205a6a13dbe8ff4f2b65ce5170a4e182edae +f72ebc8dbb96dcdc46fcd6e51172d8fa4fab723a: + title: 'Input: synaptics-rmi4 - fix UAF of IRQ domain on driver removal' + mainline: fbf8d71742557abaf558d8efb96742d442720cc2 + skipped: fixes patch not in branch +b5ac877855a603c9434e37f04ec419af36cc465b: + title: 'bpf: Check percpu map value size first' + mainline: 1d244784be6b01162b732a5a7d637dfc024c3203 + skipped: commit did not cherry-pick cleanly +f559306a168fb92a936beaa1f020f5c45cdedac6: + title: 's390/facility: Disable compile time optimization for decompressor code' + mainline: 0147addc4fb72a39448b8873d8acdf3a0f29aa65 + backport: fe91966767513b8ae7f637bfc2c2fb68636a37dc +a12b82d741350b89b4df55fa8a4e5c0579d919cb: + title: 's390/mm: Add cond_resched() to cmm_alloc/free_pages()' + mainline: 131b8db78558120f58c5dc745ea9655f6b854162 + backport: cc84719d9b691915a4fde154667d84e2ad74a0c9 +c0f57dd0f1603ae27ef694bacde66147f9d57d32: + title: 'ext4: nested locking for xattr inode' + mainline: d1bc560e9a9c78d0b2314692847fc8661e0aeb99 + backport: 0c92a05a334ec247c1c27ecfd35705b865a2eb5d +1c7898595707c2d7bb09007d83e2814b2c7d4ef2: + title: 's390/cpum_sf: Remove WARN_ON_ONCE statements' + mainline: b495e710157606889f2d8bdc62aebf2aa02f67a7 + skipped: commit did not cherry-pick cleanly +f0b8e2702a92dd3658a18d4834368a8256f41a3e: + title: 'ktest.pl: Avoid false positives with grub2 skip regex' + mainline: 2351e8c65404aabc433300b6bf90c7a37e8bbc4d + skipped: commit did not cherry-pick cleanly +8ac316aed34fa1a49ebbaa93465bf8bfe73e9937: + title: 'clk: bcm: bcm53573: fix OF node leak in init' + mainline: f92d67e23b8caa81f6322a2bad1d633b00ca000e + backport: 2ac0320e88b9c9005998c2e3b5734f7961070cc6 +a2eb6e5a03de2ecbba68384c1c8f2a34c89ed7b8: + title: 'i2c: i801: Use a different adapter-name for IDF adapters' + mainline: 43457ada98c824f310adb7bd96bd5f2fcd9a3279 + backport: 98450b5f38eb8a75e2b40b3174bc00600347d329 +8e019d9106560a57b752314a3da53821910a3462: + title: 'PCI: Mark Creative Labs EMU20k2 INTx masking as broken' + mainline: 2910306655a7072640021563ec9501bfa67f0cb1 + skipped: commit did not cherry-pick cleanly +940e83f377cb3863bd5a4e483ef1b228fbc86812: + title: 'media: videobuf2-core: clear memory related fields in __vb2_plane_dmabuf_put()' + mainline: 6a9c97ab6b7e85697e0b74e86062192a5ffffd99 + backport: 3df84428b103d405f250cfdf5936537dedc7c2fd +93233aa73b3ac373ffd4dd9e6fb7217a8051b760: + title: 'usb: chipidea: udc: enable suspend interrupt after usb reset' + mainline: e4fdcc10092fb244218013bfe8ff01c55d54e8e4 + backport: fffec2079f8107bb33fd1a1928239c142510aa2f +e0daff560940b0d370d4328b9ff9294b7f893daa: + title: 'tools/iio: Add memory allocation failure check for trigger_name' + mainline: 3c6b818b097dd6932859bcc3d6722a74ec5931c1 + backport: ca910899b554f8d476bcf4b14980f8845269e742 +aca863154863d0a97305a089399cee1d39e852da: + title: 'driver core: bus: Return -EIO instead of 0 when show/store invalid bus attribute' + mainline: c0fd973c108cdc22a384854bc4b3e288a9717bb2 + backport: a22a1046d7d1b88568ba8da927e821b4f0babaac +433c84c8495008922534c5cafdae6ff970fb3241: + title: 'fbdev: sisfb: Fix strbuf array overflow' + mainline: 9cf14f5a2746c19455ce9cb44341b5527b5e19c3 + backport: ef5963eabdc48181eee93f7233f433cc2a588ea2 +a818f644456feb3ca744f4f54b6d9ceaaed6135d: + title: 'NFS: Remove print_overflow_msg()' + mainline: eb72f484a5eb94c53a241e6a7811270fb25200ad + skipped: commit did not cherry-pick cleanly +25b0b9b2d4fe883ca4c216d337d7292525dce14d: + title: 'SUNRPC: Fix integer overflow in decode_rc_list()' + mainline: 6dbf1f341b6b35bcc20ff95b6b315e509f6c5369 + skipped: commit did not cherry-pick cleanly +a58878d7106b229a2d91a647629a0a7bedccaa8a: + title: 'tcp: fix tcp_enter_recovery() to zero retrans_stamp when it''s safe' + mainline: b41b4cbd9655bcebcce941bef3601db8110335be + backport: 5e4b995a3aca9fdd2272546ec5667c32747443f4 +f07131239a76cc10d5e82c19d91f53cb55727297: + title: 'netfilter: br_netfilter: fix panic with metadata_dst skb' + mainline: f9ff7665cd128012868098bbd07e28993e314fdb + backport: 29037061623d008c997450f67e5b5d05f756bb7c +b77b3fb12fd483cae7c28648903b1d8a6b275f01: + title: 'Bluetooth: RFCOMM: FIX possible deadlock in rfcomm_sk_state_change' + mainline: 08d1914293dae38350b8088980e59fbc699a72fe + backport: 648c574af6e92af84ebd54f3d8044c21ae820655 +8c4d52b80f2d9dcc5053226ddd18a3bb1177c8ed: + title: 'gpio: aspeed: Add the flush write to ensure the write complete.' + mainline: 1bb5a99e1f3fd27accb804aa0443a789161f843c + backport: 55a6946bb46cdc7b528dfbd30bb2fb2376525619 +f8f353585d15bf316fc0ab26a2ef0f7f3dec0136: + title: 'clk: Add (devm_)clk_get_optional() functions' + mainline: 60b8f0ddf1a927ef02141a6610fd52575134f821 + skipped: commit did not cherry-pick cleanly +419295596b884e6bd32c16d1426ad35b2c68d148: + title: 'clk: generalize devm_clk_get() a bit' + mainline: abae8e57e49aa75f6db76aa866c775721523908f + skipped: commit did not cherry-pick cleanly +6f4642e0e2f8f5090d45430255e92caa9d7772bb: + title: 'clk: Provide new devm_clk helpers for prepared and enabled clocks' + mainline: 7ef9651e9792b08eb310c6beb202cbc947f43cab + skipped: commit did not cherry-pick cleanly +37943407639c824cf58dd2a782e884f66cddc490: + title: 'gpio: aspeed: Use devm_clk api to manage clock source' + mainline: a6191a3d18119184237f4ee600039081ad992320 + skipped: (unknown reason) +dca2ca65a8695d9593e2cf1b40848e073ad75413: + title: 'igb: Do not bring the device up after non-fatal error' + mainline: 330a699ecbfc9c26ec92c6310686da1230b4e7eb + backport: 5a801c62a51b1c210698f59e40aa5417f071d7fc +4bd7823cacb21e32f3750828148ed5d18d3bf007: + title: 'net: ibm: emac: mal: fix wrong goto' + mainline: 08c8acc9d8f3f70d62dd928571368d5018206490 + backport: 1fde287fcb280b7ae6a4a0b3edc99dc455a5c30d +4151ec65abd755133ebec687218fadd2d2631167: + title: 'ppp: fix ppp_async_encode() illegal access' + mainline: 40dddd4b8bd08a69471efd96107a4e1c73fabefc + backport: cebdbf6f73b01661300d39d2064f6d5c69f24f8d +24888915364cfa410de62d8abb5df95c3b67455d: + title: 'net: ipv6: ensure we call ipv6_mc_down() at most once' + mainline: 9995b408f17ff8c7f11bc725c8aa225ba3a63b1c + skipped: commit did not cherry-pick cleanly +a612395c7631918e0e10ea48b9ce5ab4340f26a6: + title: 'CDC-NCM: avoid overflow in sanity checking' + mainline: 8d2b1a1ec9f559d30b724877da4ce592edc41fdc + backport: a5b30e4f682b2971d4455afa1b3d3531d37534e6 +b1ce11ce52359eefa7bc33be13e946a7154fd35f: + title: 'HID: plantronics: Workaround for an unexcepted opposite volume key' + mainline: 87b696209007b7c4ef7bdfe39ea0253404a43770 + backport: 35af89640d1d44ff6c7973922c43c4f5b83af8b9 +6f8f23390160355a4a571230986d524fd3929c2a: + title: 'Revert "usb: yurex: Replace snprintf() with the safer scnprintf() variant"' + mainline: 71c717cd8a2e180126932cc6851ff21c1d04d69a + backport: 93cddf4d4c509f0ec53017297294d0a302ffd0da +52e998173cfed7d6953b3185f2da174712ce4a8f: + title: 'usb: xhci: Fix problem with xhci resume from suspend' + mainline: d44238d8254a36249d576c96473269dbe500f5e4 + backport: dc89df53f4c97dedfcb4568191037e3ebeef159d +7a8df891d679d6627d91e334a734578ca16518eb: + title: 'usb: storage: ignore bogus device raised by JieLi BR21 USB sound chip' + mainline: a6555cb1cb69db479d0760e392c175ba32426842 + backport: b742600e3e092e2857196e7173387925a5111631 +464801a0f6ccb52b21faa33bac6014fd74cc5e10: + title: 'net: Fix an unsafe loop on the list' + mainline: 1dae9f1187189bc09ff6d25ca97ead711f7e26f9 + backport: 44dcccd712b6d2c691634dfd49fa5903ad691fc8 +29f085345cde24566efb751f39e5d367c381c584: + title: 'posix-clock: Fix missing timespec64 check in pc_clock_settime()' + mainline: d8794ac20a299b647ba9958f6d657051fc51a540 + backport: d669e5f7d2c8746e3ed062d73b9426fb09039573 +cc86f2e9876c8b5300238cec6bf0bd8c842078ee: + title: 'arm64: probes: Remove broken LDR (literal) uprobe support' + mainline: acc450aa07099d071b18174c22a1119c57da8227 + backport: 7d6f8b1d7746e0b3269b0e61c8d374d09a6b771b +19f4d3a94c77295ee3a7bbac91e466955f458671: + title: 'arm64: probes: Fix simulate_ldr*_literal()' + mainline: 50f813e57601c22b6f26ced3193b9b94d70a2640 + backport: ed1774c811054dd8ff235b4830782572676f7b00 +029efe3b57d981b0c239e50f3513838cae121578: + title: 'PCI: Add function 0 DMA alias quirk for Glenfly Arise chip' + mainline: 9246b487ab3c3b5993aae7552b7a4c541cc14a49 + backport: 9b9e89aeb9b0df1de45bb186662572a1b8b921e4 +09b2d2a2267187336b446f4c08e6204c30688bcf: + title: 'fat: fix uninitialized variable' + mainline: 963a7f4d3b90ee195b895ca06b95757fcba02d1a + backport: 5a2b55312783d9a4f60898793dd5aadea0360504 +11a772d5376aa6d3e2e69b5b5c585f79b60c0e17: + title: 'KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin()' + mainline: 49f683b41f28918df3e51ddc0d928cb2e934ccdb + backport: 70b388b0efb874251eee3df2059246413ee623e7 +4a88fca95c8df3746b71e31f44a02d35f06f9864: + title: 'net: dsa: mv88e6xxx: Fix out-of-bound access' + mainline: 528876d867a23b5198022baf2e388052ca67c952 + skipped: fixes patch not in branch +ce6924fdafb09a7231ecfcea119b4e4c83023c97: + title: 's390/sclp_vt220: Convert newlines to CRLF instead of LFCR' + mainline: dee3df68ab4b00fff6bdf9fc39541729af37307c + backport: b291c7c1eed423874cdbc28d717d0f4944b4b0fc +a9dee098c6931dfd75abe015b04c1c66fa1507f6: + title: 'KVM: s390: Change virtual to physical address access in diag 0x258 handler' + mainline: cad4b3d4ab1f062708fff33f44d246853f51e966 + backport: 4386af4473d15479b5c96b9941faf351b614bfbb +9e460c6c7c8b72c4c23853627789c812fd2c3cf5: + title: 'x86/cpufeatures: Define X86_FEATURE_AMD_IBPB_RET' + mainline: ff898623af2ed564300752bba83a680a1e4fec8d + backport: 67d246dc91071f9cc960c2f6f969857bb2922c7f +f924af529417292c74c043c627289f56ad95a002: + title: 'drm/vmwgfx: Handle surface check failure correctly' + mainline: 26498b8d54373d31a621d7dec95c4bd842563b3b + backport: bc865c54ef9ef2e2ef7097787e63ed03b1d5b6bc +842911035eb20561218a0742f3e54e7978799c6a: + title: 'iio: dac: stm32-dac-core: add missing select REGMAP_MMIO in Kconfig' + mainline: 27b6aa68a68105086aef9f0cb541cd688e5edea8 + backport: 76b3e6598c2a4f5ecf6ae67f03f4fb0f85f90a61 +0767c21aaa8eb9cc90e90f646c2865c6550e4dea: + title: 'iio: adc: ti-ads8688: add missing select IIO_(TRIGGERED_)BUFFER in Kconfig' + mainline: 4c4834fd8696a949d1b1f1c2c5b96e1ad2083b02 + skipped: fixes patch not in branch +485744b5bd1f15a3ce50f70af52a9d68761c57dd: + title: 'iio: hid-sensors: Fix an error handling path in _hid_sensor_set_report_latency()' + mainline: 3a29b84cf7fbf912a6ab1b9c886746f02b74ea25 + backport: 6e6aa73932d86ce5335cdb2e50f9c9c46ad85b53 +4401780146a19d65df6f49d5273855f33c9c0a35: + title: 'iio: light: opt3001: add missing full-scale range value' + mainline: 530688e39c644543b71bdd9cb45fdfb458a28eaa + backport: abf9b8555e8b720496841609025a6c9aa1a9188f +9010d2cace71ea6de797a2e22a9dc52398147d8a: + title: 'Bluetooth: Remove debugfs directory on module init failure' + mainline: 1db4564f101b47188c1b71696bd342ef09172b22 + skipped: commit did not cherry-pick cleanly +e32ae4a12628bb2c1046715f47ea7d57fc2b9cbf: + title: 'Bluetooth: btusb: Fix regression with fake CSR controllers 0a12:0001' + mainline: 2c1dda2acc4192d826e84008d963b528e24d12bc + backport: edc69f40262617c7257c732edc12d613a9687e86 +e76b961d32fd94c7af80bc0ea35e345f1f838c59: + title: 'xhci: Fix incorrect stream context type macro' + mainline: 6599b6a6fa8060145046d0744456b6abdb3122a7 + backport: 98205e0fb61135f36e438d637862d78061396814 +cdb2c8b31ea3ba692c9ab213369b095e794c8f39: + title: 'USB: serial: option: add support for Quectel EG916Q-GL' + mainline: 540eff5d7faf0c9330ec762da49df453263f7676 + backport: 14f0ba83331cb218f676f0cf81cda64c290c3ed4 +20cc2b146a8748902a5e4f5aa70457f48174b5c4: + title: 'USB: serial: option: add Telit FN920C04 MBIM compositions' + mainline: 6d951576ee16430822a8dee1e5c54d160e1de87d + backport: 1128e72fca7832afc143680fe12d0c938b3270d7 +8aadef73ba3b325704ed5cfc4696a25c350182cf: + title: 'parport: Proper fix for array out-of-bounds access' + mainline: 02ac3a9ef3a18b58d8f3ea2b6e46de657bf6c4f9 + backport: f3fce0c6ccd5abc38c912f3233df450af041b90c +e75562346cac53c7e933373a004b1829e861123a: + title: 'x86/apic: Always explicitly disarm TSC-deadline timer' + mainline: ffd95846c6ec6cf1f93da411ea10d504036cab42 + backport: adeaa3e2c7e54bbd83852d8e302ca76d7a1f256d +bb857ae1efd3138c653239ed1e7aef14e1242c81: + title: 'nilfs2: propagate directory read errors from nilfs_find_entry()' + mainline: 08cfa12adf888db98879dbd735bc741360a34168 + backport: 4ff716b2bb631baecc1eb6eca17a3d23b2850ad7 +15614cab99e86882605a4d1907db0c4566abf645: + title: 'clk: Fix pointer casting to prevent oops in devm_clk_release()' + mainline: 8b3d743fc9e2542822826890b482afabf0e7522a + skipped: commit did not cherry-pick cleanly +870e6b02ddc732c7aedb2b22e6d8db33103218d0: + title: 'clk: Fix slab-out-of-bounds error in devm_clk_release()' + mainline: 66fbfb35da47f391bdadf9fa7ceb88af4faa9022 + skipped: (unknown reason) +3e98839514a883188710c5467cf3b62a36c7885a: + title: 'RDMA/bnxt_re: Fix incorrect AVID type in WQE structure' + mainline: 9ab20f76ae9fad55ebaf36bdff04aea1c2552374 + backport: 85ee27f8ef66432d98e386248c7d8fa90a092b9d +361576c9d34bd16b089864545073db383e372ba8: + title: 'RDMA/cxgb4: Fix RDMA_CM_EVENT_UNREACHABLE error for iWARP' + mainline: c659b405b82ead335bee6eb33f9691bf718e21e8 + backport: 6371ff58cca7cd85a5f875a9e08b51f3bfa55a6e +8fb8f613a904d3ccf61fa824a95f2fa2c3b8f191: + title: 'RDMA/bnxt_re: Return more meaningful error' + mainline: 98647df0178df215b8239c5c365537283b2852a6 + backport: 093416fbc1a9209422cb76784577eae3430a207d +49e08e1d9e006c1e58401241eb74d4f750d3c78c: + title: 'drm/msm/dsi: fix 32-bit signed integer extension in pclk_rate calculation' + mainline: 358b762400bd94db2a14a72dfcef74c7da6bd845 + skipped: fixes patch not in branch +805d7e00462b50b48175c050fa91047fbe49b79c: + title: 'macsec: don''t increment counters for an unrelated SA' + mainline: cf58aefb1332db322060cad4a330d5f9292b0f41 + skipped: fixes patch not in branch +7517c13ae14dac758e4ec0d881e463a8315bbc7d: + title: 'net: ethernet: aeroflex: fix potential memory leak in greth_start_xmit_gbit()' + mainline: cf57b5d7a2aad456719152ecd12007fe031628a3 + backport: e28fdf954db36a46cba23d2fe2d01635cca2063f +8e81ce7d0166a2249deb6d5e42f28a8b8c9ea72f: + title: 'net: systemport: fix potential memory leak in bcm_sysport_xmit()' + mainline: c401ed1c709948e57945485088413e1bb5e94bd1 + backport: 69215607dc1760d491ac751b05456a18b8adf01d +2b0b33e8a58388fa9078f0fbe9af1900e6b08879: + title: 'usb: typec: altmode should keep reference to parent' + mainline: befab3a278c59db0cc88c8799638064f6d3fd6f8 + skipped: fixes patch not in branch +e232728242c4e98fb30e4c6bedb6ba8b482b6301: + title: 'Bluetooth: bnep: fix wild-memory-access in proto_unregister' + mainline: 64a90991ba8d4e32e3173ddd83d0b24167a5668c + backport: e0a01897a0cdcee042136aa737dda898b2a2cb60 +8fd414d25465bb666c71b5490fa939411e49228b: + title: arm64:uprobe fix the uprobe SWBP_INSN in big-endian + mainline: 60f07e22a73d318cddaafa5ef41a10476807cc07 + backport: 644ca3d02eed5d09144291c2700a14cb2183bc0d +b6a638cb600e13f94b5464724eaa6ab7f3349ca2: + title: 'arm64: probes: Fix uprobes for big-endian kernels' + mainline: 13f8f1e05f1dc36dbba6cba0ae03354c0dafcde7 + backport: e33413f73e839b4c49efa91f2a26d4fde33361e4 +8bf46a3927823b8c472c70eba0093a4474c1da9b: + title: 'KVM: s390: gaccess: Refactor gpa and length calculation' + mainline: 416e7f0c9d613bf84e182eba9547ae8f9f5bfa4c + skipped: (unknown reason) +dd9ee00ed0bd0c96da11d7a3ca7a5d3450ee88d5: + title: 'KVM: s390: gaccess: Refactor access address range check' + mainline: 7faa543df19bf62d4583a64d3902705747f2ad29 + skipped: commit did not cherry-pick cleanly +4a90a714d57d85c8c96dd304ee4e4f4acd36f437: + title: 'KVM: s390: gaccess: Cleanup access to guest pages' + mainline: bad13799e0305deb258372b7298a86be4c78aaba + skipped: commit did not cherry-pick cleanly +c6c701875ee54ff959955abc6ceef9440955d43d: + title: 'KVM: s390: gaccess: Check if guest address is in memslot' + mainline: e8061f06185be0a06a73760d6526b8b0feadfe52 + skipped: commit did not cherry-pick cleanly +5eb76fb98b3335aa5cca6a7db2e659561c79c32b: + title: 'udf: fix uninit-value use in udf_get_fileshortad' + mainline: 264db9d666ad9a35075cc9ed9ec09d021580fbb1 + skipped: (unknown reason) +ea462ee11dbc4eb779146313d3abf5e5187775e1: + title: 'jfs: Fix sanity check in dbMount' + mainline: 67373ca8404fe57eb1bb4b57f314cff77ce54932 + backport: 531aa0f03b79233bfcfe6e067b0b04a0e8494817 +137010d26dc5cd47cd62fef77cbe952d31951b7a: + title: 'net/sun3_82586: fix potential memory leak in sun3_82586_send_packet()' + mainline: 2cb3f56e827abb22c4168ad0c1bbbf401bb2f3b8 + backport: db382d47beb9d7e9c0d27f0c5d866b67148ca799 +941026023c256939943a47d1c66671526befbb26: + title: 'be2net: fix potential memory leak in be_xmit()' + mainline: e4dd8bfe0f6a23acd305f9b892c00899089bd621 + backport: 9f21e06d2a8bb717e49f8ef4a96672f939380c03 +8f83f28d93d380fa4083f6a80fd7793f650e5278: + title: 'net: usb: usbnet: fix name regression' + mainline: 8a7d12d674ac6f2147c18f36d1e15f1a48060edf + backport: 2ca8893515d6c0360b38a5ebb726322c28f2585e +d005400262ddaf1ca1666bbcd1acf42fe81d57ce: + title: 'posix-clock: posix-clock: Fix unbalanced locking in pc_clock_settime()' + mainline: 6e62807c7fbb3c758d233018caf94dfea9c65dbd + backport: d792e0c744f67188b6e873a2dd188f1f03dc4f3b +89a4a73ffd7a2e2e3da56797d9136b880f428c1c: + title: 'ALSA: hda/realtek: Update default depop procedure' + mainline: e3ea2757c312e51bbf62ebc434a6f7df1e3a201f + skipped: commit did not cherry-pick cleanly +58556dcbd5606a5daccaee73b2130bc16b48e025: + title: 'drm/amd: Guard against bad data for ATIF ACPI method' + mainline: bf58f03931fdcf7b3c45cb76ac13244477a60f44 + skipped: commit did not cherry-pick cleanly +437885ab7c980a5ef0badcb4d7a5f36a20fd4bf5: + title: 'ACPI: button: Add DMI quirk for Samsung Galaxy Book2 to fix initial lid detection issue' + mainline: 8fa73ee44daefc884c53a25158c25a4107eb5a94 + skipped: commit did not cherry-pick cleanly +033bc52f35868c2493a2d95c56ece7fc155d7cb3: + title: 'nilfs2: fix kernel bug due to missing clearing of buffer delay flag' + mainline: 6ed469df0bfbef3e4b44fca954a781919db9f7ab + backport: 9612b486b817fa6fc19b8fe9a81bd547c476e6c6 +7abd221a55a61b6b2bf0e80f850bfc0ae75c7e01: + title: 'hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event' + mainline: 4c262801ea60c518b5bebc22a09f5b78b3147da2 + skipped: fixes patch not in branch +acc599ee46881a9d377c33e7848e6bb2d97ef862: + title: 'selinux: improve error checking in sel_write_load()' + mainline: 42c773238037c90b3302bf37a57ae3b5c3f6004a + skipped: commit did not cherry-pick cleanly +974955b61fe226c0d837106738fc0fb5910d67a8: + title: 'arm64/uprobes: change the uprobe_opcode_t typedef to fix the sparse warning' + mainline: ef08c0fadd8a17ebe429b85e23952dac3263ad34 + backport: 8877c26f575b56ea80275c39aeb6e9ae85aafad1 +f31398570acf0f0804c644006f7bfa9067106b0a: + title: 'xfrm: validate new SA''s prefixlen using SA family when sel.family is unset' + mainline: 3f0ab59e6537c6a8f9e1b355b48f9c05a76e8563 + backport: 7ca707ec81d8be129613f262fbffe9e15d327167 +2b8f2afa311c722a90f00fb2960e6deb4f5100a5: + title: 'usb: dwc3: remove generic PHY calibrate() calls' + mainline: a0a465569b45e3690be155c96fb54603d6904f41 + skipped: commit did not cherry-pick cleanly +a3177057f6dc41097f9ef289bccdf31b39e64625: + title: 'usb: dwc3: Add splitdisable quirk for Hisilicon Kirin Soc' + mainline: f580170f135af14e287560d94045624d4242d712 + skipped: commit did not cherry-pick cleanly +7c47d8782292134b29aaa0ee0369c71ad2bd0cbb: + title: 'usb: dwc3: core: Stop processing of pending events if controller is halted' + mainline: 0d410e8913f5cffebcca79ffdd596009d4a13a28 + skipped: commit did not cherry-pick cleanly +339df130db47ae7e89fddce5729b0f0566405d1d: + title: 'cgroup: Fix potential overflow issue when checking max_depth' + mainline: 3cc4e13bb1617f6a13e5e6882465984148743cf4 + backport: db7bbe2185d31a31d50702582589d967d016587e +c9cf9510970e5b33e5bc21377380f1cf61685ed0: + title: 'wifi: mac80211: skip non-uploaded keys in ieee80211_iter_keys' + mainline: 52009b419355195912a628d0a9847922e90c348c + backport: 38b579881e78d85e81e8625fb057a96e45b3adc6 +66f635f6ae87c35bd1bda16927e9393cacd05ee4: + title: 'gtp: simplify error handling code in ''gtp_encap_enable()''' + mainline: b289ba5e07105548b8219695e5443d807a825eb8 + backport: ebfd3809b08074d25f038a1300971645bbe98b5b +63d8172188c759c44cae7a57eece140e0b90a2e1: + title: 'gtp: allow -1 to be specified as file description from userspace' + mainline: 7515e37bce5c428a56a9b04ea7e96b3f53f17150 + backport: 7f3a3eeed91e7c7bff96403270e2471fd29873b2 +e7f9a6f97eb067599a74f3bcb6761976b0ed303e: + title: 'net/sched: stop qdisc_tree_reduce_backlog on TC_H_ROOT' + mainline: 2e95c4384438adeaa772caa560244b1a2efef816 + backport: 69fcd1905bea29c01c7a659aa16268f2b40ebce8 +e8494ac079814a53fbc2258d2743e720907488ed: + title: 'bpf: Fix out-of-bounds write in trie_get_next_key()' + mainline: 13400ac8fb80c57c2bfb12ebd35ee121ce9b4d21 + skipped: fixes patch not in branch +2c88668d57735d4ff65ce35747c8aa6662cc5013: + title: 'net: support ip generic csum processing in skb_csum_hwoffload_help' + mainline: 62fafcd63139920eb25b3fbf154177ce3e6f3232 + backport: a829200ea0a4ce6e889bf23df1bfbee34daf9746 +bcefc3cd7f592a70fcbbbfd7ad1fbc69172ea78b: + title: 'net: skip offload for NETIF_F_IPV6_CSUM if ipv6 header contains extension' + mainline: 04c20a9356f283da623903e81e7c6d5df7e4dc3c + backport: d2216921d39819c8ba0f48dc6fd2c15e6290b6cd +a661ed364ae6ae88c2fafa9ddc27df1af2a73701: + title: 'netfilter: nft_payload: sanitize offset and length before calling skb_checksum()' + mainline: d5953d680f7e96208c29ce4139a0e38de87a57fe + backport: 51fb462970ebd4757675ab968175a3047847fa1d +546ad452064c744a79ff08f53f62b209756f1e92: + title: 'firmware: arm_sdei: Fix the input parameter of cpuhp_remove_state()' + mainline: c83212d79be2c9886d3e6039759ecd388fd5fed1 + skipped: fixes patch not in branch +34f2d9975aff5ddb9e15e4ddd58528c8fd570c4a: + title: 'net: amd: mvme147: Fix probe banner message' + mainline: 82c5b53140faf89c31ea2b3a0985a2f291694169 + backport: 3551df53194d0dfd74258bea61b7f82b3b97105e +88a0888162b375d79872fb1dece834bebea76fe3: + title: 'misc: sgi-gru: Don''t disable preemption in GRU driver' + mainline: b983b271662bd6104d429b0fd97af3333ba760bf + backport: 5a9eb453112676da334380bda6fb9e7b126d04d9 +bdca59e180d6d3890ea813e4a6a4b9ccad81ecf6: + title: 'usbip: tools: Fix detach_port() invalid port error path' + mainline: e7cd4b811c9e019f5acbce85699c622b30194c24 + skipped: fixes patch not in branch +3a5693be9a47d368d39fee08325f5bf6cdd2ebaf: + title: 'usb: phy: Fix API devm_usb_put_phy() can not release the phy' + mainline: fdce49b5da6e0fb6d077986dec3e90ef2b094b50 + backport: 6fb928dc4510f0382b79a2960b0c8fae57c76a33 +d55d92597b7143f70e2db6108dac521d231ffa29: + title: 'xhci: Fix Link TRB DMA in command ring stopped completion event' + mainline: 075919f6df5dd82ad0b1894898b315fbb3c29b84 + backport: b166e22b1f580bef5d1b09e00de9d718d7bb2eeb +fe10c8367687c27172a10ba5cc849bd82077bd7d: + title: 'Revert "driver core: Fix uevent_show() vs driver detach race"' + mainline: 9a71892cbcdb9d1459c84f5a4c722b14354158a5 + backport: 6a8dc3623eedca5d2fe8ac115d05cdf0e7def887 +b0b862aa3dbcd16b3c4715259a825f48ca540088: + title: 'wifi: mac80211: do not pass a stopped vif to the driver in .get_txpower' + mainline: 393b6bc174b0dd21bb2a36c13b36e62fc3474a23 + backport: c2faf8e8c6c985e70a6c3174e9f1b53d440a8b51 +eff818238bedb9c2484c251ec46f9f160911cdc0: + title: 'wifi: ath10k: Fix memory leak in management tx' + mainline: e15d84b3bba187aa372dff7c58ce1fd5cb48a076 + skipped: fixes patch not in branch +271d282ecc15d7012e71ca82c89a6c0e13a063dd: + title: 'wifi: iwlegacy: Clear stale interrupts before resuming device' + mainline: 07c90acb071b9954e1fecb1e4f4f13d12c544b34 + backport: c7df04a616677a7c4473babee0b81900a2728200 +cc38c596e648575ce58bfc31623a6506eda4b94a: + title: 'nilfs2: fix potential deadlock with newly created symlinks' + mainline: b3a033e3ecd3471248d474ef263aadc0059e516a + backport: 452c0cdb1398e3788d1af22b061acaebfa8a3915 +27d95867bee806cdc448d122bd99f1d8b0544035: + title: 'ocfs2: pass u64 to ocfs2_truncate_inline maybe overflow' + mainline: bc0a2f3a73fcdac651fca64df39306d1e5ebe3b0 + backport: f38c624794c3ea409b8ee122b2a9a9f7df076a25 +994b2fa13a6c9cf3feca93090a9c337d48e3d60d: + title: 'nilfs2: fix kernel bug due to missing clearing of checked flag' + mainline: 41e192ad2779cae0102879612dfe46726e4396aa + backport: 53f13ddee939d270ae9524040c1d9b45321fb656 +9fb9703cd43ee20a6de8ccdef991677b7274cec0: + title: 'mm: shmem: fix data-race in shmem_getattr()' + mainline: d949d1d14fa281ace388b1de978e8f2cd52875cf + skipped: commit did not cherry-pick cleanly +efc67cee700b89ffbdb74a0603a083ec1290ae31: + title: 'vt: prevent kernel-infoleak in con_font_get()' + mainline: f956052e00de211b5c9ebaa1958366c23f82ee9e + skipped: fixes patch not in branch diff --git a/.gitignore b/.gitignore index 923a47a76324..5b44254427be 100644 --- a/.gitignore +++ b/.gitignore @@ -104,7 +104,6 @@ GTAGS # id-utils files ID -*.orig *~ \#*# diff --git a/Documentation/IPMI.txt b/Documentation/IPMI.txt index aa77a25a0940..2d95761af54b 100644 --- a/Documentation/IPMI.txt +++ b/Documentation/IPMI.txt @@ -516,7 +516,7 @@ at module load time (for a module) with:: [dbg_probe=1] The addresses are normal I2C addresses. The adapter is the string -name of the adapter, as shown in /sys/class/i2c-adapter/i2c-/name. +name of the adapter, as shown in /sys/bus/i2c/devices/i2c-/name. It is *NOT* i2c- itself. Also, the comparison is done ignoring spaces, so if the name is "This is an I2C chip" you can say adapter_name=ThisisanI2cchip. This is because it's hard to pass in diff --git a/Makefile b/Makefile index 52f81a9add85..79b8bb0e4ac8 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 355 -EXTRAVERSION = -openela +SUBLEVEL = 356 +EXTRAVERSION = -openela-rc1 NAME = Petit Gorille # *DOCUMENTATION* diff --git a/arch/arm/mach-realview/platsmp-dt.c b/arch/arm/mach-realview/platsmp-dt.c index c242423bf8db..66d6b11eda7b 100644 --- a/arch/arm/mach-realview/platsmp-dt.c +++ b/arch/arm/mach-realview/platsmp-dt.c @@ -70,6 +70,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus) return; } map = syscon_node_to_regmap(np); + of_node_put(np); if (IS_ERR(map)) { pr_err("PLATSMP: No syscon regmap\n"); return; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi index 58bf79878c52..bec78b7ac033 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi @@ -184,6 +184,22 @@ status = "okay"; }; +&gpio3 { + /* + * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module + * eMMC and SPI flash powered-down initially (in fact it keeps the + * reset signal asserted). BIOS_DISABLE_OVERRIDE pin allows to override + * that signal so that eMMC and SPI can be used regardless of the state + * of the signal. + */ + bios-disable-override-hog { + gpios = ; + gpio-hog; + line-name = "bios_disable_override"; + output-high; + }; +}; + &gmac { assigned-clocks = <&cru SCLK_RMII_SRC>; assigned-clock-parents = <&clkin_gmac>; @@ -449,9 +465,14 @@ &pinctrl { pinctrl-names = "default"; - pinctrl-0 = <&q7_thermal_pin>; + pinctrl-0 = <&q7_thermal_pin &bios_disable_override_hog_pin>; gpios { + bios_disable_override_hog_pin: bios-disable-override-hog-pin { + rockchip,pins = + <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_down>; + }; + q7_thermal_pin: q7-thermal-pin { rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; diff --git a/arch/arm64/include/asm/cputype.h b/arch/arm64/include/asm/cputype.h index efc3536d5592..b85ee8a34758 100644 --- a/arch/arm64/include/asm/cputype.h +++ b/arch/arm64/include/asm/cputype.h @@ -98,6 +98,7 @@ #define ARM_CPU_PART_CORTEX_A78 0xD41 #define ARM_CPU_PART_CORTEX_X1 0xD44 #define ARM_CPU_PART_CORTEX_A710 0xD47 +#define ARM_CPU_PART_CORTEX_A715 0xD4D #define ARM_CPU_PART_CORTEX_X2 0xD48 #define ARM_CPU_PART_NEOVERSE_N2 0xD49 #define ARM_CPU_PART_CORTEX_A78C 0xD4B @@ -135,6 +136,7 @@ #define MIDR_CORTEX_A78 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78) #define MIDR_CORTEX_X1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1) #define MIDR_CORTEX_A710 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A710) +#define MIDR_CORTEX_A715 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A715) #define MIDR_CORTEX_X2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X2) #define MIDR_NEOVERSE_N2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N2) #define MIDR_CORTEX_A78C MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78C) diff --git a/arch/arm64/include/asm/uprobes.h b/arch/arm64/include/asm/uprobes.h index 8d004073d0e8..f57c96ac042f 100644 --- a/arch/arm64/include/asm/uprobes.h +++ b/arch/arm64/include/asm/uprobes.h @@ -13,21 +13,19 @@ #include #include -#define MAX_UINSN_BYTES AARCH64_INSN_SIZE - -#define UPROBE_SWBP_INSN BRK64_OPCODE_UPROBES +#define UPROBE_SWBP_INSN cpu_to_le32(BRK64_OPCODE_UPROBES) #define UPROBE_SWBP_INSN_SIZE AARCH64_INSN_SIZE -#define UPROBE_XOL_SLOT_BYTES MAX_UINSN_BYTES +#define UPROBE_XOL_SLOT_BYTES AARCH64_INSN_SIZE -typedef u32 uprobe_opcode_t; +typedef __le32 uprobe_opcode_t; struct arch_uprobe_task { }; struct arch_uprobe { union { - u8 insn[MAX_UINSN_BYTES]; - u8 ixol[MAX_UINSN_BYTES]; + __le32 insn; + __le32 ixol; }; struct arch_probe_insn api; bool simulate; diff --git a/arch/arm64/kernel/probes/decode-insn.c b/arch/arm64/kernel/probes/decode-insn.c index 6bf6657a5a52..3d0684b72839 100644 --- a/arch/arm64/kernel/probes/decode-insn.c +++ b/arch/arm64/kernel/probes/decode-insn.c @@ -104,10 +104,6 @@ arm_probe_decode_insn(probe_opcode_t insn, struct arch_probe_insn *api) aarch64_insn_is_blr(insn) || aarch64_insn_is_ret(insn)) { api->handler = simulate_br_blr_ret; - } else if (aarch64_insn_is_ldr_lit(insn)) { - api->handler = simulate_ldr_literal; - } else if (aarch64_insn_is_ldrsw_lit(insn)) { - api->handler = simulate_ldrsw_literal; } else { /* * Instruction cannot be stepped out-of-line and we don't @@ -145,6 +141,17 @@ arm_kprobe_decode_insn(kprobe_opcode_t *addr, struct arch_specific_insn *asi) probe_opcode_t insn = le32_to_cpu(*addr); probe_opcode_t *scan_end = NULL; unsigned long size = 0, offset = 0; + struct arch_probe_insn *api = &asi->api; + + if (aarch64_insn_is_ldr_lit(insn)) { + api->handler = simulate_ldr_literal; + decoded = INSN_GOOD_NO_SLOT; + } else if (aarch64_insn_is_ldrsw_lit(insn)) { + api->handler = simulate_ldrsw_literal; + decoded = INSN_GOOD_NO_SLOT; + } else { + decoded = arm_probe_decode_insn(insn, &asi->api); + } /* * If there's a symbol defined in front of and near enough to @@ -162,7 +169,6 @@ arm_kprobe_decode_insn(kprobe_opcode_t *addr, struct arch_specific_insn *asi) else scan_end = addr - MAX_ATOMIC_CONTEXT_SIZE; } - decoded = arm_probe_decode_insn(insn, &asi->api); if (decoded != INSN_REJECTED && scan_end) if (is_probed_address_atomic(addr - 1, scan_end)) diff --git a/arch/arm64/kernel/probes/simulate-insn.c b/arch/arm64/kernel/probes/simulate-insn.c index be05868418ee..a98699948cb2 100644 --- a/arch/arm64/kernel/probes/simulate-insn.c +++ b/arch/arm64/kernel/probes/simulate-insn.c @@ -178,17 +178,15 @@ simulate_tbz_tbnz(u32 opcode, long addr, struct pt_regs *regs) void __kprobes simulate_ldr_literal(u32 opcode, long addr, struct pt_regs *regs) { - u64 *load_addr; + unsigned long load_addr; int xn = opcode & 0x1f; - int disp; - disp = ldr_displacement(opcode); - load_addr = (u64 *) (addr + disp); + load_addr = addr + ldr_displacement(opcode); if (opcode & (1 << 30)) /* x0-x30 */ - set_x_reg(regs, xn, *load_addr); + set_x_reg(regs, xn, READ_ONCE(*(u64 *)load_addr)); else /* w0-w30 */ - set_w_reg(regs, xn, *load_addr); + set_w_reg(regs, xn, READ_ONCE(*(u32 *)load_addr)); instruction_pointer_set(regs, instruction_pointer(regs) + 4); } @@ -196,14 +194,12 @@ simulate_ldr_literal(u32 opcode, long addr, struct pt_regs *regs) void __kprobes simulate_ldrsw_literal(u32 opcode, long addr, struct pt_regs *regs) { - s32 *load_addr; + unsigned long load_addr; int xn = opcode & 0x1f; - int disp; - disp = ldr_displacement(opcode); - load_addr = (s32 *) (addr + disp); + load_addr = addr + ldr_displacement(opcode); - set_x_reg(regs, xn, *load_addr); + set_x_reg(regs, xn, READ_ONCE(*(s32 *)load_addr)); instruction_pointer_set(regs, instruction_pointer(regs) + 4); } diff --git a/arch/arm64/kernel/probes/uprobes.c b/arch/arm64/kernel/probes/uprobes.c index 6aeb11aa7e28..851689216007 100644 --- a/arch/arm64/kernel/probes/uprobes.c +++ b/arch/arm64/kernel/probes/uprobes.c @@ -45,7 +45,7 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm, else if (!IS_ALIGNED(addr, AARCH64_INSN_SIZE)) return -EINVAL; - insn = *(probe_opcode_t *)(&auprobe->insn[0]); + insn = le32_to_cpu(auprobe->insn); switch (arm_probe_decode_insn(insn, &auprobe->api)) { case INSN_REJECTED: @@ -111,7 +111,7 @@ bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs) if (!auprobe->simulate) return false; - insn = *(probe_opcode_t *)(&auprobe->insn[0]); + insn = le32_to_cpu(auprobe->insn); addr = instruction_pointer(regs); if (auprobe->api.handler) diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c index 434639f9a3a6..78be588dcb86 100644 --- a/arch/microblaze/mm/init.c +++ b/arch/microblaze/mm/init.c @@ -327,11 +327,6 @@ asmlinkage void __init mmu_init(void) { unsigned int kstart, ksize; - if (!memblock.reserved.cnt) { - pr_emerg("Error memory count\n"); - machine_restart(NULL); - } - if ((u32) memblock.memory.regions[0].size < 0x400000) { pr_emerg("Memory must be greater than 4MB\n"); machine_restart(NULL); diff --git a/arch/s390/include/asm/facility.h b/arch/s390/include/asm/facility.h index 9fee469d7130..62a861f963c7 100644 --- a/arch/s390/include/asm/facility.h +++ b/arch/s390/include/asm/facility.h @@ -53,8 +53,10 @@ static inline int test_facility(unsigned long nr) unsigned long facilities_als[] = { FACILITIES_ALS }; if (__builtin_constant_p(nr) && nr < sizeof(facilities_als) * 8) { - if (__test_facility(nr, &facilities_als)) - return 1; + if (__test_facility(nr, &facilities_als)) { + if (!__is_defined(__DECOMPRESSOR)) + return 1; + } } return __test_facility(nr, &S390_lowcore.stfle_fac_list); } diff --git a/arch/s390/kvm/diag.c b/arch/s390/kvm/diag.c index d93a2c0474bf..cfb88c086e8d 100644 --- a/arch/s390/kvm/diag.c +++ b/arch/s390/kvm/diag.c @@ -81,7 +81,7 @@ static int __diag_page_ref_service(struct kvm_vcpu *vcpu) vcpu->stat.diagnose_258++; if (vcpu->run->s.regs.gprs[rx] & 7) return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION); - rc = read_guest(vcpu, vcpu->run->s.regs.gprs[rx], rx, &parm, sizeof(parm)); + rc = read_guest_real(vcpu, vcpu->run->s.regs.gprs[rx], &parm, sizeof(parm)); if (rc) return kvm_s390_inject_prog_cond(vcpu, rc); if (parm.parm_version != 2 || parm.parm_len < 5 || parm.code != 0x258) diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c index c0e96bdac80a..8abdbfee4e4c 100644 --- a/arch/s390/mm/cmm.c +++ b/arch/s390/mm/cmm.c @@ -97,11 +97,12 @@ static long cmm_alloc_pages(long nr, long *counter, (*counter)++; spin_unlock(&cmm_lock); nr--; + cond_resched(); } return nr; } -static long cmm_free_pages(long nr, long *counter, struct cmm_page_array **list) +static long __cmm_free_pages(long nr, long *counter, struct cmm_page_array **list) { struct cmm_page_array *pa; unsigned long addr; @@ -125,6 +126,21 @@ static long cmm_free_pages(long nr, long *counter, struct cmm_page_array **list) return nr; } +static long cmm_free_pages(long nr, long *counter, struct cmm_page_array **list) +{ + long inc = 0; + + while (nr) { + inc = min(256L, nr); + nr -= inc; + inc = __cmm_free_pages(inc, counter, list); + if (inc) + break; + cond_resched(); + } + return nr + inc; +} + static int cmm_oom_notify(struct notifier_block *self, unsigned long dummy, void *parm) { diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index 8c299a01f9c4..5262ffd986d2 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -216,7 +216,7 @@ #define X86_FEATURE_SPEC_STORE_BYPASS_DISABLE ( 7*32+23) /* "" Disable Speculative Store Bypass. */ #define X86_FEATURE_LS_CFG_SSBD ( 7*32+24) /* "" AMD SSBD implementation via LS_CFG MSR */ #define X86_FEATURE_IBRS ( 7*32+25) /* Indirect Branch Restricted Speculation */ -#define X86_FEATURE_IBPB ( 7*32+26) /* Indirect Branch Prediction Barrier */ +#define X86_FEATURE_IBPB ( 7*32+26) /* "ibpb" Indirect Branch Prediction Barrier without a guaranteed RSB flush */ #define X86_FEATURE_STIBP ( 7*32+27) /* Single Thread Indirect Branch Predictors */ #define X86_FEATURE_ZEN ( 7*32+28) /* "" CPU is AMD family 0x17 (Zen) */ #define X86_FEATURE_L1TF_PTEINV ( 7*32+29) /* "" L1TF workaround PTE inversion */ @@ -306,6 +306,7 @@ #define X86_FEATURE_VIRT_SSBD (13*32+25) /* Virtualized Speculative Store Bypass Disable */ #define X86_FEATURE_AMD_SSB_NO (13*32+26) /* "" Speculative Store Bypass is fixed in hardware. */ #define X86_FEATURE_BTC_NO (13*32+29) /* "" Not vulnerable to Branch Type Confusion */ +#define X86_FEATURE_AMD_IBPB_RET (13*32+30) /* "" IBPB clears return address predictor */ /* Thermal and Power Management Leaf, CPUID level 0x00000006 (EAX), word 14 */ #define X86_FEATURE_DTHERM (14*32+ 0) /* Digital Thermal Sensor */ diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index c3a4eeabe753..3b122f387b78 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -492,7 +492,19 @@ static int lapic_timer_shutdown(struct clock_event_device *evt) v = apic_read(APIC_LVTT); v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR); apic_write(APIC_LVTT, v); - apic_write(APIC_TMICT, 0); + + /* + * Setting APIC_LVT_MASKED (above) should be enough to tell + * the hardware that this timer will never fire. But AMD + * erratum 411 and some Intel CPU behavior circa 2024 say + * otherwise. Time for belt and suspenders programming: mask + * the timer _and_ zero the counter registers: + */ + if (v & APIC_LVT_TIMER_TSCDEADLINE) + wrmsrl(MSR_IA32_TSC_DEADLINE, 0); + else + apic_write(APIC_TMICT, 0); + return 0; } diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index a6b323a3a630..f8ba4ff10234 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -206,6 +206,7 @@ static void __init ms_hyperv_init_platform(void) ms_hyperv.misc_features & HV_FEATURE_FREQUENCY_MSRS_AVAILABLE) { x86_platform.calibrate_tsc = hv_get_tsc_khz; x86_platform.calibrate_cpu = hv_get_tsc_khz; + setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ); } #ifdef CONFIG_X86_LOCAL_APIC diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index c114ca767b3b..14e69b46d902 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c @@ -862,7 +862,7 @@ char * __init xen_memory_setup(void) * to relocating (and even reusing) pages with kernel text or data. */ if (xen_is_e820_reserved(__pa_symbol(_text), - __pa_symbol(__bss_stop) - __pa_symbol(_text))) { + __pa_symbol(_end) - __pa_symbol(_text))) { xen_raw_console_write("Xen hypervisor allocated kernel memory conflicts with E820 map\n"); BUG(); } diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index cc7fbd3f81f7..c3e67e4c56f4 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -4405,7 +4405,7 @@ bfq_split_bfqq(struct bfq_io_cq *bic, struct bfq_queue *bfqq) { bfq_log_bfqq(bfqq->bfqd, bfqq, "splitting queue"); - if (bfqq_process_refs(bfqq) == 1) { + if (bfqq_process_refs(bfqq) == 1 && !bfqq->new_bfqq) { bfqq->pid = current->pid; bfq_clear_bfqq_coop(bfqq); bfq_clear_bfqq_split_coop(bfqq); @@ -4524,7 +4524,8 @@ static void bfq_prepare_request(struct request *rq, struct bio *bio) * addition, if the queue has also just been split, we have to * resume its state. */ - if (likely(bfqq != &bfqd->oom_bfqq) && bfqq_process_refs(bfqq) == 1) { + if (likely(bfqq != &bfqd->oom_bfqq) && !bfqq->new_bfqq && + bfqq_process_refs(bfqq) == 1) { bfqq->bic = bic; if (split) { /* diff --git a/crypto/aead.c b/crypto/aead.c index f794b30a9407..4d4d62a4240e 100644 --- a/crypto/aead.c +++ b/crypto/aead.c @@ -45,8 +45,7 @@ static int setkey_unaligned(struct crypto_aead *tfm, const u8 *key, alignbuffer = (u8 *)ALIGN((unsigned long)buffer, alignmask + 1); memcpy(alignbuffer, key, keylen); ret = crypto_aead_alg(tfm)->setkey(tfm, alignbuffer, keylen); - memset(alignbuffer, 0, keylen); - kfree(buffer); + kzfree(buffer); return ret; } diff --git a/crypto/cipher.c b/crypto/cipher.c index 94fa3551476b..ffb515390389 100644 --- a/crypto/cipher.c +++ b/crypto/cipher.c @@ -37,8 +37,7 @@ static int setkey_unaligned(struct crypto_tfm *tfm, const u8 *key, alignbuffer = (u8 *)ALIGN((unsigned long)buffer, alignmask + 1); memcpy(alignbuffer, key, keylen); ret = cia->cia_setkey(tfm, alignbuffer, keylen); - memset(alignbuffer, 0, keylen); - kfree(buffer); + kzfree(buffer); return ret; } diff --git a/drivers/acpi/acpica/dbconvert.c b/drivers/acpi/acpica/dbconvert.c index 857dbc43a9b1..a8b5ad006232 100644 --- a/drivers/acpi/acpica/dbconvert.c +++ b/drivers/acpi/acpica/dbconvert.c @@ -206,6 +206,8 @@ acpi_status acpi_db_convert_to_package(char *string, union acpi_object *object) elements = ACPI_ALLOCATE_ZEROED(DB_DEFAULT_PKG_ELEMENTS * sizeof(union acpi_object)); + if (!elements) + return (AE_NO_MEMORY); this = string; for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++) { diff --git a/drivers/acpi/acpica/exprep.c b/drivers/acpi/acpica/exprep.c index e23f3d54bb31..40286eb176fd 100644 --- a/drivers/acpi/acpica/exprep.c +++ b/drivers/acpi/acpica/exprep.c @@ -471,6 +471,9 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info) if (info->connection_node) { second_desc = info->connection_node->object; + if (second_desc == NULL) { + break; + } if (!(second_desc->common.flags & AOPOBJ_DATA_VALID)) { status = acpi_ds_get_buffer_arguments(second_desc); diff --git a/drivers/acpi/acpica/psargs.c b/drivers/acpi/acpica/psargs.c index 11ce4e5d10e2..1e1f168eb9a2 100644 --- a/drivers/acpi/acpica/psargs.c +++ b/drivers/acpi/acpica/psargs.c @@ -59,6 +59,8 @@ acpi_ps_get_next_package_length(struct acpi_parse_state *parser_state); static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state *parser_state); +static void acpi_ps_free_field_list(union acpi_parse_object *start); + /******************************************************************************* * * FUNCTION: acpi_ps_get_next_package_length @@ -717,6 +719,39 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state return_PTR(field); } +/******************************************************************************* + * + * FUNCTION: acpi_ps_free_field_list + * + * PARAMETERS: start - First Op in field list + * + * RETURN: None. + * + * DESCRIPTION: Free all Op objects inside a field list. + * + ******************************************************************************/ + +static void acpi_ps_free_field_list(union acpi_parse_object *start) +{ + union acpi_parse_object *cur = start; + union acpi_parse_object *next; + union acpi_parse_object *arg; + + while (cur) { + next = cur->common.next; + + /* AML_INT_CONNECTION_OP can have a single argument */ + + arg = acpi_ps_get_arg(cur, 0); + if (arg) { + acpi_ps_free_op(arg); + } + + acpi_ps_free_op(cur); + cur = next; + } +} + /******************************************************************************* * * FUNCTION: acpi_ps_get_next_arg @@ -785,6 +820,10 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state, while (parser_state->aml < parser_state->pkg_end) { field = acpi_ps_get_next_field(parser_state); if (!field) { + if (arg) { + acpi_ps_free_field_list(arg); + } + return_ACPI_STATUS(AE_NO_MEMORY); } @@ -854,6 +893,10 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state, acpi_ps_get_next_namepath(walk_state, parser_state, arg, ACPI_NOT_METHOD_CALL); + if (ACPI_FAILURE(status)) { + acpi_ps_free_op(arg); + return_ACPI_STATUS(status); + } } else { /* Single complex argument, nothing returned */ @@ -888,6 +931,10 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state, acpi_ps_get_next_namepath(walk_state, parser_state, arg, ACPI_POSSIBLE_METHOD_CALL); + if (ACPI_FAILURE(status)) { + acpi_ps_free_op(arg); + return_ACPI_STATUS(status); + } if (arg->common.aml_opcode == AML_INT_METHODCALL_OP) { diff --git a/drivers/acpi/device_sysfs.c b/drivers/acpi/device_sysfs.c index 93e947d5cc43..5e9593d976ee 100644 --- a/drivers/acpi/device_sysfs.c +++ b/drivers/acpi/device_sysfs.c @@ -539,8 +539,9 @@ int acpi_device_setup_files(struct acpi_device *dev) * If device has _STR, 'description' file is created */ if (acpi_has_method(dev->handle, "_STR")) { - status = acpi_evaluate_object(dev->handle, "_STR", - NULL, &buffer); + status = acpi_evaluate_object_typed(dev->handle, "_STR", + NULL, &buffer, + ACPI_TYPE_BUFFER); if (ACPI_FAILURE(status)) buffer.pointer = NULL; dev->pnp.str_obj = buffer.pointer; diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index dd87a9bf5ce4..925156b6dd13 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c @@ -807,6 +807,9 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, unsigned long tmp; int ret = 0; + if (t->rdata) + memset(t->rdata, 0, t->rlen); + /* start transaction */ spin_lock_irqsave(&ec->lock, tmp); /* Enable GPE for command processing (IBF=0/OBF=1) */ @@ -843,8 +846,6 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t) if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata)) return -EINVAL; - if (t->rdata) - memset(t->rdata, 0, t->rlen); mutex_lock(&ec->mutex); if (ec->global_lock) { @@ -871,7 +872,7 @@ static int acpi_ec_burst_enable(struct acpi_ec *ec) .wdata = NULL, .rdata = &d, .wlen = 0, .rlen = 1}; - return acpi_ec_transaction(ec, &t); + return acpi_ec_transaction_unlocked(ec, &t); } static int acpi_ec_burst_disable(struct acpi_ec *ec) @@ -881,7 +882,7 @@ static int acpi_ec_burst_disable(struct acpi_ec *ec) .wlen = 0, .rlen = 0}; return (acpi_ec_read_status(ec) & ACPI_EC_FLAG_BURST) ? - acpi_ec_transaction(ec, &t) : 0; + acpi_ec_transaction_unlocked(ec, &t) : 0; } static int acpi_ec_read(struct acpi_ec *ec, u8 address, u8 *data) @@ -897,6 +898,19 @@ static int acpi_ec_read(struct acpi_ec *ec, u8 address, u8 *data) return result; } +static int acpi_ec_read_unlocked(struct acpi_ec *ec, u8 address, u8 *data) +{ + int result; + u8 d; + struct transaction t = {.command = ACPI_EC_COMMAND_READ, + .wdata = &address, .rdata = &d, + .wlen = 1, .rlen = 1}; + + result = acpi_ec_transaction_unlocked(ec, &t); + *data = d; + return result; +} + static int acpi_ec_write(struct acpi_ec *ec, u8 address, u8 data) { u8 wdata[2] = { address, data }; @@ -907,6 +921,16 @@ static int acpi_ec_write(struct acpi_ec *ec, u8 address, u8 data) return acpi_ec_transaction(ec, &t); } +static int acpi_ec_write_unlocked(struct acpi_ec *ec, u8 address, u8 data) +{ + u8 wdata[2] = { address, data }; + struct transaction t = {.command = ACPI_EC_COMMAND_WRITE, + .wdata = wdata, .rdata = NULL, + .wlen = 2, .rlen = 0}; + + return acpi_ec_transaction_unlocked(ec, &t); +} + int ec_read(u8 addr, u8 *val) { int err; @@ -1302,6 +1326,7 @@ acpi_ec_space_handler(u32 function, acpi_physical_address address, struct acpi_ec *ec = handler_context; int result = 0, i, bytes = bits / 8; u8 *value = (u8 *)value64; + u32 glk; if ((address > 0xFF) || !value || !handler_context) return AE_BAD_PARAMETER; @@ -1309,13 +1334,25 @@ acpi_ec_space_handler(u32 function, acpi_physical_address address, if (function != ACPI_READ && function != ACPI_WRITE) return AE_BAD_PARAMETER; + mutex_lock(&ec->mutex); + + if (ec->global_lock) { + acpi_status status; + + status = acpi_acquire_global_lock(ACPI_EC_UDELAY_GLK, &glk); + if (ACPI_FAILURE(status)) { + result = -ENODEV; + goto unlock; + } + } + if (ec->busy_polling || bits > 8) acpi_ec_burst_enable(ec); for (i = 0; i < bytes; ++i, ++address, ++value) { result = (function == ACPI_READ) ? - acpi_ec_read(ec, address, value) : - acpi_ec_write(ec, address, *value); + acpi_ec_read_unlocked(ec, address, value) : + acpi_ec_write_unlocked(ec, address, *value); if (result < 0) break; } @@ -1323,6 +1360,12 @@ acpi_ec_space_handler(u32 function, acpi_physical_address address, if (ec->busy_polling || bits > 8) acpi_ec_burst_disable(ec); + if (ec->global_lock) + acpi_release_global_lock(glk); + +unlock: + mutex_unlock(&ec->mutex); + switch (result) { case -EINVAL: return AE_BAD_PARAMETER; diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c index 82adaf02887f..8613a3cf2c8a 100644 --- a/drivers/ata/sata_sil.c +++ b/drivers/ata/sata_sil.c @@ -144,7 +144,7 @@ static const struct pci_device_id sil_pci_tbl[] = { static const struct sil_drivelist { const char *product; unsigned int quirk; -} sil_blacklist [] = { +} sil_quirks[] = { { "ST320012AS", SIL_QUIRK_MOD15WRITE }, { "ST330013AS", SIL_QUIRK_MOD15WRITE }, { "ST340017AS", SIL_QUIRK_MOD15WRITE }, @@ -617,8 +617,8 @@ static void sil_thaw(struct ata_port *ap) * list, and apply the fixups to only the specific * devices/hosts/firmwares that need it. * - * 20040111 - Seagate drives affected by the Mod15Write bug are blacklisted - * The Maxtor quirk is in the blacklist, but I'm keeping the original + * 20040111 - Seagate drives affected by the Mod15Write bug are quirked + * The Maxtor quirk is in sil_quirks, but I'm keeping the original * pessimistic fix for the following reasons... * - There seems to be less info on it, only one device gleaned off the * Windows driver, maybe only one is affected. More info would be greatly @@ -637,9 +637,9 @@ static void sil_dev_config(struct ata_device *dev) ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); - for (n = 0; sil_blacklist[n].product; n++) - if (!strcmp(sil_blacklist[n].product, model_num)) { - quirks = sil_blacklist[n].quirk; + for (n = 0; sil_quirks[n].product; n++) + if (!strcmp(sil_quirks[n].product, model_num)) { + quirks = sil_quirks[n].quirk; break; } diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 3464c49dad0d..0945863851cc 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -105,7 +105,8 @@ static ssize_t bus_attr_show(struct kobject *kobj, struct attribute *attr, { struct bus_attribute *bus_attr = to_bus_attr(attr); struct subsys_private *subsys_priv = to_subsys_private(kobj); - ssize_t ret = 0; + /* return -EIO for reading a bus attribute without show() */ + ssize_t ret = -EIO; if (bus_attr->show) ret = bus_attr->show(subsys_priv->bus, buf); @@ -117,7 +118,8 @@ static ssize_t bus_attr_store(struct kobject *kobj, struct attribute *attr, { struct bus_attribute *bus_attr = to_bus_attr(attr); struct subsys_private *subsys_priv = to_subsys_private(kobj); - ssize_t ret = 0; + /* return -EIO for writing a bus attribute without store() */ + ssize_t ret = -EIO; if (bus_attr->store) ret = bus_attr->store(subsys_priv->bus, buf, count); diff --git a/drivers/base/core.c b/drivers/base/core.c index d0ab742c3507..110da991653a 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include @@ -906,7 +905,6 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj, struct kobj_uevent_env *env) { struct device *dev = kobj_to_dev(kobj); - struct device_driver *driver; int retval = 0; /* add device node properties if present */ @@ -935,12 +933,8 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj, if (dev->type && dev->type->name) add_uevent_var(env, "DEVTYPE=%s", dev->type->name); - /* Synchronize with module_remove_driver() */ - rcu_read_lock(); - driver = READ_ONCE(dev->driver); - if (driver) - add_uevent_var(env, "DRIVER=%s", driver->name); - rcu_read_unlock(); + if (dev->driver) + add_uevent_var(env, "DRIVER=%s", dev->driver->name); /* Add common DT information about the device */ of_device_uevent(dev, env); @@ -1010,8 +1004,11 @@ static ssize_t uevent_show(struct device *dev, struct device_attribute *attr, if (!env) return -ENOMEM; + /* Synchronize with really_probe() */ + device_lock(dev); /* let the kset specific function add its keys */ retval = kset->uevent_ops->uevent(kset, &dev->kobj, env); + device_unlock(dev); if (retval) goto out; diff --git a/drivers/base/module.c b/drivers/base/module.c index 48ad0e7c1fa8..2a215780eda2 100644 --- a/drivers/base/module.c +++ b/drivers/base/module.c @@ -9,7 +9,6 @@ #include #include #include -#include #include "base.h" static char *make_driver_name(struct device_driver *drv) @@ -80,9 +79,6 @@ void module_remove_driver(struct device_driver *drv) if (!drv) return; - /* Synchronize with dev_uevent() */ - synchronize_rcu(); - sysfs_remove_link(&drv->p->kobj, "module"); if (drv->owner) diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index 872e70f5b4d6..9ed23e9fc143 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c @@ -3537,10 +3537,12 @@ void drbd_uuid_new_current(struct drbd_device *device) __must_hold(local) void drbd_uuid_set_bm(struct drbd_device *device, u64 val) __must_hold(local) { unsigned long flags; - if (device->ldev->md.uuid[UI_BITMAP] == 0 && val == 0) - return; - spin_lock_irqsave(&device->ldev->md.uuid_lock, flags); + if (device->ldev->md.uuid[UI_BITMAP] == 0 && val == 0) { + spin_unlock_irqrestore(&device->ldev->md.uuid_lock, flags); + return; + } + if (val == 0) { drbd_uuid_move_history(device); device->ldev->md.uuid[UI_HISTORY_START] = device->ldev->md.uuid[UI_BITMAP]; diff --git a/drivers/block/drbd/drbd_state.c b/drivers/block/drbd/drbd_state.c index 1474250f9440..9d8f952514db 100644 --- a/drivers/block/drbd/drbd_state.c +++ b/drivers/block/drbd/drbd_state.c @@ -888,7 +888,7 @@ is_valid_state(struct drbd_device *device, union drbd_state ns) ns.disk == D_OUTDATED) rv = SS_CONNECTED_OUTDATES; - else if ((ns.conn == C_VERIFY_S || ns.conn == C_VERIFY_T) && + else if (nc && (ns.conn == C_VERIFY_S || ns.conn == C_VERIFY_T) && (nc->verify_alg[0] == 0)) rv = SS_NO_VERIFY_ALG; diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 27d26ef70dcc..93c44814e3f1 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -729,7 +729,15 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags) if (!urb) return -ENOMEM; - size = le16_to_cpu(data->intr_ep->wMaxPacketSize); + if (le16_to_cpu(data->udev->descriptor.idVendor) == 0x0a12 && + le16_to_cpu(data->udev->descriptor.idProduct) == 0x0001) + /* Fake CSR devices don't seem to support sort-transter */ + size = le16_to_cpu(data->intr_ep->wMaxPacketSize); + else + /* Use maximum HCI Event size so the USB stack handles + * ZPL/short-transfer automatically. + */ + size = HCI_MAX_EVENT_SIZE; buf = kmalloc(size, mem_flags); if (!buf) { diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index fa103e7a43b7..621bb4b2511e 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c @@ -2091,25 +2091,27 @@ static int virtcons_probe(struct virtio_device *vdev) multiport = true; } - err = init_vqs(portdev); - if (err < 0) { - dev_err(&vdev->dev, "Error %d initializing vqs\n", err); - goto free_chrdev; - } - spin_lock_init(&portdev->ports_lock); INIT_LIST_HEAD(&portdev->ports); INIT_LIST_HEAD(&portdev->list); - virtio_device_ready(portdev->vdev); - INIT_WORK(&portdev->config_work, &config_work_handler); INIT_WORK(&portdev->control_work, &control_work_handler); if (multiport) { spin_lock_init(&portdev->c_ivq_lock); spin_lock_init(&portdev->c_ovq_lock); + } + err = init_vqs(portdev); + if (err < 0) { + dev_err(&vdev->dev, "Error %d initializing vqs\n", err); + goto free_chrdev; + } + + virtio_device_ready(portdev->vdev); + + if (multiport) { err = fill_queue(portdev->c_ivq, &portdev->c_ivq_lock); if (err < 0) { dev_err(&vdev->dev, diff --git a/drivers/clk/bcm/clk-bcm53573-ilp.c b/drivers/clk/bcm/clk-bcm53573-ilp.c index 36eb3716ffb0..3bc6837f844d 100644 --- a/drivers/clk/bcm/clk-bcm53573-ilp.c +++ b/drivers/clk/bcm/clk-bcm53573-ilp.c @@ -115,7 +115,7 @@ static void bcm53573_ilp_init(struct device_node *np) goto err_free_ilp; } - ilp->regmap = syscon_node_to_regmap(of_get_parent(np)); + ilp->regmap = syscon_node_to_regmap(np->parent); if (IS_ERR(ilp->regmap)) { err = PTR_ERR(ilp->regmap); goto err_free_ilp; diff --git a/drivers/clk/rockchip/clk-rk3228.c b/drivers/clk/rockchip/clk-rk3228.c index 8d11d76e1db7..811f0d43ee90 100644 --- a/drivers/clk/rockchip/clk-rk3228.c +++ b/drivers/clk/rockchip/clk-rk3228.c @@ -415,7 +415,7 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = { RK2928_CLKSEL_CON(29), 0, 3, DFLAGS), DIV(0, "sclk_vop_pre", "sclk_vop_src", 0, RK2928_CLKSEL_CON(27), 8, 8, DFLAGS), - MUX(DCLK_VOP, "dclk_vop", mux_dclk_vop_p, 0, + MUX(DCLK_VOP, "dclk_vop", mux_dclk_vop_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, RK2928_CLKSEL_CON(27), 1, 1, MFLAGS), FACTOR(0, "xin12m", "xin24m", 0, 1, 2), diff --git a/drivers/clk/rockchip/clk.c b/drivers/clk/rockchip/clk.c index 35dbd63c2f49..b329b08ef301 100644 --- a/drivers/clk/rockchip/clk.c +++ b/drivers/clk/rockchip/clk.c @@ -436,12 +436,13 @@ void __init rockchip_clk_register_branches( struct rockchip_clk_branch *list, unsigned int nr_clk) { - struct clk *clk = NULL; + struct clk *clk; unsigned int idx; unsigned long flags; for (idx = 0; idx < nr_clk; idx++, list++) { flags = list->flags; + clk = NULL; /* catch simple muxes */ switch (list->branch_type) { diff --git a/drivers/clk/ti/clk-dra7-atl.c b/drivers/clk/ti/clk-dra7-atl.c index a4b6f3ac2d34..afd71c894150 100644 --- a/drivers/clk/ti/clk-dra7-atl.c +++ b/drivers/clk/ti/clk-dra7-atl.c @@ -257,6 +257,7 @@ static int of_dra7_atl_clk_probe(struct platform_device *pdev) } clk = of_clk_get_from_provider(&clkspec); + of_node_put(clkspec.np); if (IS_ERR(clk)) { pr_err("%s: failed to get atl clock %d from provider\n", __func__, i); diff --git a/drivers/clocksource/qcom-timer.c b/drivers/clocksource/qcom-timer.c index 89816f89ff3f..83385bc431ac 100644 --- a/drivers/clocksource/qcom-timer.c +++ b/drivers/clocksource/qcom-timer.c @@ -242,6 +242,7 @@ static int __init msm_dt_timer_init(struct device_node *np) } if (of_property_read_u32(np, "clock-frequency", &freq)) { + iounmap(cpu0_base); pr_err("Unknown frequency\n"); return -EINVAL; } @@ -252,7 +253,11 @@ static int __init msm_dt_timer_init(struct device_node *np) freq /= 4; writel_relaxed(DGT_CLK_CTL_DIV_4, source_base + DGT_CLK_CTL); - return msm_timer_init(freq, 32, irq, !!percpu_offset); + ret = msm_timer_init(freq, 32, irq, !!percpu_offset); + if (ret) + iounmap(cpu0_base); + + return ret; } TIMER_OF_DECLARE(kpss_timer, "qcom,kpss-timer", msm_dt_timer_init); TIMER_OF_DECLARE(scss_timer, "qcom,scss-timer", msm_dt_timer_init); diff --git a/drivers/gpio/gpio-aspeed.c b/drivers/gpio/gpio-aspeed.c index 035b2aee9e1f..5c8ff98a8268 100644 --- a/drivers/gpio/gpio-aspeed.c +++ b/drivers/gpio/gpio-aspeed.c @@ -230,6 +230,8 @@ static void __aspeed_gpio_set(struct gpio_chip *gc, unsigned int offset, reg &= ~GPIO_BIT(offset); iowrite32(reg, addr); + /* Flush write */ + ioread32(addr); } static void aspeed_gpio_set(struct gpio_chip *gc, unsigned int offset, diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c index 958c06ab9ade..4c821e0546fb 100644 --- a/drivers/gpio/gpio-davinci.c +++ b/drivers/gpio/gpio-davinci.c @@ -263,7 +263,7 @@ err: * serve as EDMA event triggers. */ -static void gpio_irq_disable(struct irq_data *d) +static void gpio_irq_mask(struct irq_data *d) { struct davinci_gpio_regs __iomem *g = irq2regs(d); u32 mask = (u32) irq_data_get_irq_handler_data(d); @@ -272,7 +272,7 @@ static void gpio_irq_disable(struct irq_data *d) writel_relaxed(mask, &g->clr_rising); } -static void gpio_irq_enable(struct irq_data *d) +static void gpio_irq_unmask(struct irq_data *d) { struct davinci_gpio_regs __iomem *g = irq2regs(d); u32 mask = (u32) irq_data_get_irq_handler_data(d); @@ -298,8 +298,8 @@ static int gpio_irq_type(struct irq_data *d, unsigned trigger) static struct irq_chip gpio_irqchip = { .name = "GPIO", - .irq_enable = gpio_irq_enable, - .irq_disable = gpio_irq_disable, + .irq_unmask = gpio_irq_unmask, + .irq_mask = gpio_irq_mask, .irq_set_type = gpio_irq_type, .flags = IRQCHIP_SET_TYPE_MASKED | IRQCHIP_SKIP_SET_WAKE, }; diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index d5b42cc86d71..caad766f1efe 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -133,7 +134,7 @@ struct gpio_desc *gpiochip_get_desc(struct gpio_chip *chip, if (hwnum >= gdev->ngpio) return ERR_PTR(-EINVAL); - return &gdev->descs[hwnum]; + return &gdev->descs[array_index_nospec(hwnum, gdev->ngpio)]; } /** diff --git a/drivers/gpu/drm/amd/include/atombios.h b/drivers/gpu/drm/amd/include/atombios.h index 181a2c3c6362..bd83aa73815f 100644 --- a/drivers/gpu/drm/amd/include/atombios.h +++ b/drivers/gpu/drm/amd/include/atombios.h @@ -4099,7 +4099,7 @@ typedef struct _ATOM_LCD_MODE_CONTROL_CAP typedef struct _ATOM_FAKE_EDID_PATCH_RECORD { UCHAR ucRecordType; - UCHAR ucFakeEDIDLength; // = 128 means EDID lenght is 128 bytes, otherwise the EDID length = ucFakeEDIDLength*128 + UCHAR ucFakeEDIDLength; // = 128 means EDID length is 128 bytes, otherwise the EDID length = ucFakeEDIDLength*128 UCHAR ucFakeEDIDString[1]; // This actually has ucFakeEdidLength elements. } ATOM_FAKE_EDID_PATCH_RECORD; diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c index ae4983d9d0a5..b7425aecd003 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c @@ -363,7 +363,7 @@ void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p) drm_printf(p, "%s:%d\t%d\t%s\n", pipe2name(pipe), j, inuse, - plane ? plane->name : NULL); + plane ? plane->name : "(null)"); total += inuse; } diff --git a/drivers/gpu/drm/radeon/evergreen_cs.c b/drivers/gpu/drm/radeon/evergreen_cs.c index 2f0a5bd50174..44a5c9059323 100644 --- a/drivers/gpu/drm/radeon/evergreen_cs.c +++ b/drivers/gpu/drm/radeon/evergreen_cs.c @@ -396,7 +396,7 @@ static int evergreen_cs_track_validate_cb(struct radeon_cs_parser *p, unsigned i struct evergreen_cs_track *track = p->track; struct eg_surface surf; unsigned pitch, slice, mslice; - unsigned long offset; + u64 offset; int r; mslice = G_028C6C_SLICE_MAX(track->cb_color_view[id]) + 1; @@ -434,14 +434,14 @@ static int evergreen_cs_track_validate_cb(struct radeon_cs_parser *p, unsigned i return r; } - offset = track->cb_color_bo_offset[id] << 8; + offset = (u64)track->cb_color_bo_offset[id] << 8; if (offset & (surf.base_align - 1)) { - dev_warn(p->dev, "%s:%d cb[%d] bo base %ld not aligned with %ld\n", + dev_warn(p->dev, "%s:%d cb[%d] bo base %llu not aligned with %ld\n", __func__, __LINE__, id, offset, surf.base_align); return -EINVAL; } - offset += surf.layer_size * mslice; + offset += (u64)surf.layer_size * mslice; if (offset > radeon_bo_size(track->cb_color_bo[id])) { /* old ddx are broken they allocate bo with w*h*bpp but * program slice with ALIGN(h, 8), catch this and patch @@ -449,14 +449,14 @@ static int evergreen_cs_track_validate_cb(struct radeon_cs_parser *p, unsigned i */ if (!surf.mode) { uint32_t *ib = p->ib.ptr; - unsigned long tmp, nby, bsize, size, min = 0; + u64 tmp, nby, bsize, size, min = 0; /* find the height the ddx wants */ if (surf.nby > 8) { min = surf.nby - 8; } bsize = radeon_bo_size(track->cb_color_bo[id]); - tmp = track->cb_color_bo_offset[id] << 8; + tmp = (u64)track->cb_color_bo_offset[id] << 8; for (nby = surf.nby; nby > min; nby--) { size = nby * surf.nbx * surf.bpe * surf.nsamples; if ((tmp + size * mslice) <= bsize) { @@ -468,7 +468,7 @@ static int evergreen_cs_track_validate_cb(struct radeon_cs_parser *p, unsigned i slice = ((nby * surf.nbx) / 64) - 1; if (!evergreen_surface_check(p, &surf, "cb")) { /* check if this one works */ - tmp += surf.layer_size * mslice; + tmp += (u64)surf.layer_size * mslice; if (tmp <= bsize) { ib[track->cb_color_slice_idx[id]] = slice; goto old_ddx_ok; @@ -477,9 +477,9 @@ static int evergreen_cs_track_validate_cb(struct radeon_cs_parser *p, unsigned i } } dev_warn(p->dev, "%s:%d cb[%d] bo too small (layer size %d, " - "offset %d, max layer %d, bo size %ld, slice %d)\n", + "offset %llu, max layer %d, bo size %ld, slice %d)\n", __func__, __LINE__, id, surf.layer_size, - track->cb_color_bo_offset[id] << 8, mslice, + (u64)track->cb_color_bo_offset[id] << 8, mslice, radeon_bo_size(track->cb_color_bo[id]), slice); dev_warn(p->dev, "%s:%d problematic surf: (%d %d) (%d %d %d %d %d %d %d)\n", __func__, __LINE__, surf.nbx, surf.nby, @@ -563,7 +563,7 @@ static int evergreen_cs_track_validate_stencil(struct radeon_cs_parser *p) struct evergreen_cs_track *track = p->track; struct eg_surface surf; unsigned pitch, slice, mslice; - unsigned long offset; + u64 offset; int r; mslice = G_028008_SLICE_MAX(track->db_depth_view) + 1; @@ -609,18 +609,18 @@ static int evergreen_cs_track_validate_stencil(struct radeon_cs_parser *p) return r; } - offset = track->db_s_read_offset << 8; + offset = (u64)track->db_s_read_offset << 8; if (offset & (surf.base_align - 1)) { - dev_warn(p->dev, "%s:%d stencil read bo base %ld not aligned with %ld\n", + dev_warn(p->dev, "%s:%d stencil read bo base %llu not aligned with %ld\n", __func__, __LINE__, offset, surf.base_align); return -EINVAL; } - offset += surf.layer_size * mslice; + offset += (u64)surf.layer_size * mslice; if (offset > radeon_bo_size(track->db_s_read_bo)) { dev_warn(p->dev, "%s:%d stencil read bo too small (layer size %d, " - "offset %ld, max layer %d, bo size %ld)\n", + "offset %llu, max layer %d, bo size %ld)\n", __func__, __LINE__, surf.layer_size, - (unsigned long)track->db_s_read_offset << 8, mslice, + (u64)track->db_s_read_offset << 8, mslice, radeon_bo_size(track->db_s_read_bo)); dev_warn(p->dev, "%s:%d stencil invalid (0x%08x 0x%08x 0x%08x 0x%08x)\n", __func__, __LINE__, track->db_depth_size, @@ -628,18 +628,18 @@ static int evergreen_cs_track_validate_stencil(struct radeon_cs_parser *p) return -EINVAL; } - offset = track->db_s_write_offset << 8; + offset = (u64)track->db_s_write_offset << 8; if (offset & (surf.base_align - 1)) { - dev_warn(p->dev, "%s:%d stencil write bo base %ld not aligned with %ld\n", + dev_warn(p->dev, "%s:%d stencil write bo base %llu not aligned with %ld\n", __func__, __LINE__, offset, surf.base_align); return -EINVAL; } - offset += surf.layer_size * mslice; + offset += (u64)surf.layer_size * mslice; if (offset > radeon_bo_size(track->db_s_write_bo)) { dev_warn(p->dev, "%s:%d stencil write bo too small (layer size %d, " - "offset %ld, max layer %d, bo size %ld)\n", + "offset %llu, max layer %d, bo size %ld)\n", __func__, __LINE__, surf.layer_size, - (unsigned long)track->db_s_write_offset << 8, mslice, + (u64)track->db_s_write_offset << 8, mslice, radeon_bo_size(track->db_s_write_bo)); return -EINVAL; } @@ -660,7 +660,7 @@ static int evergreen_cs_track_validate_depth(struct radeon_cs_parser *p) struct evergreen_cs_track *track = p->track; struct eg_surface surf; unsigned pitch, slice, mslice; - unsigned long offset; + u64 offset; int r; mslice = G_028008_SLICE_MAX(track->db_depth_view) + 1; @@ -707,34 +707,34 @@ static int evergreen_cs_track_validate_depth(struct radeon_cs_parser *p) return r; } - offset = track->db_z_read_offset << 8; + offset = (u64)track->db_z_read_offset << 8; if (offset & (surf.base_align - 1)) { - dev_warn(p->dev, "%s:%d stencil read bo base %ld not aligned with %ld\n", + dev_warn(p->dev, "%s:%d stencil read bo base %llu not aligned with %ld\n", __func__, __LINE__, offset, surf.base_align); return -EINVAL; } - offset += surf.layer_size * mslice; + offset += (u64)surf.layer_size * mslice; if (offset > radeon_bo_size(track->db_z_read_bo)) { dev_warn(p->dev, "%s:%d depth read bo too small (layer size %d, " - "offset %ld, max layer %d, bo size %ld)\n", + "offset %llu, max layer %d, bo size %ld)\n", __func__, __LINE__, surf.layer_size, - (unsigned long)track->db_z_read_offset << 8, mslice, + (u64)track->db_z_read_offset << 8, mslice, radeon_bo_size(track->db_z_read_bo)); return -EINVAL; } - offset = track->db_z_write_offset << 8; + offset = (u64)track->db_z_write_offset << 8; if (offset & (surf.base_align - 1)) { - dev_warn(p->dev, "%s:%d stencil write bo base %ld not aligned with %ld\n", + dev_warn(p->dev, "%s:%d stencil write bo base %llu not aligned with %ld\n", __func__, __LINE__, offset, surf.base_align); return -EINVAL; } - offset += surf.layer_size * mslice; + offset += (u64)surf.layer_size * mslice; if (offset > radeon_bo_size(track->db_z_write_bo)) { dev_warn(p->dev, "%s:%d depth write bo too small (layer size %d, " - "offset %ld, max layer %d, bo size %ld)\n", + "offset %llu, max layer %d, bo size %ld)\n", __func__, __LINE__, surf.layer_size, - (unsigned long)track->db_z_write_offset << 8, mslice, + (u64)track->db_z_write_offset << 8, mslice, radeon_bo_size(track->db_z_write_bo)); return -EINVAL; } diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c index 15241b80e9d2..444a135158bd 100644 --- a/drivers/gpu/drm/radeon/r100.c +++ b/drivers/gpu/drm/radeon/r100.c @@ -999,45 +999,65 @@ static int r100_cp_init_microcode(struct radeon_device *rdev) DRM_DEBUG_KMS("\n"); - if ((rdev->family == CHIP_R100) || (rdev->family == CHIP_RV100) || - (rdev->family == CHIP_RV200) || (rdev->family == CHIP_RS100) || - (rdev->family == CHIP_RS200)) { + switch (rdev->family) { + case CHIP_R100: + case CHIP_RV100: + case CHIP_RV200: + case CHIP_RS100: + case CHIP_RS200: DRM_INFO("Loading R100 Microcode\n"); fw_name = FIRMWARE_R100; - } else if ((rdev->family == CHIP_R200) || - (rdev->family == CHIP_RV250) || - (rdev->family == CHIP_RV280) || - (rdev->family == CHIP_RS300)) { + break; + + case CHIP_R200: + case CHIP_RV250: + case CHIP_RV280: + case CHIP_RS300: DRM_INFO("Loading R200 Microcode\n"); fw_name = FIRMWARE_R200; - } else if ((rdev->family == CHIP_R300) || - (rdev->family == CHIP_R350) || - (rdev->family == CHIP_RV350) || - (rdev->family == CHIP_RV380) || - (rdev->family == CHIP_RS400) || - (rdev->family == CHIP_RS480)) { + break; + + case CHIP_R300: + case CHIP_R350: + case CHIP_RV350: + case CHIP_RV380: + case CHIP_RS400: + case CHIP_RS480: DRM_INFO("Loading R300 Microcode\n"); fw_name = FIRMWARE_R300; - } else if ((rdev->family == CHIP_R420) || - (rdev->family == CHIP_R423) || - (rdev->family == CHIP_RV410)) { + break; + + case CHIP_R420: + case CHIP_R423: + case CHIP_RV410: DRM_INFO("Loading R400 Microcode\n"); fw_name = FIRMWARE_R420; - } else if ((rdev->family == CHIP_RS690) || - (rdev->family == CHIP_RS740)) { + break; + + case CHIP_RS690: + case CHIP_RS740: DRM_INFO("Loading RS690/RS740 Microcode\n"); fw_name = FIRMWARE_RS690; - } else if (rdev->family == CHIP_RS600) { + break; + + case CHIP_RS600: DRM_INFO("Loading RS600 Microcode\n"); fw_name = FIRMWARE_RS600; - } else if ((rdev->family == CHIP_RV515) || - (rdev->family == CHIP_R520) || - (rdev->family == CHIP_RV530) || - (rdev->family == CHIP_R580) || - (rdev->family == CHIP_RV560) || - (rdev->family == CHIP_RV570)) { + break; + + case CHIP_RV515: + case CHIP_R520: + case CHIP_RV530: + case CHIP_R580: + case CHIP_RV560: + case CHIP_RV570: DRM_INFO("Loading R500 Microcode\n"); fw_name = FIRMWARE_R520; + break; + + default: + DRM_ERROR("Unsupported Radeon family %u\n", rdev->family); + return -EINVAL; } err = request_firmware(&rdev->me_fw, fw_name, rdev->dev); diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 9302233b5503..5e2dc00bcb24 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -320,8 +320,8 @@ static void scl_vop_cal_scl_fac(struct vop *vop, const struct vop_win_data *win, uint32_t val; int vskiplines = 0; - if (dst_w > 3840) { - DRM_DEV_ERROR(vop->dev, "Maximum dst width (3840) exceeded\n"); + if (dst_w > 4096) { + DRM_DEV_ERROR(vop->dev, "Maximum dst width (4096) exceeded\n"); return; } diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 819373adc739..8d2dacb9f2fc 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -1486,6 +1486,7 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev, DRM_ERROR("Surface size cannot exceed %dx%d", dev_priv->texture_max_width, dev_priv->texture_max_height); + ret = -EINVAL; goto err_out; } diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 74a41bf67161..cbd40d59bb20 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -867,6 +867,8 @@ #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056 #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057 #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058 +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES 0x430c +#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES 0x431e #define USB_VENDOR_ID_PANASONIC 0x04da #define USB_DEVICE_ID_PANABOARD_UBT780 0x1044 diff --git a/drivers/hid/hid-plantronics.c b/drivers/hid/hid-plantronics.c index 3b75cadd543f..1f1716da4af1 100644 --- a/drivers/hid/hid-plantronics.c +++ b/drivers/hid/hid-plantronics.c @@ -41,8 +41,10 @@ (usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER) #define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0) +#define PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS BIT(1) #define PLT_DOUBLE_KEY_TIMEOUT 5 /* ms */ +#define PLT_FOLLOWED_OPPOSITE_KEY_TIMEOUT 220 /* ms */ struct plt_drv_data { unsigned long device_type; @@ -140,6 +142,21 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field, drv_data->last_volume_key_ts = cur_ts; } + if (drv_data->quirks & PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS) { + unsigned long prev_ts, cur_ts; + + /* Usages are filtered in plantronics_usages. */ + + if (!value) /* Handle key presses only. */ + return 0; + + prev_ts = drv_data->last_volume_key_ts; + cur_ts = jiffies; + if (jiffies_to_msecs(cur_ts - prev_ts) <= PLT_FOLLOWED_OPPOSITE_KEY_TIMEOUT) + return 1; /* Ignore the followed opposite volume key. */ + + drv_data->last_volume_key_ts = cur_ts; + } return 0; } @@ -213,6 +230,12 @@ static const struct hid_device_id plantronics_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES), .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, + USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES), + .driver_data = PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, + USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES), + .driver_data = PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS }, { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) }, { } }; diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c index 162401aaef71..3015dd1a7514 100644 --- a/drivers/hwmon/max16065.c +++ b/drivers/hwmon/max16065.c @@ -117,9 +117,10 @@ static inline int LIMIT_TO_MV(int limit, int range) return limit * range / 256; } -static inline int MV_TO_LIMIT(int mv, int range) +static inline int MV_TO_LIMIT(unsigned long mv, int range) { - return clamp_val(DIV_ROUND_CLOSEST(mv * 256, range), 0, 255); + mv = clamp_val(mv, 0, ULONG_MAX / 256); + return DIV_ROUND_CLOSEST(clamp_val(mv * 256, 0, range * 255), range); } static inline int ADC_TO_CURR(int adc, int gain) diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c index c52d07c6b49f..6e4c1453b8ab 100644 --- a/drivers/hwmon/ntc_thermistor.c +++ b/drivers/hwmon/ntc_thermistor.c @@ -57,6 +57,7 @@ static const struct platform_device_id ntc_thermistor_id[] = { { "ncp15xh103", TYPE_NCPXXXH103 }, { }, }; +MODULE_DEVICE_TABLE(platform, ntc_thermistor_id); /* * A compensation table should be sorted by the values of .ohm diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c index 29574b9075fd..309603ceb4e2 100644 --- a/drivers/i2c/busses/i2c-aspeed.c +++ b/drivers/i2c/busses/i2c-aspeed.c @@ -157,6 +157,13 @@ struct aspeed_i2c_bus { static int aspeed_i2c_reset(struct aspeed_i2c_bus *bus); +/* precondition: bus.lock has been acquired. */ +static void aspeed_i2c_do_stop(struct aspeed_i2c_bus *bus) +{ + bus->master_state = ASPEED_I2C_MASTER_STOP; + writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG); +} + static int aspeed_i2c_recover_bus(struct aspeed_i2c_bus *bus) { unsigned long time_left, flags; @@ -174,7 +181,7 @@ static int aspeed_i2c_recover_bus(struct aspeed_i2c_bus *bus) command); reinit_completion(&bus->cmd_complete); - writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG); + aspeed_i2c_do_stop(bus); spin_unlock_irqrestore(&bus->lock, flags); time_left = wait_for_completion_timeout( @@ -351,13 +358,6 @@ static void aspeed_i2c_do_start(struct aspeed_i2c_bus *bus) writel(command, bus->base + ASPEED_I2C_CMD_REG); } -/* precondition: bus.lock has been acquired. */ -static void aspeed_i2c_do_stop(struct aspeed_i2c_bus *bus) -{ - bus->master_state = ASPEED_I2C_MASTER_STOP; - writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG); -} - /* precondition: bus.lock has been acquired. */ static void aspeed_i2c_next_msg_or_stop(struct aspeed_i2c_bus *bus) { diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index d2c6da8cfc4e..fca861dcd44a 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c @@ -1665,8 +1665,15 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) i801_add_tco(priv); + /* + * adapter.name is used by platform code to find the main I801 adapter + * to instantiante i2c_clients, do not change. + */ snprintf(priv->adapter.name, sizeof(priv->adapter.name), - "SMBus I801 adapter at %04lx", priv->smba); + "SMBus %s adapter at %04lx", + (priv->features & FEATURE_IDF) ? "I801 IDF" : "I801", + priv->smba); + err = i2c_add_adapter(&priv->adapter); if (err) { platform_device_unregister(priv->tco_pdev); diff --git a/drivers/i2c/busses/i2c-isch.c b/drivers/i2c/busses/i2c-isch.c index 0cf1379f4e80..60839b8efaa2 100644 --- a/drivers/i2c/busses/i2c-isch.c +++ b/drivers/i2c/busses/i2c-isch.c @@ -107,8 +107,7 @@ static int sch_transaction(void) if (retries > MAX_RETRIES) { dev_err(&sch_adapter.dev, "SMBus Timeout!\n"); result = -ETIMEDOUT; - } - if (temp & 0x04) { + } else if (temp & 0x04) { result = -EIO; dev_dbg(&sch_adapter.dev, "Bus collision! SMBus may be " "locked until next hard reset. (sorry!)\n"); diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c index 3d9ff1412555..68d8db78980f 100644 --- a/drivers/i2c/busses/i2c-xiic.c +++ b/drivers/i2c/busses/i2c-xiic.c @@ -504,14 +504,17 @@ static irqreturn_t xiic_process(int irq, void *dev_id) goto out; } - xiic_fill_tx_fifo(i2c); - - /* current message sent and there is space in the fifo */ - if (!xiic_tx_space(i2c) && xiic_tx_fifo_space(i2c) >= 2) { + if (xiic_tx_space(i2c)) { + xiic_fill_tx_fifo(i2c); + } else { + /* current message fully written */ dev_dbg(i2c->adap.dev.parent, "%s end of message sent, nmsgs: %d\n", __func__, i2c->nmsgs); - if (i2c->nmsgs > 1) { + /* Don't move onto the next message until the TX FIFO empties, + * to ensure that a NAK is not missed. + */ + if (i2c->nmsgs > 1 && (pend & XIIC_INTR_TX_EMPTY_MASK)) { i2c->nmsgs--; i2c->tx_msg++; xfer_more = 1; @@ -522,11 +525,7 @@ static irqreturn_t xiic_process(int irq, void *dev_id) "%s Got TX IRQ but no more to do...\n", __func__); } - } else if (!xiic_tx_space(i2c) && (i2c->nmsgs == 1)) - /* current frame is sent and is last, - * make sure to disable tx half - */ - xiic_irq_dis(i2c, XIIC_INTR_TX_HALF_MASK); + } } out: dev_dbg(i2c->adap.dev.parent, "%s clr: 0x%x\n", __func__, clr); diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c index 0e4b379ada45..4dd8df18f3eb 100644 --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c @@ -46,7 +46,7 @@ static ssize_t _hid_sensor_set_report_latency(struct device *dev, latency = integer * 1000 + fract / 1000; ret = hid_sensor_set_report_latency(attrb, latency); if (ret < 0) - return len; + return ret; attrb->latency_ms = hid_sensor_get_report_latency(attrb); diff --git a/drivers/iio/dac/Kconfig b/drivers/iio/dac/Kconfig index 25bed2d7d2b9..756c579e2d61 100644 --- a/drivers/iio/dac/Kconfig +++ b/drivers/iio/dac/Kconfig @@ -299,6 +299,7 @@ config STM32_DAC config STM32_DAC_CORE tristate + select REGMAP_MMIO config VF610_DAC tristate "Vybrid vf610 DAC driver" diff --git a/drivers/iio/light/opt3001.c b/drivers/iio/light/opt3001.c index 75dc0ff5873e..006a2fa8d46a 100644 --- a/drivers/iio/light/opt3001.c +++ b/drivers/iio/light/opt3001.c @@ -145,6 +145,10 @@ static const struct opt3001_scale opt3001_scales[] = { .val = 20966, .val2 = 400000, }, + { + .val = 41932, + .val2 = 800000, + }, { .val = 83865, .val2 = 600000, diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c index 4b0f0a0801a3..3409a7897f4f 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -673,22 +673,8 @@ static int ak8975_start_read_axis(struct ak8975_data *data, if (ret < 0) return ret; - /* This will be executed only for non-interrupt based waiting case */ - if (ret & data->def->ctrl_masks[ST1_DRDY]) { - ret = i2c_smbus_read_byte_data(client, - data->def->ctrl_regs[ST2]); - if (ret < 0) { - dev_err(&client->dev, "Error in reading ST2\n"); - return ret; - } - if (ret & (data->def->ctrl_masks[ST2_DERR] | - data->def->ctrl_masks[ST2_HOFL])) { - dev_err(&client->dev, "ST2 status error 0x%x\n", ret); - return -EINVAL; - } - } - - return 0; + /* Return with zero if the data is ready. */ + return !data->def->ctrl_regs[ST1_DRDY]; } /* Retrieve raw flux value for one of the x, y, or z axis. */ @@ -715,6 +701,20 @@ static int ak8975_read_axis(struct iio_dev *indio_dev, int index, int *val) if (ret < 0) goto exit; + /* Read out ST2 for release lock on measurment data. */ + ret = i2c_smbus_read_byte_data(client, data->def->ctrl_regs[ST2]); + if (ret < 0) { + dev_err(&client->dev, "Error in reading ST2\n"); + goto exit; + } + + if (ret & (data->def->ctrl_masks[ST2_DERR] | + data->def->ctrl_masks[ST2_HOFL])) { + dev_err(&client->dev, "ST2 status error 0x%x\n", ret); + ret = -EINVAL; + goto exit; + } + mutex_unlock(&data->lock); pm_runtime_mark_last_busy(&data->client->dev); diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c index 84fa7b727a2b..6070488850ed 100644 --- a/drivers/infiniband/core/iwcm.c +++ b/drivers/infiniband/core/iwcm.c @@ -1178,7 +1178,7 @@ static int __init iw_cm_init(void) if (ret) return ret; - iwcm_wq = alloc_ordered_workqueue("iw_cm_wq", 0); + iwcm_wq = alloc_ordered_workqueue("iw_cm_wq", WQ_MEM_RECLAIM); if (!iwcm_wq) goto err_alloc; diff --git a/drivers/infiniband/hw/bnxt_re/qplib_fp.h b/drivers/infiniband/hw/bnxt_re/qplib_fp.h index 30e0af39a1ee..d1c74dc67558 100644 --- a/drivers/infiniband/hw/bnxt_re/qplib_fp.h +++ b/drivers/infiniband/hw/bnxt_re/qplib_fp.h @@ -128,7 +128,7 @@ struct bnxt_qplib_swqe { }; u32 q_key; u32 dst_qp; - u16 avid; + u32 avid; } send; /* Send Raw Ethernet and QP1 */ diff --git a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c index ad74988837c9..69c27242c361 100644 --- a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c +++ b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c @@ -237,7 +237,7 @@ int bnxt_qplib_rcfw_send_message(struct bnxt_qplib_rcfw *rcfw, /* failed with status */ dev_err(&rcfw->pdev->dev, "QPLIB: cmdq[%#x]=%#x status %#x", cookie, opcode, evnt->status); - rc = -EFAULT; + rc = -EIO; } return rc; diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c index 2086844dfade..c716f461ad9f 100644 --- a/drivers/infiniband/hw/cxgb4/cm.c +++ b/drivers/infiniband/hw/cxgb4/cm.c @@ -1184,6 +1184,8 @@ static int act_establish(struct c4iw_dev *dev, struct sk_buff *skb) int ret; ep = lookup_atid(t, atid); + if (!ep) + return -EINVAL; pr_debug("%s ep %p tid %u snd_isn %u rcv_isn %u\n", __func__, ep, tid, be32_to_cpu(req->snd_isn), be32_to_cpu(req->rcv_isn)); @@ -2021,7 +2023,7 @@ static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip, err = -ENOMEM; if (n->dev->flags & IFF_LOOPBACK) { if (iptype == 4) - pdev = ip_dev_find(&init_net, *(__be32 *)peer_ip); + pdev = __ip_dev_find(&init_net, *(__be32 *)peer_ip, false); else if (IS_ENABLED(CONFIG_IPV6)) for_each_netdev(&init_net, pdev) { if (ipv6_chk_addr(&init_net, @@ -2036,12 +2038,12 @@ static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip, err = -ENODEV; goto out; } + if (is_vlan_dev(pdev)) + pdev = vlan_dev_real_dev(pdev); ep->l2t = cxgb4_l2t_get(cdev->rdev.lldi.l2t, n, pdev, rt_tos2priority(tos)); - if (!ep->l2t) { - dev_put(pdev); + if (!ep->l2t) goto out; - } ep->mtu = pdev->mtu; ep->tx_chan = cxgb4_port_chan(pdev); ep->smac_idx = cxgb4_tp_smt_idx(adapter_type, @@ -2055,7 +2057,6 @@ static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip, ep->rss_qid = cdev->rdev.lldi.rxq_ids[ cxgb4_port_idx(pdev) * step]; set_tcp_window(ep, (struct port_info *)netdev_priv(pdev)); - dev_put(pdev); } else { pdev = get_real_dev(n->dev); ep->l2t = cxgb4_l2t_get(cdev->rdev.lldi.l2t, @@ -2216,6 +2217,9 @@ static int act_open_rpl(struct c4iw_dev *dev, struct sk_buff *skb) int ret = 0; ep = lookup_atid(t, atid); + if (!ep) + return -EINVAL; + la = (struct sockaddr_in *)&ep->com.local_addr; ra = (struct sockaddr_in *)&ep->com.remote_addr; la6 = (struct sockaddr_in6 *)&ep->com.local_addr; diff --git a/drivers/input/keyboard/adp5589-keys.c b/drivers/input/keyboard/adp5589-keys.c index 32d94c63dc33..64c529dd161a 100644 --- a/drivers/input/keyboard/adp5589-keys.c +++ b/drivers/input/keyboard/adp5589-keys.c @@ -390,10 +390,17 @@ static int adp5589_gpio_get_value(struct gpio_chip *chip, unsigned off) struct adp5589_kpad *kpad = gpiochip_get_data(chip); unsigned int bank = kpad->var->bank(kpad->gpiomap[off]); unsigned int bit = kpad->var->bit(kpad->gpiomap[off]); + int val; - return !!(adp5589_read(kpad->client, - kpad->var->reg(ADP5589_GPI_STATUS_A) + bank) & - bit); + mutex_lock(&kpad->gpio_lock); + if (kpad->dir[bank] & bit) + val = kpad->dat_out[bank]; + else + val = adp5589_read(kpad->client, + kpad->var->reg(ADP5589_GPI_STATUS_A) + bank); + mutex_unlock(&kpad->gpio_lock); + + return !!(val & bit); } static void adp5589_gpio_set_value(struct gpio_chip *chip, diff --git a/drivers/mailbox/bcm2835-mailbox.c b/drivers/mailbox/bcm2835-mailbox.c index cfb4b4496dd9..8b53e6fbba44 100644 --- a/drivers/mailbox/bcm2835-mailbox.c +++ b/drivers/mailbox/bcm2835-mailbox.c @@ -152,7 +152,8 @@ static int bcm2835_mbox_probe(struct platform_device *pdev) spin_lock_init(&mbox->lock); ret = devm_request_irq(dev, irq_of_parse_and_map(dev->of_node, 0), - bcm2835_mbox_irq, 0, dev_name(dev), mbox); + bcm2835_mbox_irq, IRQF_NO_SUSPEND, dev_name(dev), + mbox); if (ret) { dev_err(dev, "Failed to register a mailbox IRQ handler: %d\n", ret); diff --git a/drivers/mailbox/rockchip-mailbox.c b/drivers/mailbox/rockchip-mailbox.c index d702a204f5c1..bf09ab923d1e 100644 --- a/drivers/mailbox/rockchip-mailbox.c +++ b/drivers/mailbox/rockchip-mailbox.c @@ -167,7 +167,7 @@ static const struct of_device_id rockchip_mbox_of_match[] = { { .compatible = "rockchip,rk3368-mailbox", .data = &rk3368_drv_data}, { }, }; -MODULE_DEVICE_TABLE(of, rockchp_mbox_of_match); +MODULE_DEVICE_TABLE(of, rockchip_mbox_of_match); static int rockchip_mbox_probe(struct platform_device *pdev) { diff --git a/drivers/media/dvb-frontends/rtl2830.c b/drivers/media/dvb-frontends/rtl2830.c index 7bbfe11d11ed..33c82daebdec 100644 --- a/drivers/media/dvb-frontends/rtl2830.c +++ b/drivers/media/dvb-frontends/rtl2830.c @@ -619,7 +619,7 @@ static int rtl2830_pid_filter(struct dvb_frontend *fe, u8 index, u16 pid, int on index, pid, onoff); /* skip invalid PIDs (0x2000) */ - if (pid > 0x1fff || index > 32) + if (pid > 0x1fff || index >= 32) return 0; if (onoff) diff --git a/drivers/media/dvb-frontends/rtl2832.c b/drivers/media/dvb-frontends/rtl2832.c index 3690ea9dac22..fb4f34fdf6cd 100644 --- a/drivers/media/dvb-frontends/rtl2832.c +++ b/drivers/media/dvb-frontends/rtl2832.c @@ -995,7 +995,7 @@ static int rtl2832_pid_filter(struct dvb_frontend *fe, u8 index, u16 pid, index, pid, onoff, dev->slave_ts); /* skip invalid PIDs (0x2000) */ - if (pid > 0x1fff || index > 32) + if (pid > 0x1fff || index >= 32) return 0; if (onoff) diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c index 0a011b117a6d..f59ff8caf371 100644 --- a/drivers/media/platform/qcom/venus/core.c +++ b/drivers/media/platform/qcom/venus/core.c @@ -263,6 +263,7 @@ static int venus_remove(struct platform_device *pdev) struct device *dev = core->dev; int ret; + cancel_delayed_work_sync(&core->work); ret = pm_runtime_get_sync(dev); WARN_ON(ret < 0); diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index 5cd496e5010c..dfd74aaa156b 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c @@ -275,6 +275,10 @@ static void __vb2_plane_dmabuf_put(struct vb2_buffer *vb, struct vb2_plane *p) p->mem_priv = NULL; p->dbuf = NULL; p->dbuf_mapped = 0; + p->bytesused = 0; + p->length = 0; + p->m.fd = 0; + p->data_offset = 0; } /** @@ -1149,10 +1153,6 @@ static int __prepare_dmabuf(struct vb2_buffer *vb, const void *pb) /* Release previously acquired memory if present */ __vb2_plane_dmabuf_put(vb, &vb->planes[plane]); - vb->planes[plane].bytesused = 0; - vb->planes[plane].length = 0; - vb->planes[plane].m.fd = 0; - vb->planes[plane].data_offset = 0; /* Acquire each plane's memory */ mem_priv = call_ptr_memop(vb, attach_dmabuf, diff --git a/drivers/misc/sgi-gru/grukservices.c b/drivers/misc/sgi-gru/grukservices.c index 030769018461..256be2e12faa 100644 --- a/drivers/misc/sgi-gru/grukservices.c +++ b/drivers/misc/sgi-gru/grukservices.c @@ -270,7 +270,6 @@ static int gru_get_cpu_resources(int dsr_bytes, void **cb, void **dsr) int lcpu; BUG_ON(dsr_bytes > GRU_NUM_KERNEL_DSR_BYTES); - preempt_disable(); bs = gru_lock_kernel_context(-1); lcpu = uv_blade_processor_id(); *cb = bs->kernel_cb + lcpu * GRU_HANDLE_STRIDE; @@ -284,7 +283,6 @@ static int gru_get_cpu_resources(int dsr_bytes, void **cb, void **dsr) static void gru_free_cpu_resources(void *cb, void *dsr) { gru_unlock_kernel_context(uv_numa_blade_id()); - preempt_enable(); } /* diff --git a/drivers/misc/sgi-gru/grumain.c b/drivers/misc/sgi-gru/grumain.c index 7b0ad008def5..ed69eaa876b0 100644 --- a/drivers/misc/sgi-gru/grumain.c +++ b/drivers/misc/sgi-gru/grumain.c @@ -954,10 +954,8 @@ int gru_fault(struct vm_fault *vmf) again: mutex_lock(>s->ts_ctxlock); - preempt_disable(); if (gru_check_context_placement(gts)) { - preempt_enable(); mutex_unlock(>s->ts_ctxlock); gru_unload_context(gts, 1); return VM_FAULT_NOPAGE; @@ -966,7 +964,6 @@ again: if (!gts->ts_gru) { STAT(load_user_context); if (!gru_assign_gru_context(gts)) { - preempt_enable(); mutex_unlock(>s->ts_ctxlock); set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(GRU_ASSIGN_DELAY); /* true hack ZZZ */ @@ -982,7 +979,6 @@ again: vma->vm_page_prot); } - preempt_enable(); mutex_unlock(>s->ts_ctxlock); return VM_FAULT_NOPAGE; diff --git a/drivers/misc/sgi-gru/grutlbpurge.c b/drivers/misc/sgi-gru/grutlbpurge.c index 9918eda0e05f..3d2345b40dea 100644 --- a/drivers/misc/sgi-gru/grutlbpurge.c +++ b/drivers/misc/sgi-gru/grutlbpurge.c @@ -78,7 +78,6 @@ static struct gru_tlb_global_handle *get_lock_tgh_handle(struct gru_state struct gru_tlb_global_handle *tgh; int n; - preempt_disable(); if (uv_numa_blade_id() == gru->gs_blade_id) n = get_on_blade_tgh(gru); else @@ -92,7 +91,6 @@ static struct gru_tlb_global_handle *get_lock_tgh_handle(struct gru_state static void get_unlock_tgh_handle(struct gru_tlb_global_handle *tgh) { unlock_tgh_handle(tgh); - preempt_enable(); } /* diff --git a/drivers/mtd/devices/slram.c b/drivers/mtd/devices/slram.c index 8087c36dc693..eb0667839c44 100644 --- a/drivers/mtd/devices/slram.c +++ b/drivers/mtd/devices/slram.c @@ -299,10 +299,12 @@ static int __init init_slram(void) T("slram: devname = %s\n", devname); if ((!map) || (!(devstart = strsep(&map, ",")))) { E("slram: No devicestart specified.\n"); + break; } T("slram: devstart = %s\n", devstart); if ((!map) || (!(devlength = strsep(&map, ",")))) { E("slram: No devicelength / -end specified.\n"); + break; } T("slram: devlength = %s\n", devlength); if (parse_cmdline(devname, devstart, devlength) != 0) { diff --git a/drivers/net/ethernet/aeroflex/greth.c b/drivers/net/ethernet/aeroflex/greth.c index 4df8da8f5e7e..59690330d81c 100644 --- a/drivers/net/ethernet/aeroflex/greth.c +++ b/drivers/net/ethernet/aeroflex/greth.c @@ -488,7 +488,7 @@ greth_start_xmit_gbit(struct sk_buff *skb, struct net_device *dev) if (unlikely(skb->len > MAX_FRAME_SIZE)) { dev->stats.tx_errors++; - goto out; + goto len_error; } /* Save skb pointer. */ @@ -579,6 +579,7 @@ frag_map_error: map_error: if (net_ratelimit()) dev_warn(greth->dev, "Could not create TX DMA mapping\n"); +len_error: dev_kfree_skb(skb); out: return err; diff --git a/drivers/net/ethernet/amd/mvme147.c b/drivers/net/ethernet/amd/mvme147.c index 0a920448522f..0bb27f4dd642 100644 --- a/drivers/net/ethernet/amd/mvme147.c +++ b/drivers/net/ethernet/amd/mvme147.c @@ -105,10 +105,6 @@ struct net_device * __init mvme147lance_probe(int unit) address = address >> 8; dev->dev_addr[3] = address&0xff; - printk("%s: MVME147 at 0x%08lx, irq %d, Hardware Address %pM\n", - dev->name, dev->base_addr, MVME147_LANCE_IRQ, - dev->dev_addr); - lp = netdev_priv(dev); lp->ram = __get_dma_pages(GFP_ATOMIC, 3); /* 32K */ if (!lp->ram) { @@ -138,6 +134,9 @@ struct net_device * __init mvme147lance_probe(int unit) return ERR_PTR(err); } + netdev_info(dev, "MVME147 at 0x%08lx, irq %d, Hardware Address %pM\n", + dev->base_addr, MVME147_LANCE_IRQ, dev->dev_addr); + return dev; } diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c index 576381ee757d..deca9dede645 100644 --- a/drivers/net/ethernet/broadcom/bcmsysport.c +++ b/drivers/net/ethernet/broadcom/bcmsysport.c @@ -1243,6 +1243,7 @@ static netdev_tx_t bcm_sysport_xmit(struct sk_buff *skb, netif_err(priv, tx_err, dev, "DMA map failed at %p (len=%d)\n", skb->data, skb_len); ret = NETDEV_TX_OK; + dev_kfree_skb_any(skb); goto out; } diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index bbe8f4b250d1..a0e0377b1af4 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -1379,10 +1379,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev) be_get_wrb_params_from_skb(adapter, skb, &wrb_params); wrb_cnt = be_xmit_enqueue(adapter, txo, skb, &wrb_params); - if (unlikely(!wrb_cnt)) { - dev_kfree_skb_any(skb); - goto drop; - } + if (unlikely(!wrb_cnt)) + goto drop_skb; /* if os2bmc is enabled and if the pkt is destined to bmc, * enqueue the pkt a 2nd time with mgmt bit set. @@ -1391,7 +1389,7 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev) BE_WRB_F_SET(wrb_params.features, OS2BMC, 1); wrb_cnt = be_xmit_enqueue(adapter, txo, skb, &wrb_params); if (unlikely(!wrb_cnt)) - goto drop; + goto drop_skb; else skb_get(skb); } @@ -1405,6 +1403,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev) be_xmit_flush(adapter, txo); return NETDEV_TX_OK; +drop_skb: + dev_kfree_skb_any(skb); drop: tx_stats(txo)->tx_drv_drops++; /* Flush the already enqueued tx requests */ diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c index a1caca6accf3..a5a5421b2ef3 100644 --- a/drivers/net/ethernet/faraday/ftgmac100.c +++ b/drivers/net/ethernet/faraday/ftgmac100.c @@ -574,7 +574,7 @@ static bool ftgmac100_rx_packet(struct ftgmac100 *priv, int *processed) (*processed)++; return true; - drop: +drop: /* Clean rxdes0 (which resets own bit) */ rxdes->rxdes0 = cpu_to_le32(status & priv->rxdes0_edorr_mask); priv->rx_pointer = ftgmac100_next_rx_pointer(priv, pointer); @@ -658,6 +658,11 @@ static bool ftgmac100_tx_complete_packet(struct ftgmac100 *priv) ftgmac100_free_tx_packet(priv, pointer, skb, txdes, ctl_stat); txdes->txdes0 = cpu_to_le32(ctl_stat & priv->txdes0_edotr_mask); + /* Ensure the descriptor config is visible before setting the tx + * pointer. + */ + smp_wmb(); + priv->tx_clean_pointer = ftgmac100_next_tx_pointer(priv, pointer); return true; @@ -811,6 +816,11 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, dma_wmb(); first->txdes0 = cpu_to_le32(f_ctl_stat); + /* Ensure the descriptor config is visible before setting the tx + * pointer. + */ + smp_wmb(); + /* Update next TX pointer */ priv->tx_pointer = pointer; @@ -831,7 +841,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, return NETDEV_TX_OK; - dma_err: +dma_err: if (net_ratelimit()) netdev_err(netdev, "map tx fragment failed\n"); @@ -853,7 +863,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, * last fragment, so we know ftgmac100_free_tx_packet() * hasn't freed the skb yet. */ - drop: +drop: /* Drop the packet */ dev_kfree_skb_any(skb); netdev->stats.tx_dropped++; @@ -1439,7 +1449,7 @@ static void ftgmac100_reset_task(struct work_struct *work) ftgmac100_init_all(priv, true); netdev_dbg(netdev, "Reset done !\n"); - bail: +bail: if (priv->mii_bus) mutex_unlock(&priv->mii_bus->mdio_lock); if (netdev->phydev) @@ -1510,15 +1520,15 @@ static int ftgmac100_open(struct net_device *netdev) return 0; - err_ncsi: +err_ncsi: napi_disable(&priv->napi); netif_stop_queue(netdev); - err_alloc: +err_alloc: ftgmac100_free_buffers(priv); free_irq(netdev->irq, netdev); - err_irq: +err_irq: netif_napi_del(&priv->napi); - err_hw: +err_hw: iowrite32(0, priv->base + FTGMAC100_OFFSET_IER); ftgmac100_free_rings(priv); return err; diff --git a/drivers/net/ethernet/faraday/ftgmac100.h b/drivers/net/ethernet/faraday/ftgmac100.h index 0653d8176e6a..6349e7c7c074 100644 --- a/drivers/net/ethernet/faraday/ftgmac100.h +++ b/drivers/net/ethernet/faraday/ftgmac100.h @@ -97,7 +97,7 @@ FTGMAC100_INT_RPKT_BUF) /* All the interrupts we care about */ -#define FTGMAC100_INT_ALL (FTGMAC100_INT_RPKT_BUF | \ +#define FTGMAC100_INT_ALL (FTGMAC100_INT_RXTX | \ FTGMAC100_INT_BAD) /* diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index 67246d42c3d9..e71d6a689615 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -2040,11 +2040,11 @@ static netdev_tx_t dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev) { const int queue_mapping = skb_get_queue_mapping(skb); - bool nonlinear = skb_is_nonlinear(skb); struct rtnl_link_stats64 *percpu_stats; struct dpaa_percpu_priv *percpu_priv; struct dpaa_priv *priv; struct qm_fd fd; + bool nonlinear; int offset = 0; int err = 0; @@ -2054,6 +2054,13 @@ dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev) qm_fd_clear_fd(&fd); + /* Packet data is always read as 32-bit words, so zero out any part of + * the skb which might be sent if we have to pad the packet + */ + if (__skb_put_padto(skb, ETH_ZLEN, false)) + goto enomem; + + nonlinear = skb_is_nonlinear(skb); if (!nonlinear) { /* We're going to store the skb backpointer at the beginning * of the data buffer, so we need a privately owned skb diff --git a/drivers/net/ethernet/hisilicon/hip04_eth.c b/drivers/net/ethernet/hisilicon/hip04_eth.c index d5489cb0afff..51abbb32d50c 100644 --- a/drivers/net/ethernet/hisilicon/hip04_eth.c +++ b/drivers/net/ethernet/hisilicon/hip04_eth.c @@ -861,6 +861,7 @@ static int hip04_mac_probe(struct platform_device *pdev) priv->tx_coalesce_timer.function = tx_done; priv->map = syscon_node_to_regmap(arg.np); + of_node_put(arg.np); if (IS_ERR(priv->map)) { dev_warn(d, "no syscon hisilicon,hip04-ppe\n"); ret = PTR_ERR(priv->map); diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c index e5fbb5119f40..41c2dd65797e 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c @@ -942,6 +942,7 @@ static int hns_mac_get_info(struct hns_mac_cb *mac_cb) mac_cb->cpld_ctrl = NULL; } else { syscon = syscon_node_to_regmap(cpld_args.np); + of_node_put(cpld_args.np); if (IS_ERR_OR_NULL(syscon)) { dev_dbg(mac_cb->dev, "no cpld-syscon found!\n"); mac_cb->cpld_ctrl = NULL; diff --git a/drivers/net/ethernet/hisilicon/hns_mdio.c b/drivers/net/ethernet/hisilicon/hns_mdio.c index 9a3bc0994a1d..b0f798042e41 100644 --- a/drivers/net/ethernet/hisilicon/hns_mdio.c +++ b/drivers/net/ethernet/hisilicon/hns_mdio.c @@ -508,6 +508,7 @@ static int hns_mdio_probe(struct platform_device *pdev) MDIO_SC_RESET_ST; } } + of_node_put(reg_args.np); } else { dev_warn(&pdev->dev, "find syscon ret = %#x\n", ret); mdio_dev->subctrl_vbase = NULL; diff --git a/drivers/net/ethernet/i825xx/sun3_82586.c b/drivers/net/ethernet/i825xx/sun3_82586.c index 4976fe5eae82..db6088ae8a41 100644 --- a/drivers/net/ethernet/i825xx/sun3_82586.c +++ b/drivers/net/ethernet/i825xx/sun3_82586.c @@ -1013,6 +1013,7 @@ static int sun3_82586_send_packet(struct sk_buff *skb, struct net_device *dev) if(skb->len > XMIT_BUFF_SIZE) { printk("%s: Sorry, max. framelength is %d bytes. The length of your frame is %d bytes.\n",dev->name,XMIT_BUFF_SIZE,skb->len); + dev_kfree_skb(skb); return NETDEV_TX_OK; } diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c index fff09dcf9e34..9b3ba4db3222 100644 --- a/drivers/net/ethernet/ibm/emac/mal.c +++ b/drivers/net/ethernet/ibm/emac/mal.c @@ -581,7 +581,7 @@ static int mal_probe(struct platform_device *ofdev) printk(KERN_ERR "%pOF: Support for 405EZ not enabled!\n", ofdev->dev.of_node); err = -ENODEV; - goto fail; + goto fail_unmap; #endif } diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 16c066a878c5..2de32b5ec1de 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -8349,6 +8349,10 @@ static void igb_io_resume(struct pci_dev *pdev) struct igb_adapter *adapter = netdev_priv(netdev); if (netif_running(netdev)) { + if (!test_bit(__IGB_DOWN, &adapter->state)) { + dev_dbg(&pdev->dev, "Resuming from non-fatal error, do nothing.\n"); + return; + } if (igb_up(adapter)) { dev_err(&pdev->dev, "igb_up failed after reset\n"); return; diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c index 62d848df26ef..3d3c8247d536 100644 --- a/drivers/net/ethernet/jme.c +++ b/drivers/net/ethernet/jme.c @@ -964,15 +964,13 @@ jme_udpsum(struct sk_buff *skb) if (skb->protocol != htons(ETH_P_IP)) return csum; skb_set_network_header(skb, ETH_HLEN); - if ((ip_hdr(skb)->protocol != IPPROTO_UDP) || - (skb->len < (ETH_HLEN + - (ip_hdr(skb)->ihl << 2) + - sizeof(struct udphdr)))) { + + if (ip_hdr(skb)->protocol != IPPROTO_UDP || + skb->len < (ETH_HLEN + ip_hdrlen(skb) + sizeof(struct udphdr))) { skb_reset_network_header(skb); return csum; } - skb_set_transport_header(skb, - ETH_HLEN + (ip_hdr(skb)->ihl << 2)); + skb_set_transport_header(skb, ETH_HLEN + ip_hdrlen(skb)); csum = udp_hdr(skb)->check; skb_reset_transport_header(skb); skb_reset_network_header(skb); diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c index 17a59919f000..65df4e557a0a 100644 --- a/drivers/net/ethernet/lantiq_etop.c +++ b/drivers/net/ethernet/lantiq_etop.c @@ -477,7 +477,9 @@ ltq_etop_tx(struct sk_buff *skb, struct net_device *dev) unsigned long flags; u32 byte_offset; - len = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len; + if (skb_put_padto(skb, ETH_ZLEN)) + return NETDEV_TX_OK; + len = skb->len; if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) || ch->skb[ch->dma.desc]) { netdev_err(dev, "tx ring full\n"); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c index 840ce070bddf..6481723a7dbf 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -1574,6 +1574,8 @@ static const struct pci_device_id mlx5_core_pci_table[] = { { PCI_VDEVICE(MELLANOX, 0x101a), MLX5_PCI_DEV_IS_VF}, /* ConnectX-5 Ex VF */ { PCI_VDEVICE(MELLANOX, 0x101b) }, /* ConnectX-6 */ { PCI_VDEVICE(MELLANOX, 0x101c), MLX5_PCI_DEV_IS_VF}, /* ConnectX-6 VF */ + { PCI_VDEVICE(MELLANOX, 0x101d) }, /* ConnectX-6 Dx */ + { PCI_VDEVICE(MELLANOX, 0x101e), MLX5_PCI_DEV_IS_VF}, /* ConnectX Family mlx5Gen Virtual Function */ { PCI_VDEVICE(MELLANOX, 0xa2d2) }, /* BlueField integrated ConnectX-5 network controller */ { PCI_VDEVICE(MELLANOX, 0xa2d3), MLX5_PCI_DEV_IS_VF}, /* BlueField integrated ConnectX-5 network controller VF */ { PCI_VDEVICE(MELLANOX, 0xa2d6) }, /* BlueField-2 integrated ConnectX-6 Dx network controller */ diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index 21525060357c..bf4796245431 100644 --- a/drivers/net/gtp.c +++ b/drivers/net/gtp.c @@ -852,31 +852,32 @@ static int gtp_encap_enable(struct gtp_dev *gtp, struct nlattr *data[]) unsigned int role = GTP_ROLE_GGSN; if (data[IFLA_GTP_FD0]) { - u32 fd0 = nla_get_u32(data[IFLA_GTP_FD0]); + int fd0 = nla_get_u32(data[IFLA_GTP_FD0]); - sk0 = gtp_encap_enable_socket(fd0, UDP_ENCAP_GTP0, gtp); - if (IS_ERR(sk0)) - return PTR_ERR(sk0); + if (fd0 >= 0) { + sk0 = gtp_encap_enable_socket(fd0, UDP_ENCAP_GTP0, gtp); + if (IS_ERR(sk0)) + return PTR_ERR(sk0); + } } if (data[IFLA_GTP_FD1]) { - u32 fd1 = nla_get_u32(data[IFLA_GTP_FD1]); + int fd1 = nla_get_u32(data[IFLA_GTP_FD1]); - sk1u = gtp_encap_enable_socket(fd1, UDP_ENCAP_GTP1U, gtp); - if (IS_ERR(sk1u)) { - if (sk0) + if (fd1 >= 0) { + sk1u = gtp_encap_enable_socket(fd1, UDP_ENCAP_GTP1U, gtp); + if (IS_ERR(sk1u)) { gtp_encap_disable_sock(sk0); - return PTR_ERR(sk1u); + return PTR_ERR(sk1u); + } } } if (data[IFLA_GTP_ROLE]) { role = nla_get_u32(data[IFLA_GTP_ROLE]); if (role > GTP_ROLE_SGSN) { - if (sk0) - gtp_encap_disable_sock(sk0); - if (sk1u) - gtp_encap_disable_sock(sk1u); + gtp_encap_disable_sock(sk0); + gtp_encap_disable_sock(sk1u); return -EINVAL; } } diff --git a/drivers/net/ppp/ppp_async.c b/drivers/net/ppp/ppp_async.c index 7172dd35f619..968375587cb8 100644 --- a/drivers/net/ppp/ppp_async.c +++ b/drivers/net/ppp/ppp_async.c @@ -555,7 +555,7 @@ ppp_async_encode(struct asyncppp *ap) * and 7 (code-reject) must be sent as though no options * had been negotiated. */ - islcp = proto == PPP_LCP && 1 <= data[2] && data[2] <= 7; + islcp = proto == PPP_LCP && count >= 3 && 1 <= data[2] && data[2] <= 7; if (i == 0) { if (islcp) diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c index ac6091ceb5f8..720f67cdca84 100644 --- a/drivers/net/usb/cdc_ncm.c +++ b/drivers/net/usb/cdc_ncm.c @@ -1709,10 +1709,10 @@ int cdc_ncm_rx_fixup(struct usbnet *dev, struct sk_buff *skb_in) { struct sk_buff *skb; struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0]; - int len; + unsigned int len; int nframes; int x; - int offset; + unsigned int offset; union { struct usb_cdc_ncm_ndp16 *ndp16; struct usb_cdc_ncm_ndp32 *ndp32; @@ -1784,8 +1784,8 @@ next_ndp: break; } - /* sanity checking */ - if (((offset + len) > skb_in->len) || + /* sanity checking - watch out for integer wrap*/ + if ((offset > skb_in->len) || (len > skb_in->len - offset) || (len > ctx->rx_max) || (len < ETH_HLEN)) { netif_dbg(dev, rx_err, dev->net, "invalid frame detected (ignored) offset[%u]=%u, length=%u, skb=%p\n", diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c index 0a86ba028c4d..6a3a4504767f 100644 --- a/drivers/net/usb/ipheth.c +++ b/drivers/net/usb/ipheth.c @@ -307,13 +307,14 @@ static int ipheth_carrier_set(struct ipheth_device *dev) 0x02, /* index */ dev->ctrl_buf, IPHETH_CTRL_BUF_SIZE, IPHETH_CTRL_TIMEOUT); - if (retval < 0) { + if (retval <= 0) { dev_err(&dev->intf->dev, "%s: usb_control_msg: %d\n", __func__, retval); return retval; } - if (dev->ctrl_buf[0] == IPHETH_CARRIER_ON) { + if ((retval == 1 && dev->ctrl_buf[0] == IPHETH_CARRIER_ON) || + (retval >= 2 && dev->ctrl_buf[1] == IPHETH_CARRIER_ON)) { netif_carrier_on(dev->net); if (dev->tx_urb->status != -EINPROGRESS) netif_wake_queue(dev->net); diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index a0b40bdbdd84..bf3234502f77 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -3001,11 +3001,23 @@ static void r8152b_hw_phy_cfg(struct r8152 *tp) set_bit(PHY_RESET, &tp->flags); } -static void r8152b_exit_oob(struct r8152 *tp) +static void wait_oob_link_list_ready(struct r8152 *tp) { u32 ocp_data; int i; + for (i = 0; i < 1000; i++) { + ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); + if (ocp_data & LINK_LIST_READY) + break; + usleep_range(1000, 2000); + } +} + +static void r8152b_exit_oob(struct r8152 *tp) +{ + u32 ocp_data; + ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR); ocp_data &= ~RCR_ACPT_ALL; ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data); @@ -3023,23 +3035,13 @@ static void r8152b_exit_oob(struct r8152 *tp) ocp_data &= ~MCU_BORW_EN; ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data); - for (i = 0; i < 1000; i++) { - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); - if (ocp_data & LINK_LIST_READY) - break; - usleep_range(1000, 2000); - } + wait_oob_link_list_ready(tp); ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7); ocp_data |= RE_INIT_LL; ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data); - for (i = 0; i < 1000; i++) { - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); - if (ocp_data & LINK_LIST_READY) - break; - usleep_range(1000, 2000); - } + wait_oob_link_list_ready(tp); rtl8152_nic_reset(tp); @@ -3081,7 +3083,6 @@ static void r8152b_exit_oob(struct r8152 *tp) static void r8152b_enter_oob(struct r8152 *tp) { u32 ocp_data; - int i; ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); ocp_data &= ~NOW_IS_OOB; @@ -3093,23 +3094,13 @@ static void r8152b_enter_oob(struct r8152 *tp) rtl_disable(tp); - for (i = 0; i < 1000; i++) { - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); - if (ocp_data & LINK_LIST_READY) - break; - usleep_range(1000, 2000); - } + wait_oob_link_list_ready(tp); ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7); ocp_data |= RE_INIT_LL; ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data); - for (i = 0; i < 1000; i++) { - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); - if (ocp_data & LINK_LIST_READY) - break; - usleep_range(1000, 2000); - } + wait_oob_link_list_ready(tp); ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, RTL8152_RMS); @@ -3382,7 +3373,6 @@ static void r8153b_hw_phy_cfg(struct r8152 *tp) static void r8153_first_init(struct r8152 *tp) { u32 ocp_data; - int i; rxdy_gated_en(tp, true); r8153_teredo_off(tp); @@ -3402,23 +3392,13 @@ static void r8153_first_init(struct r8152 *tp) ocp_data &= ~MCU_BORW_EN; ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data); - for (i = 0; i < 1000; i++) { - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); - if (ocp_data & LINK_LIST_READY) - break; - usleep_range(1000, 2000); - } + wait_oob_link_list_ready(tp); ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7); ocp_data |= RE_INIT_LL; ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data); - for (i = 0; i < 1000; i++) { - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); - if (ocp_data & LINK_LIST_READY) - break; - usleep_range(1000, 2000); - } + wait_oob_link_list_ready(tp); rtl_rx_vlan_en(tp, tp->netdev->features & NETIF_F_HW_VLAN_CTAG_RX); @@ -3443,7 +3423,6 @@ static void r8153_first_init(struct r8152 *tp) static void r8153_enter_oob(struct r8152 *tp) { u32 ocp_data; - int i; ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); ocp_data &= ~NOW_IS_OOB; @@ -3452,23 +3431,13 @@ static void r8153_enter_oob(struct r8152 *tp) rtl_disable(tp); rtl_reset_bmu(tp); - for (i = 0; i < 1000; i++) { - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); - if (ocp_data & LINK_LIST_READY) - break; - usleep_range(1000, 2000); - } + wait_oob_link_list_ready(tp); ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7); ocp_data |= RE_INIT_LL; ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data); - for (i = 0; i < 1000; i++) { - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); - if (ocp_data & LINK_LIST_READY) - break; - usleep_range(1000, 2000); - } + wait_oob_link_list_ready(tp); ocp_data = tp->netdev->mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, ocp_data); diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index b84fa9f51724..82ce4972d388 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -1836,7 +1836,8 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod) // can rename the link if it knows better. if ((dev->driver_info->flags & FLAG_ETHER) != 0 && ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 || - (net->dev_addr [0] & 0x02) == 0)) + /* somebody touched it*/ + !is_zero_ether_addr(net->dev_addr))) strscpy(net->name, "eth%d", sizeof(net->name)); /* WLAN devices should always be named "wlan%d" */ if ((dev->driver_info->flags & FLAG_WLAN) != 0) diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c index efaac08cd0ca..0a9c9e5c4d77 100644 --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c @@ -1329,11 +1329,11 @@ void ath9k_get_et_stats(struct ieee80211_hw *hw, struct ath_softc *sc = hw->priv; int i = 0; - data[i++] = (sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_pkts_all + + data[i++] = ((u64)sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_pkts_all + sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].tx_pkts_all + sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].tx_pkts_all + sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].tx_pkts_all); - data[i++] = (sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_bytes_all + + data[i++] = ((u64)sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BE)].tx_bytes_all + sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_BK)].tx_bytes_all + sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VI)].tx_bytes_all + sc->debug.stats.txstats[PR_QNUM(IEEE80211_AC_VO)].tx_bytes_all); @@ -1384,8 +1384,6 @@ int ath9k_init_debug(struct ath_hw *ah) sc->debug.debugfs_phy = debugfs_create_dir("ath9k", sc->hw->wiphy->debugfsdir); - if (!sc->debug.debugfs_phy) - return -ENOMEM; #ifdef CONFIG_ATH_DEBUG debugfs_create_file("debug", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c index 4626122f454a..51b5ba0ed954 100644 --- a/drivers/net/wireless/ath/ath9k/hif_usb.c +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c @@ -687,8 +687,7 @@ static void ath9k_hif_usb_rx_cb(struct urb *urb) } resubmit: - skb_reset_tail_pointer(skb); - skb_trim(skb, 0); + __skb_set_length(skb, 0); usb_anchor_urb(urb, &hif_dev->rx_submitted); ret = usb_submit_urb(urb, GFP_ATOMIC); @@ -725,8 +724,7 @@ static void ath9k_hif_usb_reg_in_cb(struct urb *urb) case -ESHUTDOWN: goto free_skb; default: - skb_reset_tail_pointer(skb); - skb_trim(skb, 0); + __skb_set_length(skb, 0); goto resubmit; } diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c index 957d818b16cf..67025511ae3a 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c @@ -491,8 +491,6 @@ int ath9k_htc_init_debug(struct ath_hw *ah) priv->debug.debugfs_phy = debugfs_create_dir(KBUILD_MODNAME, priv->hw->wiphy->debugfsdir); - if (IS_ERR(priv->debug.debugfs_phy)) - return -ENOMEM; ath9k_cmn_spectral_init_debug(&priv->spec_priv, priv->debug.debugfs_phy); diff --git a/drivers/net/wireless/intel/iwlegacy/common.c b/drivers/net/wireless/intel/iwlegacy/common.c index 3ca84577803c..47223d923f84 100644 --- a/drivers/net/wireless/intel/iwlegacy/common.c +++ b/drivers/net/wireless/intel/iwlegacy/common.c @@ -4985,6 +4985,8 @@ il_pci_resume(struct device *device) */ pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00); + _il_wr(il, CSR_INT, 0xffffffff); + _il_wr(il, CSR_FH_INT_STATUS, 0xffffffff); il_enable_interrupts(il); if (!(_il_rd(il, CSR_GP_CNTRL) & CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW)) diff --git a/drivers/net/wireless/marvell/mwifiex/fw.h b/drivers/net/wireless/marvell/mwifiex/fw.h index 99b40bc6e7a6..4181aceda054 100644 --- a/drivers/net/wireless/marvell/mwifiex/fw.h +++ b/drivers/net/wireless/marvell/mwifiex/fw.h @@ -1575,7 +1575,7 @@ struct host_cmd_ds_802_11_scan_rsp { struct host_cmd_ds_802_11_scan_ext { u32 reserved; - u8 tlv_buffer[1]; + u8 tlv_buffer[]; } __packed; struct mwifiex_ie_types_bss_mode { diff --git a/drivers/net/wireless/marvell/mwifiex/scan.c b/drivers/net/wireless/marvell/mwifiex/scan.c index a95b1368dad7..a21d98ad01b3 100644 --- a/drivers/net/wireless/marvell/mwifiex/scan.c +++ b/drivers/net/wireless/marvell/mwifiex/scan.c @@ -2566,8 +2566,7 @@ int mwifiex_ret_802_11_scan_ext(struct mwifiex_private *priv, ext_scan_resp = &resp->params.ext_scan; tlv = (void *)ext_scan_resp->tlv_buffer; - buf_left = le16_to_cpu(resp->size) - (sizeof(*ext_scan_resp) + S_DS_GEN - - 1); + buf_left = le16_to_cpu(resp->size) - (sizeof(*ext_scan_resp) + S_DS_GEN); while (buf_left >= sizeof(struct mwifiex_ie_types_header)) { type = le16_to_cpu(tlv->type); diff --git a/drivers/ntb/hw/intel/ntb_hw_intel.c b/drivers/ntb/hw/intel/ntb_hw_intel.c index 6b1484b4351d..e97c0d31ab1c 100644 --- a/drivers/ntb/hw/intel/ntb_hw_intel.c +++ b/drivers/ntb/hw/intel/ntb_hw_intel.c @@ -1024,7 +1024,7 @@ static void ndev_init_debugfs(struct intel_ntb_dev *ndev) ndev->debugfs_dir = debugfs_create_dir(pci_name(ndev->ntb.pdev), debugfs_dir); - if (!ndev->debugfs_dir) + if (IS_ERR(ndev->debugfs_dir)) ndev->debugfs_info = NULL; else ndev->debugfs_info = diff --git a/drivers/of/irq.c b/drivers/of/irq.c index c70b3ffd88f5..432763837169 100644 --- a/drivers/of/irq.c +++ b/drivers/of/irq.c @@ -307,8 +307,8 @@ int of_irq_parse_one(struct device_node *device, int index, struct of_phandle_ar addr = of_get_property(device, "reg", &addr_len); /* Prevent out-of-bounds read in case of longer interrupt parent address size */ - if (addr_len > (3 * sizeof(__be32))) - addr_len = 3 * sizeof(__be32); + if (addr_len > sizeof(addr_buf)) + addr_len = sizeof(addr_buf); if (addr) memcpy(addr_buf, addr, addr_len); @@ -646,8 +646,7 @@ struct irq_domain *of_msi_map_get_device_domain(struct device *dev, u32 rid) * @np: device node for @dev * @token: bus type for this domain * - * Parse the msi-parent property (both the simple and the complex - * versions), and returns the corresponding MSI domain. + * Parse the msi-parent property and returns the corresponding MSI domain. * * Returns: the MSI domain for this device (or NULL on failure). */ @@ -655,33 +654,14 @@ struct irq_domain *of_msi_get_domain(struct device *dev, struct device_node *np, enum irq_domain_bus_token token) { - struct device_node *msi_np; + struct of_phandle_iterator it; struct irq_domain *d; + int err; - /* Check for a single msi-parent property */ - msi_np = of_parse_phandle(np, "msi-parent", 0); - if (msi_np && !of_property_read_bool(msi_np, "#msi-cells")) { - d = irq_find_matching_host(msi_np, token); - if (!d) - of_node_put(msi_np); - return d; - } - - if (token == DOMAIN_BUS_PLATFORM_MSI) { - /* Check for the complex msi-parent version */ - struct of_phandle_args args; - int index = 0; - - while (!of_parse_phandle_with_args(np, "msi-parent", - "#msi-cells", - index, &args)) { - d = irq_find_matching_host(args.np, token); - if (d) - return d; - - of_node_put(args.np); - index++; - } + of_for_each_phandle(&it, err, np, "msi-parent", "#msi-cells", 0) { + d = irq_find_matching_host(it.node, token); + if (d) + return d; } return NULL; diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c index 595e23e6859b..c193d657f0ab 100644 --- a/drivers/parport/procfs.c +++ b/drivers/parport/procfs.c @@ -51,12 +51,12 @@ static int do_active_device(struct ctl_table *table, int write, for (dev = port->devices; dev ; dev = dev->next) { if(dev == port->cad) { - len += snprintf(buffer, sizeof(buffer), "%s\n", dev->name); + len += scnprintf(buffer, sizeof(buffer), "%s\n", dev->name); } } if(!len) { - len += snprintf(buffer, sizeof(buffer), "%s\n", "none"); + len += scnprintf(buffer, sizeof(buffer), "%s\n", "none"); } if (len > *lenp) @@ -87,19 +87,19 @@ static int do_autoprobe(struct ctl_table *table, int write, } if ((str = info->class_name) != NULL) - len += snprintf (buffer + len, sizeof(buffer) - len, "CLASS:%s;\n", str); + len += scnprintf (buffer + len, sizeof(buffer) - len, "CLASS:%s;\n", str); if ((str = info->model) != NULL) - len += snprintf (buffer + len, sizeof(buffer) - len, "MODEL:%s;\n", str); + len += scnprintf (buffer + len, sizeof(buffer) - len, "MODEL:%s;\n", str); if ((str = info->mfr) != NULL) - len += snprintf (buffer + len, sizeof(buffer) - len, "MANUFACTURER:%s;\n", str); + len += scnprintf (buffer + len, sizeof(buffer) - len, "MANUFACTURER:%s;\n", str); if ((str = info->description) != NULL) - len += snprintf (buffer + len, sizeof(buffer) - len, "DESCRIPTION:%s;\n", str); + len += scnprintf (buffer + len, sizeof(buffer) - len, "DESCRIPTION:%s;\n", str); if ((str = info->cmdset) != NULL) - len += snprintf (buffer + len, sizeof(buffer) - len, "COMMAND SET:%s;\n", str); + len += scnprintf (buffer + len, sizeof(buffer) - len, "COMMAND SET:%s;\n", str); if (len > *lenp) len = *lenp; @@ -128,7 +128,7 @@ static int do_hardware_base_addr(struct ctl_table *table, int write, if (write) /* permissions prevent this anyway */ return -EACCES; - len += snprintf (buffer, sizeof(buffer), "%lu\t%lu\n", port->base, port->base_hi); + len += scnprintf (buffer, sizeof(buffer), "%lu\t%lu\n", port->base, port->base_hi); if (len > *lenp) len = *lenp; @@ -156,7 +156,7 @@ static int do_hardware_irq(struct ctl_table *table, int write, if (write) /* permissions prevent this anyway */ return -EACCES; - len += snprintf (buffer, sizeof(buffer), "%d\n", port->irq); + len += scnprintf (buffer, sizeof(buffer), "%d\n", port->irq); if (len > *lenp) len = *lenp; @@ -184,7 +184,7 @@ static int do_hardware_dma(struct ctl_table *table, int write, if (write) /* permissions prevent this anyway */ return -EACCES; - len += snprintf (buffer, sizeof(buffer), "%d\n", port->dma); + len += scnprintf (buffer, sizeof(buffer), "%d\n", port->dma); if (len > *lenp) len = *lenp; @@ -216,7 +216,7 @@ static int do_hardware_modes(struct ctl_table *table, int write, #define printmode(x) \ do { \ if (port->modes & PARPORT_MODE_##x) \ - len += snprintf(buffer + len, sizeof(buffer) - len, "%s%s", f++ ? "," : "", #x); \ + len += scnprintf(buffer + len, sizeof(buffer) - len, "%s%s", f++ ? "," : "", #x); \ } while (0) int f = 0; printmode(PCSPP); diff --git a/drivers/pci/host/pcie-xilinx-nwl.c b/drivers/pci/host/pcie-xilinx-nwl.c index 6812a1b49fa8..74698975ffe3 100644 --- a/drivers/pci/host/pcie-xilinx-nwl.c +++ b/drivers/pci/host/pcie-xilinx-nwl.c @@ -81,8 +81,8 @@ #define MSGF_MISC_SR_NON_FATAL_DEV BIT(22) #define MSGF_MISC_SR_FATAL_DEV BIT(23) #define MSGF_MISC_SR_LINK_DOWN BIT(24) -#define MSGF_MSIC_SR_LINK_AUTO_BWIDTH BIT(25) -#define MSGF_MSIC_SR_LINK_BWIDTH BIT(26) +#define MSGF_MISC_SR_LINK_AUTO_BWIDTH BIT(25) +#define MSGF_MISC_SR_LINK_BWIDTH BIT(26) #define MSGF_MISC_SR_MASKALL (MSGF_MISC_SR_RXMSG_AVAIL | \ MSGF_MISC_SR_RXMSG_OVER | \ @@ -97,8 +97,8 @@ MSGF_MISC_SR_NON_FATAL_DEV | \ MSGF_MISC_SR_FATAL_DEV | \ MSGF_MISC_SR_LINK_DOWN | \ - MSGF_MSIC_SR_LINK_AUTO_BWIDTH | \ - MSGF_MSIC_SR_LINK_BWIDTH) + MSGF_MISC_SR_LINK_AUTO_BWIDTH | \ + MSGF_MISC_SR_LINK_BWIDTH) /* Legacy interrupt status mask bits */ #define MSGF_LEG_SR_INTA BIT(0) @@ -310,10 +310,10 @@ static irqreturn_t nwl_pcie_misc_handler(int irq, void *data) if (misc_stat & MSGF_MISC_SR_FATAL_DEV) dev_err(dev, "Fatal Error Detected\n"); - if (misc_stat & MSGF_MSIC_SR_LINK_AUTO_BWIDTH) + if (misc_stat & MSGF_MISC_SR_LINK_AUTO_BWIDTH) dev_info(dev, "Link Autonomous Bandwidth Management Status bit set\n"); - if (misc_stat & MSGF_MSIC_SR_LINK_BWIDTH) + if (misc_stat & MSGF_MISC_SR_LINK_BWIDTH) dev_info(dev, "Link Bandwidth Management Status bit set\n"); /* Clear misc interrupt status */ @@ -386,14 +386,12 @@ static void nwl_pcie_msi_handler_low(struct irq_desc *desc) static void nwl_mask_leg_irq(struct irq_data *data) { - struct irq_desc *desc = irq_to_desc(data->irq); - struct nwl_pcie *pcie; + struct nwl_pcie *pcie = irq_data_get_irq_chip_data(data); unsigned long flags; u32 mask; u32 val; - pcie = irq_desc_get_chip_data(desc); - mask = 1 << (data->hwirq - 1); + mask = 1 << data->hwirq; raw_spin_lock_irqsave(&pcie->leg_mask_lock, flags); val = nwl_bridge_readl(pcie, MSGF_LEG_MASK); nwl_bridge_writel(pcie, (val & (~mask)), MSGF_LEG_MASK); @@ -402,14 +400,12 @@ static void nwl_mask_leg_irq(struct irq_data *data) static void nwl_unmask_leg_irq(struct irq_data *data) { - struct irq_desc *desc = irq_to_desc(data->irq); - struct nwl_pcie *pcie; + struct nwl_pcie *pcie = irq_data_get_irq_chip_data(data); unsigned long flags; u32 mask; u32 val; - pcie = irq_desc_get_chip_data(desc); - mask = 1 << (data->hwirq - 1); + mask = 1 << data->hwirq; raw_spin_lock_irqsave(&pcie->leg_mask_lock, flags); val = nwl_bridge_readl(pcie, MSGF_LEG_MASK); nwl_bridge_writel(pcie, (val | mask), MSGF_LEG_MASK); diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index c42d12d97040..44aa8e5c1fd7 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4007,6 +4007,10 @@ static void quirk_dma_func0_alias(struct pci_dev *dev) DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe832, quirk_dma_func0_alias); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe476, quirk_dma_func0_alias); +/* Some Glenfly chips use function 0 as the PCIe Requester ID for DMA */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GLENFLY, 0x3d40, quirk_dma_func0_alias); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GLENFLY, 0x3d41, quirk_dma_func0_alias); + static void quirk_dma_func1_alias(struct pci_dev *dev) { if (PCI_FUNC(dev->devfn) != 1) diff --git a/drivers/pinctrl/mvebu/pinctrl-dove.c b/drivers/pinctrl/mvebu/pinctrl-dove.c index 8472f61f2bbe..c15f08fab0bb 100644 --- a/drivers/pinctrl/mvebu/pinctrl-dove.c +++ b/drivers/pinctrl/mvebu/pinctrl-dove.c @@ -773,7 +773,7 @@ static int dove_pinctrl_probe(struct platform_device *pdev) of_match_device(dove_pinctrl_of_match, &pdev->dev); struct mvebu_mpp_ctrl_data *mpp_data; void __iomem *base; - int i; + int i, ret; pdev->dev.platform_data = (void *)match->data; @@ -790,13 +790,17 @@ static int dove_pinctrl_probe(struct platform_device *pdev) mpp_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); base = devm_ioremap_resource(&pdev->dev, mpp_res); - if (IS_ERR(base)) - return PTR_ERR(base); + if (IS_ERR(base)) { + ret = PTR_ERR(base); + goto err_probe; + } mpp_data = devm_kcalloc(&pdev->dev, dove_pinctrl_info.ncontrols, sizeof(*mpp_data), GFP_KERNEL); - if (!mpp_data) - return -ENOMEM; + if (!mpp_data) { + ret = -ENOMEM; + goto err_probe; + } dove_pinctrl_info.control_data = mpp_data; for (i = 0; i < ARRAY_SIZE(dove_mpp_controls); i++) @@ -815,8 +819,10 @@ static int dove_pinctrl_probe(struct platform_device *pdev) } mpp4_base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(mpp4_base)) - return PTR_ERR(mpp4_base); + if (IS_ERR(mpp4_base)) { + ret = PTR_ERR(mpp4_base); + goto err_probe; + } res = platform_get_resource(pdev, IORESOURCE_MEM, 2); if (!res) { @@ -827,8 +833,10 @@ static int dove_pinctrl_probe(struct platform_device *pdev) } pmu_base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(pmu_base)) - return PTR_ERR(pmu_base); + if (IS_ERR(pmu_base)) { + ret = PTR_ERR(pmu_base); + goto err_probe; + } gconfmap = syscon_regmap_lookup_by_compatible("marvell,dove-global-config"); if (IS_ERR(gconfmap)) { @@ -838,12 +846,17 @@ static int dove_pinctrl_probe(struct platform_device *pdev) adjust_resource(&fb_res, (mpp_res->start & INT_REGS_MASK) + GC_REGS_OFFS, 0x14); gc_base = devm_ioremap_resource(&pdev->dev, &fb_res); - if (IS_ERR(gc_base)) - return PTR_ERR(gc_base); + if (IS_ERR(gc_base)) { + ret = PTR_ERR(gc_base); + goto err_probe; + } + gconfmap = devm_regmap_init_mmio(&pdev->dev, gc_base, &gc_regmap_config); - if (IS_ERR(gconfmap)) - return PTR_ERR(gconfmap); + if (IS_ERR(gconfmap)) { + ret = PTR_ERR(gconfmap); + goto err_probe; + } } /* Warn on any missing DT resource */ @@ -851,6 +864,9 @@ static int dove_pinctrl_probe(struct platform_device *pdev) dev_warn(&pdev->dev, FW_BUG "Missing pinctrl regs in DTB. Please update your firmware.\n"); return mvebu_pinctrl_probe(pdev); +err_probe: + clk_disable_unprepare(clk); + return ret; } static struct platform_driver dove_pinctrl_driver = { diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c index 3173e1f5bcb6..729bd2e796d6 100644 --- a/drivers/pinctrl/pinctrl-at91.c +++ b/drivers/pinctrl/pinctrl-at91.c @@ -1282,8 +1282,11 @@ static int at91_pinctrl_probe(struct platform_device *pdev) /* We will handle a range of GPIO pins */ for (i = 0; i < gpio_banks; i++) - if (gpio_chips[i]) + if (gpio_chips[i]) { pinctrl_add_gpio_range(info->pctl, &gpio_chips[i]->range); + gpiochip_add_pin_range(&gpio_chips[i]->chip, dev_name(info->pctl->dev), 0, + gpio_chips[i]->range.pin_base, gpio_chips[i]->range.npins); + } dev_info(&pdev->dev, "initialized AT91 pinctrl driver\n"); diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c index 09d10a3995dc..d796de3de9b6 100644 --- a/drivers/pinctrl/pinctrl-single.c +++ b/drivers/pinctrl/pinctrl-single.c @@ -1784,7 +1784,8 @@ static int pcs_probe(struct platform_device *pdev) dev_info(pcs->dev, "%i pins at pa %p size %u\n", pcs->desc.npins, pcs->base, pcs->size); - if (pinctrl_enable(pcs->pctl)) + ret = pinctrl_enable(pcs->pctl); + if (ret) goto free; return 0; diff --git a/drivers/power/reset/brcmstb-reboot.c b/drivers/power/reset/brcmstb-reboot.c index 884b53c483c0..9f8b9e5cad93 100644 --- a/drivers/power/reset/brcmstb-reboot.c +++ b/drivers/power/reset/brcmstb-reboot.c @@ -72,9 +72,6 @@ static int brcmstb_restart_handler(struct notifier_block *this, return NOTIFY_DONE; } - while (1) - ; - return NOTIFY_DONE; } diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c index 4c8c86f8de3e..f1d11c972e1d 100644 --- a/drivers/power/supply/max17042_battery.c +++ b/drivers/power/supply/max17042_battery.c @@ -825,7 +825,10 @@ static void max17042_set_soc_threshold(struct max17042_chip *chip, u16 off) /* program interrupt thesholds such that we should * get interrupt for every 'off' perc change in the soc */ - regmap_read(map, MAX17042_RepSOC, &soc); + if (chip->pdata->enable_current_sense) + regmap_read(map, MAX17042_RepSOC, &soc); + else + regmap_read(map, MAX17042_VFSOC, &soc); soc >>= 8; soc_tr = (soc + off) << 8; if (off < soc) diff --git a/drivers/reset/reset-berlin.c b/drivers/reset/reset-berlin.c index 371197bbd055..542d32719b8a 100644 --- a/drivers/reset/reset-berlin.c +++ b/drivers/reset/reset-berlin.c @@ -68,13 +68,14 @@ static int berlin_reset_xlate(struct reset_controller_dev *rcdev, static int berlin2_reset_probe(struct platform_device *pdev) { - struct device_node *parent_np = of_get_parent(pdev->dev.of_node); + struct device_node *parent_np; struct berlin_reset_priv *priv; priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; + parent_np = of_get_parent(pdev->dev.of_node); priv->regmap = syscon_node_to_regmap(parent_np); of_node_put(parent_np); if (IS_ERR(priv->regmap)) diff --git a/drivers/s390/char/sclp_vt220.c b/drivers/s390/char/sclp_vt220.c index 0b9a83d51e2b..9251560fa466 100644 --- a/drivers/s390/char/sclp_vt220.c +++ b/drivers/s390/char/sclp_vt220.c @@ -325,7 +325,7 @@ sclp_vt220_add_msg(struct sclp_vt220_request *request, buffer = (void *) ((addr_t) sccb + sccb->header.length); if (convertlf) { - /* Perform Linefeed conversion (0x0a -> 0x0a 0x0d)*/ + /* Perform Linefeed conversion (0x0a -> 0x0d 0x0a)*/ for (from=0, to=0; (from < count) && (to < sclp_vt220_space_left(request)); from++) { @@ -334,8 +334,8 @@ sclp_vt220_add_msg(struct sclp_vt220_request *request, /* Perform conversion */ if (c == 0x0a) { if (to + 1 < sclp_vt220_space_left(request)) { - ((unsigned char *) buffer)[to++] = c; ((unsigned char *) buffer)[to++] = 0x0d; + ((unsigned char *) buffer)[to++] = c; } else break; diff --git a/drivers/soc/versatile/soc-integrator.c b/drivers/soc/versatile/soc-integrator.c index a5d7d39ae0ad..5ffad35dfb19 100644 --- a/drivers/soc/versatile/soc-integrator.c +++ b/drivers/soc/versatile/soc-integrator.c @@ -115,6 +115,7 @@ static int __init integrator_soc_init(void) return -ENODEV; syscon_regmap = syscon_node_to_regmap(np); + of_node_put(np); if (IS_ERR(syscon_regmap)) return PTR_ERR(syscon_regmap); diff --git a/drivers/soc/versatile/soc-realview.c b/drivers/soc/versatile/soc-realview.c index caf698e5f0b0..a9220701c190 100644 --- a/drivers/soc/versatile/soc-realview.c +++ b/drivers/soc/versatile/soc-realview.c @@ -8,6 +8,7 @@ * published by the Free Software Foundation. * */ +#include #include #include #include @@ -83,6 +84,13 @@ static ssize_t realview_get_build(struct device *dev, static struct device_attribute realview_build_attr = __ATTR(build, S_IRUGO, realview_get_build, NULL); +static void realview_soc_socdev_release(void *data) +{ + struct soc_device *soc_dev = data; + + soc_device_unregister(soc_dev); +} + static int realview_soc_probe(struct platform_device *pdev) { struct regmap *syscon_regmap; @@ -95,7 +103,7 @@ static int realview_soc_probe(struct platform_device *pdev) if (IS_ERR(syscon_regmap)) return PTR_ERR(syscon_regmap); - soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); + soc_dev_attr = devm_kzalloc(&pdev->dev, sizeof(*soc_dev_attr), GFP_KERNEL); if (!soc_dev_attr) return -ENOMEM; @@ -107,10 +115,14 @@ static int realview_soc_probe(struct platform_device *pdev) soc_dev_attr->machine = "RealView"; soc_dev_attr->family = "Versatile"; soc_dev = soc_device_register(soc_dev_attr); - if (IS_ERR(soc_dev)) { - kfree(soc_dev_attr); + if (IS_ERR(soc_dev)) return -ENODEV; - } + + ret = devm_add_action_or_reset(&pdev->dev, realview_soc_socdev_release, + soc_dev); + if (ret) + return ret; + ret = regmap_read(syscon_regmap, REALVIEW_SYS_ID_OFFSET, &realview_coreid); if (ret) diff --git a/drivers/spi/spi-bcm63xx.c b/drivers/spi/spi-bcm63xx.c index cc6ec3fb5bfd..0c5fd0fe2a2a 100644 --- a/drivers/spi/spi-bcm63xx.c +++ b/drivers/spi/spi-bcm63xx.c @@ -484,12 +484,14 @@ static const struct platform_device_id bcm63xx_spi_dev_match[] = { { }, }; +MODULE_DEVICE_TABLE(platform, bcm63xx_spi_dev_match); static const struct of_device_id bcm63xx_spi_of_match[] = { { .compatible = "brcm,bcm6348-spi", .data = &bcm6348_spi_reg_offsets }, { .compatible = "brcm,bcm6358-spi", .data = &bcm6358_spi_reg_offsets }, { }, }; +MODULE_DEVICE_TABLE(of, bcm63xx_spi_of_match); static int bcm63xx_spi_probe(struct platform_device *pdev) { diff --git a/drivers/spi/spi-ppc4xx.c b/drivers/spi/spi-ppc4xx.c index 58765a62fc15..7e8fc572f26c 100644 --- a/drivers/spi/spi-ppc4xx.c +++ b/drivers/spi/spi-ppc4xx.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -494,7 +493,11 @@ static int spi_ppc4xx_of_probe(struct platform_device *op) } /* Request IRQ */ - hw->irqnum = irq_of_parse_and_map(np, 0); + ret = platform_get_irq(op, 0); + if (ret < 0) + goto free_host; + hw->irqnum = ret; + ret = request_irq(hw->irqnum, spi_ppc4xx_int, 0, "spi_ppc4xx_of", (void *)hw); if (ret) { diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c index 0594e214a636..edd8c6b62cea 100644 --- a/drivers/spi/spi-s3c64xx.c +++ b/drivers/spi/spi-s3c64xx.c @@ -222,7 +222,7 @@ static void flush_fifo(struct s3c64xx_spi_driver_data *sdd) loops = msecs_to_loops(1); do { val = readl(regs + S3C64XX_SPI_STATUS); - } while (TX_FIFO_LVL(val, sdd) && loops--); + } while (TX_FIFO_LVL(val, sdd) && --loops); if (loops == 0) dev_warn(&sdd->pdev->dev, "Timed out flushing TX FIFO\n"); @@ -235,7 +235,7 @@ static void flush_fifo(struct s3c64xx_spi_driver_data *sdd) readl(regs + S3C64XX_SPI_RX_DATA); else break; - } while (loops--); + } while (--loops); if (loops == 0) dev_warn(&sdd->pdev->dev, "Timed out flushing RX FIFO\n"); diff --git a/drivers/staging/iio/frequency/ad9834.c b/drivers/staging/iio/frequency/ad9834.c index 995acdd7c942..fda5a97edc79 100644 --- a/drivers/staging/iio/frequency/ad9834.c +++ b/drivers/staging/iio/frequency/ad9834.c @@ -6,6 +6,7 @@ * Licensed under the GPL-2. */ +#include #include #include #include @@ -71,7 +72,7 @@ struct ad9834_state { struct spi_device *spi; struct regulator *reg; - unsigned int mclk; + struct clk *mclk; unsigned short control; unsigned short devid; struct spi_transfer xfer; @@ -110,12 +111,15 @@ static unsigned int ad9834_calc_freqreg(unsigned long mclk, unsigned long fout) static int ad9834_write_frequency(struct ad9834_state *st, unsigned long addr, unsigned long fout) { + unsigned long clk_freq; unsigned long regval; - if (fout > (st->mclk / 2)) + clk_freq = clk_get_rate(st->mclk); + + if (!clk_freq || fout > (clk_freq / 2)) return -EINVAL; - regval = ad9834_calc_freqreg(st->mclk, fout); + regval = ad9834_calc_freqreg(clk_freq, fout); st->freq_data[0] = cpu_to_be16(addr | (regval & RES_MASK(AD9834_FREQ_BITS / 2))); @@ -391,16 +395,11 @@ static const struct iio_info ad9833_info = { static int ad9834_probe(struct spi_device *spi) { - struct ad9834_platform_data *pdata = dev_get_platdata(&spi->dev); struct ad9834_state *st; struct iio_dev *indio_dev; struct regulator *reg; int ret; - if (!pdata) { - dev_dbg(&spi->dev, "no platform data?\n"); - return -ENODEV; - } reg = devm_regulator_get(&spi->dev, "avdd"); if (IS_ERR(reg)) @@ -420,7 +419,14 @@ static int ad9834_probe(struct spi_device *spi) spi_set_drvdata(spi, indio_dev); st = iio_priv(indio_dev); mutex_init(&st->lock); - st->mclk = pdata->mclk; + st->mclk = devm_clk_get(&spi->dev, NULL); + + ret = clk_prepare_enable(st->mclk); + if (ret) { + dev_err(&spi->dev, "Failed to enable master clock\n"); + goto error_disable_reg; + } + st->spi = spi; st->devid = spi_get_device_id(spi)->driver_data; st->reg = reg; @@ -456,42 +462,41 @@ static int ad9834_probe(struct spi_device *spi) spi_message_add_tail(&st->freq_xfer[1], &st->freq_msg); st->control = AD9834_B28 | AD9834_RESET; + st->control |= AD9834_DIV2; - if (!pdata->en_div2) - st->control |= AD9834_DIV2; - - if (!pdata->en_signbit_msb_out && (st->devid == ID_AD9834)) + if (st->devid == ID_AD9834) st->control |= AD9834_SIGN_PIB; st->data = cpu_to_be16(AD9834_REG_CMD | st->control); ret = spi_sync(st->spi, &st->msg); if (ret) { dev_err(&spi->dev, "device init failed\n"); - goto error_disable_reg; + goto error_clock_unprepare; } - ret = ad9834_write_frequency(st, AD9834_REG_FREQ0, pdata->freq0); + ret = ad9834_write_frequency(st, AD9834_REG_FREQ0, 1000000); if (ret) - goto error_disable_reg; + goto error_clock_unprepare; - ret = ad9834_write_frequency(st, AD9834_REG_FREQ1, pdata->freq1); + ret = ad9834_write_frequency(st, AD9834_REG_FREQ1, 5000000); if (ret) - goto error_disable_reg; + goto error_clock_unprepare; - ret = ad9834_write_phase(st, AD9834_REG_PHASE0, pdata->phase0); + ret = ad9834_write_phase(st, AD9834_REG_PHASE0, 512); if (ret) - goto error_disable_reg; + goto error_clock_unprepare; - ret = ad9834_write_phase(st, AD9834_REG_PHASE1, pdata->phase1); + ret = ad9834_write_phase(st, AD9834_REG_PHASE1, 1024); if (ret) - goto error_disable_reg; + goto error_clock_unprepare; ret = iio_device_register(indio_dev); if (ret) - goto error_disable_reg; + goto error_clock_unprepare; return 0; - +error_clock_unprepare: + clk_disable_unprepare(st->mclk); error_disable_reg: regulator_disable(reg); @@ -504,6 +509,7 @@ static int ad9834_remove(struct spi_device *spi) struct ad9834_state *st = iio_priv(indio_dev); iio_device_unregister(indio_dev); + clk_disable_unprepare(st->mclk); regulator_disable(st->reg); return 0; diff --git a/drivers/staging/iio/frequency/ad9834.h b/drivers/staging/iio/frequency/ad9834.h index ae620f38eb49..da7e83ceedad 100644 --- a/drivers/staging/iio/frequency/ad9834.h +++ b/drivers/staging/iio/frequency/ad9834.h @@ -8,32 +8,4 @@ #ifndef IIO_DDS_AD9834_H_ #define IIO_DDS_AD9834_H_ -/* - * TODO: struct ad7887_platform_data needs to go into include/linux/iio - */ - -/** - * struct ad9834_platform_data - platform specific information - * @mclk: master clock in Hz - * @freq0: power up freq0 tuning word in Hz - * @freq1: power up freq1 tuning word in Hz - * @phase0: power up phase0 value [0..4095] correlates with 0..2PI - * @phase1: power up phase1 value [0..4095] correlates with 0..2PI - * @en_div2: digital output/2 is passed to the SIGN BIT OUT pin - * @en_signbit_msb_out: the MSB (or MSB/2) of the DAC data is connected to the - * SIGN BIT OUT pin. en_div2 controls whether it is the MSB - * or MSB/2 that is output. if en_signbit_msb_out=false, - * the on-board comparator is connected to SIGN BIT OUT - */ - -struct ad9834_platform_data { - unsigned int mclk; - unsigned int freq0; - unsigned int freq1; - unsigned short phase0; - unsigned short phase1; - bool en_div2; - bool en_signbit_msb_out; -}; - #endif /* IIO_DDS_AD9834_H_ */ diff --git a/drivers/tty/serial/rp2.c b/drivers/tty/serial/rp2.c index b7d1b1645c84..914c4df1ac55 100644 --- a/drivers/tty/serial/rp2.c +++ b/drivers/tty/serial/rp2.c @@ -603,8 +603,8 @@ static void rp2_reset_asic(struct rp2_card *card, unsigned int asic_id) u32 clk_cfg; writew(1, base + RP2_GLOBAL_CMD); - readw(base + RP2_GLOBAL_CMD); msleep(100); + readw(base + RP2_GLOBAL_CMD); writel(0, base + RP2_CLK_PRESCALER); /* TDM clock configuration */ diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index 535d3816fda1..0b223d228715 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -84,7 +84,7 @@ static int hw_device_state(struct ci_hdrc *ci, u32 dma) hw_write(ci, OP_ENDPTLISTADDR, ~0, dma); /* interrupt, error, port change, reset, sleep/suspend */ hw_write(ci, OP_USBINTR, ~0, - USBi_UI|USBi_UEI|USBi_PCI|USBi_URI|USBi_SLI); + USBi_UI|USBi_UEI|USBi_PCI|USBi_URI); } else { hw_write(ci, OP_USBINTR, ~0, 0); } @@ -751,6 +751,7 @@ __releases(ci->lock) __acquires(ci->lock) { int retval; + u32 intr; spin_unlock(&ci->lock); if (ci->gadget.speed != USB_SPEED_UNKNOWN) @@ -764,6 +765,11 @@ __acquires(ci->lock) if (retval) goto done; + /* clear SLI */ + hw_write(ci, OP_USBSTS, USBi_SLI, USBi_SLI); + intr = hw_read(ci, OP_USBINTR, ~0); + hw_write(ci, OP_USBINTR, ~0, intr | USBi_SLI); + ci->status = usb_ep_alloc_request(&ci->ep0in->ep, GFP_ATOMIC); if (ci->status == NULL) retval = -ENOMEM; diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index f9de602a0c00..2a208e086b94 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -65,6 +65,7 @@ #define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI 0x1142 #define PCI_DEVICE_ID_ASMEDIA_1142_XHCI 0x1242 #define PCI_DEVICE_ID_ASMEDIA_2142_XHCI 0x2142 +#define PCI_DEVICE_ID_ASMEDIA_3042_XHCI 0x3042 #define PCI_DEVICE_ID_ASMEDIA_3242_XHCI 0x3242 static const char hcd_name[] = "xhci_hcd"; @@ -269,6 +270,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) pdev->device == PCI_DEVICE_ID_ASMEDIA_1042A_XHCI) xhci->quirks |= XHCI_ASMEDIA_MODIFY_FLOWCONTROL; + if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && + pdev->device == PCI_DEVICE_ID_ASMEDIA_3042_XHCI) + xhci->quirks |= XHCI_RESET_ON_RESUME; + if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7; diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index d712b13a5ae2..9a6cc5c4f040 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -1446,6 +1446,14 @@ static void handle_cmd_completion(struct xhci_hcd *xhci, trace_xhci_handle_command(xhci->cmd_ring, &cmd_trb->generic); + cmd_comp_code = GET_COMP_CODE(le32_to_cpu(event->status)); + + /* If CMD ring stopped we own the trbs between enqueue and dequeue */ + if (cmd_comp_code == COMP_COMMAND_RING_STOPPED) { + complete_all(&xhci->cmd_ring_stop_completion); + return; + } + cmd_dequeue_dma = xhci_trb_virt_to_dma(xhci->cmd_ring->deq_seg, cmd_trb); /* @@ -1462,14 +1470,6 @@ static void handle_cmd_completion(struct xhci_hcd *xhci, cancel_delayed_work(&xhci->cmd_timer); - cmd_comp_code = GET_COMP_CODE(le32_to_cpu(event->status)); - - /* If CMD ring stopped we own the trbs between enqueue and dequeue */ - if (cmd_comp_code == COMP_COMMAND_RING_STOPPED) { - complete_all(&xhci->cmd_ring_stop_completion); - return; - } - if (cmd->command_trb != xhci->cmd_ring->dequeue) { xhci_err(xhci, "Command completion event does not match command\n"); diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 99cc51d2d931..0538b9c7fbb2 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1262,7 +1262,7 @@ enum xhci_setup_dev { /* Set TR Dequeue Pointer command TRB fields, 6.4.3.9 */ #define TRB_TO_STREAM_ID(p) ((((p) & (0xffff << 16)) >> 16)) #define STREAM_ID_FOR_TRB(p) ((((p)) & 0xffff) << 16) -#define SCT_FOR_TRB(p) (((p) << 1) & 0x7) +#define SCT_FOR_TRB(p) (((p) & 0x7) << 1) /* Link TRB specific fields */ #define TRB_TC (1<<1) diff --git a/drivers/usb/misc/appledisplay.c b/drivers/usb/misc/appledisplay.c index aad7963e40e7..7d642e26ac89 100644 --- a/drivers/usb/misc/appledisplay.c +++ b/drivers/usb/misc/appledisplay.c @@ -123,7 +123,12 @@ static void appledisplay_complete(struct urb *urb) case ACD_BTN_BRIGHT_UP: case ACD_BTN_BRIGHT_DOWN: pdata->button_pressed = 1; - schedule_delayed_work(&pdata->work, 0); + /* + * there is a window during which no device + * is registered + */ + if (pdata->bd ) + schedule_delayed_work(&pdata->work, 0); break; case ACD_BTN_NONE: default: @@ -220,6 +225,7 @@ static int appledisplay_probe(struct usb_interface *iface, const struct usb_device_id *id) { struct backlight_properties props; + struct backlight_device *backlight; struct appledisplay *pdata; struct usb_device *udev = interface_to_usbdev(iface); struct usb_endpoint_descriptor *endpoint; @@ -290,13 +296,14 @@ static int appledisplay_probe(struct usb_interface *iface, memset(&props, 0, sizeof(struct backlight_properties)); props.type = BACKLIGHT_RAW; props.max_brightness = 0xff; - pdata->bd = backlight_device_register(bl_name, NULL, pdata, + backlight = backlight_device_register(bl_name, NULL, pdata, &appledisplay_bl_data, &props); - if (IS_ERR(pdata->bd)) { + if (IS_ERR(backlight)) { dev_err(&iface->dev, "Backlight registration failed\n"); - retval = PTR_ERR(pdata->bd); + retval = PTR_ERR(backlight); goto error; } + pdata->bd = backlight; /* Try to get brightness */ brightness = appledisplay_bl_get_brightness(pdata->bd); diff --git a/drivers/usb/misc/cypress_cy7c63.c b/drivers/usb/misc/cypress_cy7c63.c index 5c93a888c40e..c6c3ee72b34f 100644 --- a/drivers/usb/misc/cypress_cy7c63.c +++ b/drivers/usb/misc/cypress_cy7c63.c @@ -91,6 +91,9 @@ static int vendor_command(struct cypress *dev, unsigned char request, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER, address, data, iobuf, CYPRESS_MAX_REQSIZE, USB_CTRL_GET_TIMEOUT); + /* we must not process garbage */ + if (retval < 2) + goto err_buf; /* store returned data (more READs to be added) */ switch (request) { @@ -110,6 +113,7 @@ static int vendor_command(struct cypress *dev, unsigned char request, break; } +err_buf: kfree(iobuf); error: return retval; diff --git a/drivers/usb/misc/yurex.c b/drivers/usb/misc/yurex.c index f9d5e0c60ef6..a90113b1896d 100644 --- a/drivers/usb/misc/yurex.c +++ b/drivers/usb/misc/yurex.c @@ -512,8 +512,11 @@ static ssize_t yurex_write(struct file *file, const char __user *user_buffer, __func__, retval); goto error; } - if (set && timeout) + if (set && timeout) { + spin_lock_irq(&dev->lock); dev->bbu = c2; + spin_unlock_irq(&dev->lock); + } return timeout ? count : -EIO; error: diff --git a/drivers/usb/phy/phy.c b/drivers/usb/phy/phy.c index 89f4ac4cd93e..b8d7176f28d0 100644 --- a/drivers/usb/phy/phy.c +++ b/drivers/usb/phy/phy.c @@ -664,7 +664,7 @@ void devm_usb_put_phy(struct device *dev, struct usb_phy *phy) { int r; - r = devres_destroy(dev, devm_usb_phy_release, devm_usb_phy_match, phy); + r = devres_release(dev, devm_usb_phy_release, devm_usb_phy_match, phy); dev_WARN_ONCE(dev, r, "couldn't find PHY resource\n"); } EXPORT_SYMBOL_GPL(devm_usb_put_phy); diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 51778d9ab6fc..2bc5e96d16b0 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -282,6 +282,7 @@ static void option_instat_callback(struct urb *urb); #define QUECTEL_PRODUCT_EG912Y 0x6001 #define QUECTEL_PRODUCT_EC200S_CN 0x6002 #define QUECTEL_PRODUCT_EC200A 0x6005 +#define QUECTEL_PRODUCT_EG916Q 0x6007 #define QUECTEL_PRODUCT_EM061K_LWW 0x6008 #define QUECTEL_PRODUCT_EM061K_LCN 0x6009 #define QUECTEL_PRODUCT_EC200T 0x6026 @@ -1273,6 +1274,7 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG912Y, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG916Q, 0xff, 0x00, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, @@ -1383,10 +1385,16 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(0) | RSVD(1) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a0, 0xff), /* Telit FN20C04 (rmnet) */ .driver_info = RSVD(0) | NCTRL(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a2, 0xff), /* Telit FN920C04 (MBIM) */ + .driver_info = NCTRL(4) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a4, 0xff), /* Telit FN20C04 (rmnet) */ .driver_info = RSVD(0) | NCTRL(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a7, 0xff), /* Telit FN920C04 (MBIM) */ + .driver_info = NCTRL(4) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a9, 0xff), /* Telit FN20C04 (rmnet) */ .driver_info = RSVD(0) | NCTRL(2) | RSVD(3) | RSVD(4) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10aa, 0xff), /* Telit FN920C04 (MBIM) */ + .driver_info = NCTRL(3) | RSVD(4) | RSVD(5) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM), diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 80791adab5c4..430416b46f41 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c @@ -115,6 +115,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) }, { USB_DEVICE(AT_VENDOR_ID, AT_VTKIT3_PRODUCT_ID) }, { USB_DEVICE(IBM_VENDOR_ID, IBM_PRODUCT_ID) }, + { USB_DEVICE(MACROSILICON_VENDOR_ID, MACROSILICON_MS3020_PRODUCT_ID) }, { } /* Terminating entry */ }; diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h index ddd75529ab46..7cc7bc6ebefc 100644 --- a/drivers/usb/serial/pl2303.h +++ b/drivers/usb/serial/pl2303.h @@ -170,3 +170,7 @@ /* Allied Telesis VT-Kit3 */ #define AT_VENDOR_ID 0x0caa #define AT_VTKIT3_PRODUCT_ID 0x3001 + +/* Macrosilicon MS3020 */ +#define MACROSILICON_VENDOR_ID 0x345f +#define MACROSILICON_MS3020_PRODUCT_ID 0x3020 diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index 8b38dd7d89b7..5eef18dd8eea 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h @@ -2431,6 +2431,17 @@ UNUSUAL_DEV( 0xc251, 0x4003, 0x0100, 0x0100, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE), +/* + * Reported by Icenowy Zheng + * This is an interface for vendor-specific cryptic commands instead + * of real USB storage device. + */ +UNUSUAL_DEV( 0xe5b7, 0x0811, 0x0100, 0x0100, + "ZhuHai JieLi Technology", + "JieLi BR21", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_IGNORE_DEVICE), + /* Reported by Andrew Simmons */ UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001, "DataStor", diff --git a/drivers/video/fbdev/hpfb.c b/drivers/video/fbdev/hpfb.c index 9230db9ea94b..47ec02a38f76 100644 --- a/drivers/video/fbdev/hpfb.c +++ b/drivers/video/fbdev/hpfb.c @@ -343,6 +343,7 @@ static int hpfb_dio_probe(struct dio_dev *d, const struct dio_device_id *ent) if (hpfb_init_one(paddr, vaddr)) { if (d->scode >= DIOII_SCBASE) iounmap((void *)vaddr); + release_mem_region(d->resource.start, resource_size(&d->resource)); return -ENOMEM; } return 0; diff --git a/drivers/video/fbdev/pxafb.c b/drivers/video/fbdev/pxafb.c index 08ee77d5df8b..83808ac4ea75 100644 --- a/drivers/video/fbdev/pxafb.c +++ b/drivers/video/fbdev/pxafb.c @@ -2437,6 +2437,7 @@ static int pxafb_remove(struct platform_device *dev) info = &fbi->fb; pxafb_overlay_exit(fbi); + cancel_work_sync(&fbi->task); unregister_framebuffer(info); pxafb_disable_controller(fbi); diff --git a/drivers/video/fbdev/sis/sis_main.c b/drivers/video/fbdev/sis/sis_main.c index 9575a481eeaf..2792f7d1ed53 100644 --- a/drivers/video/fbdev/sis/sis_main.c +++ b/drivers/video/fbdev/sis/sis_main.c @@ -146,7 +146,7 @@ static void sisfb_search_mode(char *name, bool quiet) { unsigned int j = 0, xres = 0, yres = 0, depth = 0, rate = 0; int i = 0; - char strbuf[16], strbuf1[20]; + char strbuf[24], strbuf1[20]; char *nameptr = name; /* We don't know the hardware specs yet and there is no ivideo */ diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c index 021b5e7f4b7a..2863731b1fae 100644 --- a/drivers/xen/swiotlb-xen.c +++ b/drivers/xen/swiotlb-xen.c @@ -108,34 +108,24 @@ static inline dma_addr_t xen_virt_to_bus(void *address) return xen_phys_to_bus(virt_to_phys(address)); } -static int check_pages_physically_contiguous(unsigned long xen_pfn, - unsigned int offset, - size_t length) -{ - unsigned long next_bfn; - int i; - int nr_pages; - - next_bfn = pfn_to_bfn(xen_pfn); - nr_pages = (offset + length + XEN_PAGE_SIZE-1) >> XEN_PAGE_SHIFT; - - for (i = 1; i < nr_pages; i++) { - if (pfn_to_bfn(++xen_pfn) != ++next_bfn) - return 0; - } - return 1; -} - static inline int range_straddles_page_boundary(phys_addr_t p, size_t size) { - unsigned long xen_pfn = XEN_PFN_DOWN(p); - unsigned int offset = p & ~XEN_PAGE_MASK; + unsigned long next_bfn, xen_pfn = XEN_PFN_DOWN(p); + unsigned int i, nr_pages = XEN_PFN_UP(xen_offset_in_page(p) + size); + phys_addr_t algn = 1ULL << (get_order(size) + PAGE_SHIFT); - if (offset + size <= XEN_PAGE_SIZE) - return 0; - if (check_pages_physically_contiguous(xen_pfn, offset, size)) - return 0; - return 1; + next_bfn = pfn_to_bfn(xen_pfn); + + /* If buffer is physically aligned, ensure DMA alignment. */ + if (IS_ALIGNED(p, algn) && + !IS_ALIGNED((phys_addr_t)next_bfn << XEN_PAGE_SHIFT, algn)) + return 1; + + for (i = 1; i < nr_pages; i++) + if (pfn_to_bfn(++xen_pfn) != ++next_bfn) + return 1; + + return 0; } static int is_xen_swiotlb_buffer(dma_addr_t dma_addr) diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 931a0dea616b..868f5070ee01 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -4149,6 +4149,17 @@ static void btrfs_destroy_all_ordered_extents(struct btrfs_fs_info *fs_info) } spin_unlock(&fs_info->ordered_root_lock); + /* + * Wait for any fixup workers to complete. + * If we don't wait for them here and they are still running by the time + * we call kthread_stop() against the cleaner kthread further below, we + * get an use-after-free on the cleaner because the fixup worker adds an + * inode to the list of delayed iputs and then attempts to wakeup the + * cleaner kthread, which was already stopped and destroyed. We parked + * already the cleaner, but below we run all pending delayed iputs. + */ + btrfs_flush_workqueue(fs_info->fixup_workers); + /* * We need this here because if we've been flipped read-only we won't * get sync() from the umount, so we need to make sure any ordered diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index c1ee85b3b808..db00d49b5a15 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -87,7 +87,6 @@ static int ceph_set_page_dirty(struct page *page) /* dirty the head */ spin_lock(&ci->i_ceph_lock); - BUG_ON(ci->i_wr_ref == 0); // caller should hold Fw reference if (__ceph_have_pending_cap_snap(ci)) { struct ceph_cap_snap *capsnap = list_last_entry(&ci->i_cap_snaps, diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 9ec308cdb8c7..c4b9cf12b53d 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -1877,6 +1877,7 @@ static void ext4_ext_try_to_merge_up(handle_t *handle, path[0].p_hdr->eh_max = cpu_to_le16(max_root); brelse(path[1].p_bh); + path[1].p_bh = NULL; ext4_free_blocks(handle, inode, NULL, blk, 1, EXT4_FREE_BLOCKS_METADATA | EXT4_FREE_BLOCKS_FORGET); } @@ -2104,6 +2105,7 @@ prepend: ppath, newext); if (err) goto cleanup; + path = *ppath; depth = ext_depth(inode); eh = path[depth].p_hdr; @@ -3278,7 +3280,7 @@ static int ext4_split_extent_at(handle_t *handle, ext4_ext_mark_unwritten(ex2); err = ext4_ext_insert_extent(handle, inode, ppath, &newex, flags); - if (err != -ENOSPC && err != -EDQUOT) + if (err != -ENOSPC && err != -EDQUOT && err != -ENOMEM) goto out; if (EXT4_EXT_MAY_ZEROOUT & split_flag) { @@ -5727,6 +5729,7 @@ int ext4_insert_range(struct inode *inode, loff_t offset, loff_t len) path = ext4_find_extent(inode, offset_lblk, NULL, 0); if (IS_ERR(path)) { up_write(&EXT4_I(inode)->i_data_sem); + ret = PTR_ERR(path); goto out_stop; } diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 5a3a0c6446fa..d8d3bcaeae8f 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -518,6 +518,8 @@ static int find_group_orlov(struct super_block *sb, struct inode *parent, if (min_inodes < 1) min_inodes = 1; min_clusters = avefreec - EXT4_CLUSTERS_PER_GROUP(sb)*flex_size / 4; + if (min_clusters < 0) + min_clusters = 0; /* * Start looking in the flex group where we last allocated an diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c index e86606abf6d3..3b583e51b2ad 100644 --- a/fs/ext4/inline.c +++ b/fs/ext4/inline.c @@ -1678,24 +1678,36 @@ struct buffer_head *ext4_find_inline_entry(struct inode *dir, struct ext4_dir_entry_2 **res_dir, int *has_inline_data) { + struct ext4_xattr_ibody_find is = { + .s = { .not_found = -ENODATA, }, + }; + struct ext4_xattr_info i = { + .name_index = EXT4_XATTR_INDEX_SYSTEM, + .name = EXT4_XATTR_SYSTEM_DATA, + }; int ret; - struct ext4_iloc iloc; void *inline_start; int inline_size; - if (ext4_get_inode_loc(dir, &iloc)) - return NULL; + ret = ext4_get_inode_loc(dir, &is.iloc); + if (ret) + return ERR_PTR(ret); down_read(&EXT4_I(dir)->xattr_sem); + + ret = ext4_xattr_ibody_find(dir, &i, &is); + if (ret) + goto out; + if (!ext4_has_inline_data(dir)) { *has_inline_data = 0; goto out; } - inline_start = (void *)ext4_raw_inode(&iloc)->i_block + + inline_start = (void *)ext4_raw_inode(&is.iloc)->i_block + EXT4_INLINE_DOTDOT_SIZE; inline_size = EXT4_MIN_INLINE_DATA_SIZE - EXT4_INLINE_DOTDOT_SIZE; - ret = ext4_search_dir(iloc.bh, inline_start, inline_size, + ret = ext4_search_dir(is.iloc.bh, inline_start, inline_size, dir, fname, 0, res_dir); if (ret == 1) goto out_find; @@ -1705,20 +1717,23 @@ struct buffer_head *ext4_find_inline_entry(struct inode *dir, if (ext4_get_inline_size(dir) == EXT4_MIN_INLINE_DATA_SIZE) goto out; - inline_start = ext4_get_inline_xattr_pos(dir, &iloc); + inline_start = ext4_get_inline_xattr_pos(dir, &is.iloc); inline_size = ext4_get_inline_size(dir) - EXT4_MIN_INLINE_DATA_SIZE; - ret = ext4_search_dir(iloc.bh, inline_start, inline_size, + ret = ext4_search_dir(is.iloc.bh, inline_start, inline_size, dir, fname, 0, res_dir); if (ret == 1) goto out_find; out: - brelse(iloc.bh); - iloc.bh = NULL; + brelse(is.iloc.bh); + if (ret < 0) + is.iloc.bh = ERR_PTR(ret); + else + is.iloc.bh = NULL; out_find: up_read(&EXT4_I(dir)->xattr_sem); - return iloc.bh; + return is.iloc.bh; } int ext4_delete_inline_entry(handle_t *handle, diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 4d293985f10a..0380b62c192b 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -5480,8 +5480,9 @@ static void ext4_wait_for_tail_page_commit(struct inode *inode) struct page *page; unsigned offset; journal_t *journal = EXT4_SB(inode->i_sb)->s_journal; - tid_t commit_tid = 0; + tid_t commit_tid; int ret; + bool has_transaction; offset = inode->i_size & (PAGE_SIZE - 1); /* @@ -5506,12 +5507,14 @@ static void ext4_wait_for_tail_page_commit(struct inode *inode) put_page(page); if (ret != -EBUSY) return; - commit_tid = 0; + has_transaction = false; read_lock(&journal->j_state_lock); - if (journal->j_committing_transaction) + if (journal->j_committing_transaction) { commit_tid = journal->j_committing_transaction->t_tid; + has_transaction = true; + } read_unlock(&journal->j_state_lock); - if (commit_tid) + if (has_transaction) jbd2_log_wait_commit(journal, commit_tid); } } diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 7d6600587176..6fc5e573af4e 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -2860,11 +2860,8 @@ static void ext4_free_data_in_buddy(struct super_block *sb, /* * Clear the trimmed flag for the group so that the next * ext4_trim_fs can trim it. - * If the volume is mounted with -o discard, online discard - * is supported and the free blocks will be trimmed online. */ - if (!test_opt(sb, DISCARD)) - EXT4_MB_GRP_CLEAR_TRIMMED(db); + EXT4_MB_GRP_CLEAR_TRIMMED(db); if (!db->bb_free_root.rb_node) { /* No more items in the per group rb tree @@ -4989,8 +4986,9 @@ do_more: " group:%d block:%d count:%lu failed" " with %d", block_group, bit, count, err); - } else - EXT4_MB_GRP_CLEAR_TRIMMED(e4b.bd_info); + } + + EXT4_MB_GRP_CLEAR_TRIMMED(e4b.bd_info); ext4_lock_group(sb, block_group); mb_clear_bits(bitmap_bh->b_data, bit, count_clusters); diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c index 39a573127e52..2f5456db19eb 100644 --- a/fs/ext4/migrate.c +++ b/fs/ext4/migrate.c @@ -685,8 +685,8 @@ int ext4_ind_migrate(struct inode *inode) ei->i_data[i] = cpu_to_le32(blk++); ext4_mark_inode_dirty(handle, inode); errout: - ext4_journal_stop(handle); up_write(&EXT4_I(inode)->i_data_sem); + ext4_journal_stop(handle); out_unlock: percpu_up_write(&sbi->s_writepages_rwsem); return ret; diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 910a5ff6d770..5436a7cc1d0f 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -1492,7 +1492,7 @@ static bool ext4_match(struct inode *parent, } /* - * Returns 0 if not found, -1 on failure, and 1 on success + * Returns 0 if not found, -EFSCORRUPTED on failure, and 1 on success */ int ext4_search_dir(struct buffer_head *bh, char *search_buf, int buf_size, struct inode *dir, struct ext4_filename *fname, @@ -1513,7 +1513,7 @@ int ext4_search_dir(struct buffer_head *bh, char *search_buf, int buf_size, * a full check */ if (ext4_check_dir_entry(dir, NULL, de, bh, search_buf, buf_size, offset)) - return -1; + return -EFSCORRUPTED; *res_dir = de; return 1; } @@ -1521,7 +1521,7 @@ int ext4_search_dir(struct buffer_head *bh, char *search_buf, int buf_size, de_len = ext4_rec_len_from_disk(de->rec_len, dir->i_sb->s_blocksize); if (de_len <= 0) - return -1; + return -EFSCORRUPTED; offset += de_len; de = (struct ext4_dir_entry_2 *) ((char *) de + de_len); } @@ -1672,8 +1672,10 @@ restart: goto cleanup_and_exit; } else { brelse(bh); - if (i < 0) + if (i < 0) { + ret = ERR_PTR(i); goto cleanup_and_exit; + } } next: if (++block >= nblocks) @@ -1768,7 +1770,7 @@ static struct buffer_head * ext4_dx_find_entry(struct inode *dir, if (retval == 1) goto success; brelse(bh); - if (retval == -1) { + if (retval < 0) { bh = ERR_PTR(ERR_BAD_DX_DIR); goto errout; } @@ -2003,7 +2005,7 @@ static struct ext4_dir_entry_2 *do_split(handle_t *handle, struct inode *dir, split = count/2; hash2 = map[split].hash; - continued = hash2 == map[split - 1].hash; + continued = split > 0 ? hash2 == map[split - 1].hash : 0; dxtrace(printk(KERN_INFO "Split block %lu at %x, %i/%i\n", (unsigned long)dx_get_block(frame->at), hash2, split, count-split)); diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 80cc5bef1a65..3d57a52964c9 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -436,7 +436,7 @@ static int ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino, ext4_set_inode_state(inode, EXT4_STATE_LUSTRE_EA_INODE); ext4_xattr_inode_set_ref(inode, 1); } else { - inode_lock(inode); + inode_lock_nested(inode, I_MUTEX_XATTR); inode->i_flags |= S_NOQUOTA; inode_unlock(inode); } @@ -1039,7 +1039,7 @@ static int ext4_xattr_inode_update_ref(handle_t *handle, struct inode *ea_inode, u32 hash; int ret; - inode_lock(ea_inode); + inode_lock_nested(ea_inode, I_MUTEX_XATTR); ret = ext4_reserve_inode_write(handle, ea_inode, &iloc); if (ret) { diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 959c3461da6a..918c56e1a272 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -183,7 +183,8 @@ static unsigned long dir_block_index(unsigned int level, unsigned long bidx = 0; for (i = 0; i < level; i++) - bidx += dir_buckets(i, dir_level) * bucket_blocks(i); + bidx += mul_u32_u32(dir_buckets(i, dir_level), + bucket_blocks(i)); bidx += idx * bucket_blocks(level); return bidx; } diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index b38ad00bfd7b..17fd250d5d1b 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -2031,6 +2031,9 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) struct f2fs_sb_info *sbi = F2FS_I_SB(inode); int ret; + if (!(filp->f_mode & FMODE_WRITE)) + return -EBADF; + if (!inode_owner_or_capable(inode)) return -EACCES; @@ -2098,6 +2101,9 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; + if (!(filp->f_mode & FMODE_WRITE)) + return -EBADF; + if (!inode_owner_or_capable(inode)) return -EACCES; @@ -2140,6 +2146,9 @@ static int f2fs_ioc_start_volatile_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; + if (!(filp->f_mode & FMODE_WRITE)) + return -EBADF; + if (!inode_owner_or_capable(inode)) return -EACCES; @@ -2175,6 +2184,9 @@ static int f2fs_ioc_release_volatile_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; + if (!(filp->f_mode & FMODE_WRITE)) + return -EBADF; + if (!inode_owner_or_capable(inode)) return -EACCES; @@ -2204,6 +2216,9 @@ static int f2fs_ioc_abort_volatile_write(struct file *filp) struct inode *inode = file_inode(filp); int ret; + if (!(filp->f_mode & FMODE_WRITE)) + return -EBADF; + if (!inode_owner_or_capable(inode)) return -EACCES; diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index c0f5f67e8d4d..c15509f31958 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -2666,9 +2666,9 @@ static inline bool sanity_check_area_boundary(struct f2fs_sb_info *sbi, u32 segment_count = le32_to_cpu(raw_super->segment_count); u32 log_blocks_per_seg = le32_to_cpu(raw_super->log_blocks_per_seg); u64 main_end_blkaddr = main_blkaddr + - (segment_count_main << log_blocks_per_seg); + ((u64)segment_count_main << log_blocks_per_seg); u64 seg_end_blkaddr = segment0_blkaddr + - (segment_count << log_blocks_per_seg); + ((u64)segment_count << log_blocks_per_seg); if (segment0_blkaddr != cp_blkaddr) { f2fs_info(sbi, "Mismatch start address, segment0(%u) cp_blkaddr(%u)", diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c index f23f24290e83..59790dc2be15 100644 --- a/fs/fat/namei_vfat.c +++ b/fs/fat/namei_vfat.c @@ -1018,7 +1018,7 @@ error_inode: if (corrupt < 0) { fat_fs_error(new_dir->i_sb, "%s: Filesystem corrupted (i_pos %lld)", - __func__, sinfo.i_pos); + __func__, new_i_pos); } goto out; } diff --git a/fs/inode.c b/fs/inode.c index 9fc9bf206063..fdd181106eff 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -613,6 +613,10 @@ again: continue; spin_lock(&inode->i_lock); + if (atomic_read(&inode->i_count)) { + spin_unlock(&inode->i_lock); + continue; + } if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) { spin_unlock(&inode->i_lock); continue; diff --git a/fs/jbd2/checkpoint.c b/fs/jbd2/checkpoint.c index 15d129b7494b..8f49e85ffe63 100644 --- a/fs/jbd2/checkpoint.c +++ b/fs/jbd2/checkpoint.c @@ -140,17 +140,23 @@ void __jbd2_log_wait_for_space(journal_t *journal) if (space_left < nblocks) { int chkpt = journal->j_checkpoint_transactions != NULL; tid_t tid = 0; + bool has_transaction = false; - if (journal->j_committing_transaction) + if (journal->j_committing_transaction) { tid = journal->j_committing_transaction->t_tid; + has_transaction = true; + } spin_unlock(&journal->j_list_lock); write_unlock(&journal->j_state_lock); if (chkpt) { jbd2_log_do_checkpoint(journal); - } else if (jbd2_cleanup_journal_tail(journal) == 0) { - /* We were able to recover space; yay! */ + } else if (jbd2_cleanup_journal_tail(journal) <= 0) { + /* + * We were able to recover space or the + * journal was aborted due to an error. + */ ; - } else if (tid) { + } else if (has_transaction) { /* * jbd2_journal_commit_transaction() may want * to take the checkpoint_mutex if JBD2_FLUSHED diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index 6870103a0f59..7712428f5952 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c @@ -189,19 +189,17 @@ static int journal_wait_on_commit_record(journal_t *journal, * use writepages() because with dealyed allocation we may be doing * block allocation in writepages(). */ -static int journal_submit_inode_data_buffers(struct address_space *mapping, - loff_t dirty_start, loff_t dirty_end) +int jbd2_journal_submit_inode_data_buffers(struct jbd2_inode *jinode) { - int ret; + struct address_space *mapping = jinode->i_vfs_inode->i_mapping; struct writeback_control wbc = { .sync_mode = WB_SYNC_ALL, .nr_to_write = mapping->nrpages * 2, - .range_start = dirty_start, - .range_end = dirty_end, + .range_start = jinode->i_dirty_start, + .range_end = jinode->i_dirty_end, }; - ret = generic_writepages(mapping, &wbc); - return ret; + return generic_writepages(mapping, &wbc); } /* @@ -217,16 +215,11 @@ static int journal_submit_data_buffers(journal_t *journal, { struct jbd2_inode *jinode; int err, ret = 0; - struct address_space *mapping; spin_lock(&journal->j_list_lock); list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) { - loff_t dirty_start = jinode->i_dirty_start; - loff_t dirty_end = jinode->i_dirty_end; - if (!(jinode->i_flags & JI_WRITE_DATA)) continue; - mapping = jinode->i_vfs_inode->i_mapping; jinode->i_flags |= JI_COMMIT_RUNNING; spin_unlock(&journal->j_list_lock); /* @@ -236,8 +229,7 @@ static int journal_submit_data_buffers(journal_t *journal, * only allocated blocks here. */ trace_jbd2_submit_inode_data(jinode->i_vfs_inode); - err = journal_submit_inode_data_buffers(mapping, dirty_start, - dirty_end); + err = jbd2_journal_submit_inode_data_buffers(jinode); if (!ret) ret = err; spin_lock(&journal->j_list_lock); @@ -250,6 +242,15 @@ static int journal_submit_data_buffers(journal_t *journal, return ret; } +int jbd2_journal_finish_inode_data_buffers(struct jbd2_inode *jinode) +{ + struct address_space *mapping = jinode->i_vfs_inode->i_mapping; + + return filemap_fdatawait_range_keep_errors(mapping, + jinode->i_dirty_start, + jinode->i_dirty_end); +} + /* * Wait for data submitted for writeout, refile inodes to proper * transaction if needed. @@ -264,16 +265,11 @@ static int journal_finish_inode_data_buffers(journal_t *journal, /* For locking, see the comment in journal_submit_data_buffers() */ spin_lock(&journal->j_list_lock); list_for_each_entry(jinode, &commit_transaction->t_inode_list, i_list) { - loff_t dirty_start = jinode->i_dirty_start; - loff_t dirty_end = jinode->i_dirty_end; - if (!(jinode->i_flags & JI_WAIT_DATA)) continue; jinode->i_flags |= JI_COMMIT_RUNNING; spin_unlock(&journal->j_list_lock); - err = filemap_fdatawait_range_keep_errors( - jinode->i_vfs_inode->i_mapping, dirty_start, - dirty_end); + err = jbd2_journal_finish_inode_data_buffers(jinode); if (!ret) ret = err; spin_lock(&journal->j_list_lock); diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index dcacd635e81d..839ed66fde21 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -99,6 +99,8 @@ EXPORT_SYMBOL(jbd2_journal_inode_add_write); EXPORT_SYMBOL(jbd2_journal_inode_add_wait); EXPORT_SYMBOL(jbd2_journal_inode_ranged_write); EXPORT_SYMBOL(jbd2_journal_inode_ranged_wait); +EXPORT_SYMBOL(jbd2_journal_submit_inode_data_buffers); +EXPORT_SYMBOL(jbd2_journal_finish_inode_data_buffers); EXPORT_SYMBOL(jbd2_journal_init_jbd_inode); EXPORT_SYMBOL(jbd2_journal_release_jbd_inode); EXPORT_SYMBOL(jbd2_journal_begin_ordered_truncate); diff --git a/fs/jfs/jfs_discard.c b/fs/jfs/jfs_discard.c index f76ff0a46444..9d78c427b944 100644 --- a/fs/jfs/jfs_discard.c +++ b/fs/jfs/jfs_discard.c @@ -78,7 +78,7 @@ void jfs_issue_discard(struct inode *ip, u64 blkno, u64 nblocks) int jfs_ioc_trim(struct inode *ip, struct fstrim_range *range) { struct inode *ipbmap = JFS_SBI(ip->i_sb)->ipbmap; - struct bmap *bmp = JFS_SBI(ip->i_sb)->bmap; + struct bmap *bmp; struct super_block *sb = ipbmap->i_sb; int agno, agno_end; u64 start, end, minlen; @@ -96,10 +96,15 @@ int jfs_ioc_trim(struct inode *ip, struct fstrim_range *range) if (minlen == 0) minlen = 1; + down_read(&sb->s_umount); + bmp = JFS_SBI(ip->i_sb)->bmap; + if (minlen > bmp->db_agsize || start >= bmp->db_mapsize || - range->len < sb->s_blocksize) + range->len < sb->s_blocksize) { + up_read(&sb->s_umount); return -EINVAL; + } if (end >= bmp->db_mapsize) end = bmp->db_mapsize - 1; @@ -113,6 +118,8 @@ int jfs_ioc_trim(struct inode *ip, struct fstrim_range *range) trimmed += dbDiscardAG(ip, agno, minlen); agno++; } + + up_read(&sb->s_umount); range->len = trimmed << sb->s_blocksize_bits; return 0; diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c index 6c6efb5a168b..4a322c1beb9f 100644 --- a/fs/jfs/jfs_dmap.c +++ b/fs/jfs/jfs_dmap.c @@ -200,7 +200,7 @@ int dbMount(struct inode *ipbmap) } bmp->db_numag = le32_to_cpu(dbmp_le->dn_numag); - if (!bmp->db_numag) { + if (!bmp->db_numag || bmp->db_numag > MAXAG) { err = -EINVAL; goto err_release_metapage; } @@ -665,7 +665,7 @@ int dbNextAG(struct inode *ipbmap) * average free space. */ for (i = 0 ; i < bmp->db_numag; i++, agpref++) { - if (agpref == bmp->db_numag) + if (agpref >= bmp->db_numag) agpref = 0; if (atomic_read(&bmp->db_active[agpref])) @@ -3019,9 +3019,10 @@ static void dbAdjTree(dmtree_t *tp, int leafno, int newval, bool is_ctl) static int dbFindLeaf(dmtree_t *tp, int l2nb, int *leafidx, bool is_ctl) { int ti, n = 0, k, x = 0; - int max_size; + int max_size, max_idx; max_size = is_ctl ? CTLTREESIZE : TREESIZE; + max_idx = is_ctl ? LPERCTL : LPERDMAP; /* first check the root of the tree to see if there is * sufficient free space. @@ -3053,6 +3054,8 @@ static int dbFindLeaf(dmtree_t *tp, int l2nb, int *leafidx, bool is_ctl) */ assert(n < 4); } + if (le32_to_cpu(tp->dmt_leafidx) >= max_idx) + return -ENOSPC; /* set the return to the leftmost leaf describing sufficient * free space. @@ -3097,7 +3100,7 @@ static int dbFindBits(u32 word, int l2nb) /* scan the word for nb free bits at nb alignments. */ - for (bitno = 0; mask != 0; bitno += nb, mask >>= nb) { + for (bitno = 0; mask != 0; bitno += nb, mask = (mask >> nb)) { if ((mask & word) == mask) break; } diff --git a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c index 7f66c12a7962..4d0d051ccb94 100644 --- a/fs/jfs/jfs_imap.c +++ b/fs/jfs/jfs_imap.c @@ -1381,7 +1381,7 @@ int diAlloc(struct inode *pip, bool dir, struct inode *ip) /* get the ag number of this iag */ agno = BLKTOAG(JFS_IP(pip)->agstart, JFS_SBI(pip->i_sb)); dn_numag = JFS_SBI(pip->i_sb)->bmap->db_numag; - if (agno < 0 || agno > dn_numag) + if (agno < 0 || agno > dn_numag || agno >= MAXAG) return -EIO; if (atomic_read(&JFS_SBI(pip->i_sb)->bmap->db_active[agno])) { diff --git a/fs/jfs/xattr.c b/fs/jfs/xattr.c index 37b984692ca9..bb8c4583f065 100644 --- a/fs/jfs/xattr.c +++ b/fs/jfs/xattr.c @@ -447,6 +447,8 @@ static int ea_get(struct inode *inode, struct ea_buffer *ea_buf, int min_size) int rc; int quota_allocation = 0; + memset(&ea_buf->new_ea, 0, sizeof(ea_buf->new_ea)); + /* When fsck.jfs clears a bad ea, it doesn't clear the size */ if (ji->ea.flag == 0) ea_size = 0; diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 85e005efc977..c60213373d42 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -1830,6 +1830,7 @@ restart: set_bit(ops->owner_flag_bit, &sp->so_flags); nfs4_put_state_owner(sp); status = nfs4_recovery_handle_error(clp, status); + nfs4_free_state_owners(&freeme); return (status != 0) ? status : -EAGAIN; } diff --git a/fs/nfsd/nfs4idmap.c b/fs/nfsd/nfs4idmap.c index 6b9b6cca469f..aff82b994e24 100644 --- a/fs/nfsd/nfs4idmap.c +++ b/fs/nfsd/nfs4idmap.c @@ -565,6 +565,7 @@ static __be32 idmap_id_to_name(struct xdr_stream *xdr, .id = id, .type = type, }; + __be32 status = nfs_ok; __be32 *p; int ret; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); @@ -577,12 +578,16 @@ static __be32 idmap_id_to_name(struct xdr_stream *xdr, return nfserrno(ret); ret = strlen(item->name); WARN_ON_ONCE(ret > IDMAP_NAMESZ); + p = xdr_reserve_space(xdr, ret + 4); - if (!p) - return nfserr_resource; - p = xdr_encode_opaque(p, item->name, ret); + if (unlikely(!p)) { + status = nfserr_resource; + goto out_put; + } + xdr_encode_opaque(p, item->name, ret); +out_put: cache_put(&item->h, nn->idtoname_cache); - return 0; + return status; } static bool diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index e612b71205a4..2a980ecc9b4c 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -735,7 +735,8 @@ static void nfs4_free_deleg(struct nfs4_stid *stid) * When a delegation is recalled, the filehandle is stored in the "new" * filter. * Every 30 seconds we swap the filters and clear the "new" one, - * unless both are empty of course. + * unless both are empty of course. This results in delegations for a + * given filehandle being blocked for between 30 and 60 seconds. * * Each filter is 256 bits. We hash the filehandle to 32bit and use the * low 3 bytes as hash-table indices. @@ -747,7 +748,7 @@ static void nfs4_free_deleg(struct nfs4_stid *stid) static DEFINE_SPINLOCK(blocked_delegations_lock); static struct bloom_pair { int entries, old_entries; - time_t swap_time; + time64_t swap_time; int new; /* index into 'set' */ DECLARE_BITMAP(set[2], 256); } blocked_delegations; @@ -759,15 +760,15 @@ static int delegation_blocked(struct knfsd_fh *fh) if (bd->entries == 0) return 0; - if (seconds_since_boot() - bd->swap_time > 30) { + if (ktime_get_seconds() - bd->swap_time > 30) { spin_lock(&blocked_delegations_lock); - if (seconds_since_boot() - bd->swap_time > 30) { + if (ktime_get_seconds() - bd->swap_time > 30) { bd->entries -= bd->old_entries; bd->old_entries = bd->entries; + bd->new = 1-bd->new; memset(bd->set[bd->new], 0, sizeof(bd->set[0])); - bd->new = 1-bd->new; - bd->swap_time = seconds_since_boot(); + bd->swap_time = ktime_get_seconds(); } spin_unlock(&blocked_delegations_lock); } @@ -797,7 +798,7 @@ static void block_delegations(struct knfsd_fh *fh) __set_bit((hash>>8)&255, bd->set[bd->new]); __set_bit((hash>>16)&255, bd->set[bd->new]); if (bd->entries == 0) - bd->swap_time = seconds_since_boot(); + bd->swap_time = ktime_get_seconds(); bd->entries += 1; spin_unlock(&blocked_delegations_lock); } diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c index 25817498f22c..014af44f8530 100644 --- a/fs/nilfs2/btree.c +++ b/fs/nilfs2/btree.c @@ -359,7 +359,7 @@ static int nilfs_btree_node_broken(const struct nilfs_btree_node *node, if (unlikely(level < NILFS_BTREE_LEVEL_NODE_MIN || level >= NILFS_BTREE_LEVEL_MAX || (flags & NILFS_BTREE_NODE_ROOT) || - nchildren < 0 || + nchildren <= 0 || nchildren > NILFS_BTREE_NODE_NCHILDREN_MAX(size))) { nilfs_crit(inode->i_sb, "bad btree node (ino=%lu, blocknr=%llu): level = %d, flags = 0x%x, nchildren = %d", @@ -390,7 +390,8 @@ static int nilfs_btree_root_broken(const struct nilfs_btree_node *node, if (unlikely(level < NILFS_BTREE_LEVEL_NODE_MIN || level >= NILFS_BTREE_LEVEL_MAX || nchildren < 0 || - nchildren > NILFS_BTREE_ROOT_NCHILDREN_MAX)) { + nchildren > NILFS_BTREE_ROOT_NCHILDREN_MAX || + (nchildren == 0 && level > NILFS_BTREE_LEVEL_NODE_MIN))) { nilfs_crit(inode->i_sb, "bad btree root (ino=%lu): level = %d, flags = 0x%x, nchildren = %d", inode->i_ino, level, flags, nchildren); @@ -1668,13 +1669,16 @@ static int nilfs_btree_check_delete(struct nilfs_bmap *btree, __u64 key) int nchildren, ret; root = nilfs_btree_get_root(btree); + nchildren = nilfs_btree_node_get_nchildren(root); + if (unlikely(nchildren == 0)) + return 0; + switch (nilfs_btree_height(btree)) { case 2: bh = NULL; node = root; break; case 3: - nchildren = nilfs_btree_node_get_nchildren(root); if (nchildren > 1) return 0; ptr = nilfs_btree_node_get_ptr(root, nchildren - 1, @@ -1683,12 +1687,12 @@ static int nilfs_btree_check_delete(struct nilfs_bmap *btree, __u64 key) if (ret < 0) return ret; node = (struct nilfs_btree_node *)bh->b_data; + nchildren = nilfs_btree_node_get_nchildren(node); break; default: return 0; } - nchildren = nilfs_btree_node_get_nchildren(node); maxkey = nilfs_btree_node_get_key(node, nchildren - 1); nextmaxkey = (nchildren > 1) ? nilfs_btree_node_get_key(node, nchildren - 2) : 0; diff --git a/fs/nilfs2/dir.c b/fs/nilfs2/dir.c index 34c8412dc86d..c7a00aff14e6 100644 --- a/fs/nilfs2/dir.c +++ b/fs/nilfs2/dir.c @@ -340,6 +340,8 @@ static int nilfs_readdir(struct file *file, struct dir_context *ctx) * returns the page in which the entry was found, and the entry itself * (as a parameter - res_dir). Page is returned mapped and unlocked. * Entry is guaranteed to be valid. + * + * On failure, returns an error pointer and the caller should ignore res_page. */ struct nilfs_dir_entry * nilfs_find_entry(struct inode *dir, const struct qstr *qstr, @@ -367,22 +369,24 @@ nilfs_find_entry(struct inode *dir, const struct qstr *qstr, do { char *kaddr = nilfs_get_page(dir, n, &page); - if (!IS_ERR(kaddr)) { - de = (struct nilfs_dir_entry *)kaddr; - kaddr += nilfs_last_byte(dir, n) - reclen; - while ((char *) de <= kaddr) { - if (de->rec_len == 0) { - nilfs_error(dir->i_sb, - "zero-length directory entry"); - nilfs_put_page(page); - goto out; - } - if (nilfs_match(namelen, name, de)) - goto found; - de = nilfs_next_entry(de); + if (IS_ERR(kaddr)) + return ERR_CAST(kaddr); + + de = (struct nilfs_dir_entry *)kaddr; + kaddr += nilfs_last_byte(dir, n) - reclen; + while ((char *)de <= kaddr) { + if (de->rec_len == 0) { + nilfs_error(dir->i_sb, + "zero-length directory entry"); + nilfs_put_page(page); + goto out; } - nilfs_put_page(page); + if (nilfs_match(namelen, name, de)) + goto found; + de = nilfs_next_entry(de); } + nilfs_put_page(page); + if (++n >= npages) n = 0; /* next page is past the blocks we've got */ @@ -395,7 +399,7 @@ nilfs_find_entry(struct inode *dir, const struct qstr *qstr, } } while (n != start); out: - return NULL; + return ERR_PTR(-ENOENT); found: *res_page = page; @@ -440,19 +444,19 @@ fail: return NULL; } -ino_t nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr) +int nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr, ino_t *ino) { - ino_t res = 0; struct nilfs_dir_entry *de; struct page *page; de = nilfs_find_entry(dir, qstr, &page); - if (de) { - res = le64_to_cpu(de->inode); - kunmap(page); - put_page(page); - } - return res; + if (IS_ERR(de)) + return PTR_ERR(de); + + *ino = le64_to_cpu(de->inode); + kunmap(page); + put_page(page); + return 0; } /* Releases the page */ diff --git a/fs/nilfs2/namei.c b/fs/nilfs2/namei.c index a2a44bc3ae9c..cc33328c95e7 100644 --- a/fs/nilfs2/namei.c +++ b/fs/nilfs2/namei.c @@ -64,12 +64,20 @@ nilfs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags) { struct inode *inode; ino_t ino; + int res; if (dentry->d_name.len > NILFS_NAME_LEN) return ERR_PTR(-ENAMETOOLONG); - ino = nilfs_inode_by_name(dir, &dentry->d_name); - inode = ino ? nilfs_iget(dir->i_sb, NILFS_I(dir)->i_root, ino) : NULL; + res = nilfs_inode_by_name(dir, &dentry->d_name, &ino); + if (res) { + if (res != -ENOENT) + return ERR_PTR(res); + inode = NULL; + } else { + inode = nilfs_iget(dir->i_sb, NILFS_I(dir)->i_root, ino); + } + return d_splice_alias(inode, dentry); } @@ -157,6 +165,9 @@ static int nilfs_symlink(struct inode *dir, struct dentry *dentry, /* slow symlink */ inode->i_op = &nilfs_symlink_inode_operations; inode_nohighmem(inode); + mapping_set_gfp_mask(inode->i_mapping, + mapping_gfp_constraint(inode->i_mapping, + ~__GFP_FS)); inode->i_mapping->a_ops = &nilfs_aops; err = page_symlink(inode, symname, l); if (err) @@ -270,10 +281,11 @@ static int nilfs_do_unlink(struct inode *dir, struct dentry *dentry) struct page *page; int err; - err = -ENOENT; de = nilfs_find_entry(dir, &dentry->d_name, &page); - if (!de) + if (IS_ERR(de)) { + err = PTR_ERR(de); goto out; + } inode = d_inode(dentry); err = -EIO; @@ -367,10 +379,11 @@ static int nilfs_rename(struct inode *old_dir, struct dentry *old_dentry, if (unlikely(err)) return err; - err = -ENOENT; old_de = nilfs_find_entry(old_dir, &old_dentry->d_name, &old_page); - if (!old_de) + if (IS_ERR(old_de)) { + err = PTR_ERR(old_de); goto out; + } if (S_ISDIR(old_inode->i_mode)) { err = -EIO; @@ -387,10 +400,12 @@ static int nilfs_rename(struct inode *old_dir, struct dentry *old_dentry, if (dir_de && !nilfs_empty_dir(new_inode)) goto out_dir; - err = -ENOENT; - new_de = nilfs_find_entry(new_dir, &new_dentry->d_name, &new_page); - if (!new_de) + new_de = nilfs_find_entry(new_dir, &new_dentry->d_name, + &new_page); + if (IS_ERR(new_de)) { + err = PTR_ERR(new_de); goto out_dir; + } nilfs_set_link(new_dir, new_de, new_page, old_inode); nilfs_mark_inode_dirty(new_dir); new_inode->i_ctime = current_time(new_inode); @@ -444,14 +459,15 @@ out: */ static struct dentry *nilfs_get_parent(struct dentry *child) { - unsigned long ino; + ino_t ino; + int res; struct inode *inode; struct qstr dotdot = QSTR_INIT("..", 2); struct nilfs_root *root; - ino = nilfs_inode_by_name(d_inode(child), &dotdot); - if (!ino) - return ERR_PTR(-ENOENT); + res = nilfs_inode_by_name(d_inode(child), &dotdot, &ino); + if (res) + return ERR_PTR(res); root = NILFS_I(d_inode(child))->i_root; diff --git a/fs/nilfs2/nilfs.h b/fs/nilfs2/nilfs.h index 028b872375b7..838962231f98 100644 --- a/fs/nilfs2/nilfs.h +++ b/fs/nilfs2/nilfs.h @@ -242,7 +242,7 @@ static inline __u32 nilfs_mask_flags(umode_t mode, __u32 flags) /* dir.c */ extern int nilfs_add_link(struct dentry *, struct inode *); -extern ino_t nilfs_inode_by_name(struct inode *, const struct qstr *); +int nilfs_inode_by_name(struct inode *dir, const struct qstr *qstr, ino_t *ino); extern int nilfs_make_empty(struct inode *, struct inode *); extern struct nilfs_dir_entry * nilfs_find_entry(struct inode *, const struct qstr *, struct page **); diff --git a/fs/nilfs2/page.c b/fs/nilfs2/page.c index cd3a8599c1e7..d2c6bced2357 100644 --- a/fs/nilfs2/page.c +++ b/fs/nilfs2/page.c @@ -87,7 +87,8 @@ void nilfs_forget_buffer(struct buffer_head *bh) const unsigned long clear_bits = (BIT(BH_Uptodate) | BIT(BH_Dirty) | BIT(BH_Mapped) | BIT(BH_Async_Write) | BIT(BH_NILFS_Volatile) | - BIT(BH_NILFS_Checked) | BIT(BH_NILFS_Redirected)); + BIT(BH_NILFS_Checked) | BIT(BH_NILFS_Redirected) | + BIT(BH_Delay)); lock_buffer(bh); set_mask_bits(&bh->b_state, clear_bits, 0); @@ -415,13 +416,15 @@ void nilfs_clear_dirty_page(struct page *page, bool silent) ClearPageUptodate(page); ClearPageMappedToDisk(page); + ClearPageChecked(page); if (page_has_buffers(page)) { struct buffer_head *bh, *head; const unsigned long clear_bits = (BIT(BH_Uptodate) | BIT(BH_Dirty) | BIT(BH_Mapped) | BIT(BH_Async_Write) | BIT(BH_NILFS_Volatile) | - BIT(BH_NILFS_Checked) | BIT(BH_NILFS_Redirected)); + BIT(BH_NILFS_Checked) | BIT(BH_NILFS_Redirected) | + BIT(BH_Delay)); bh = head = page_buffers(page); do { diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index ed921c8bf660..6e511201613a 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c @@ -172,9 +172,8 @@ int ocfs2_get_block(struct inode *inode, sector_t iblock, err = ocfs2_extent_map_get_blocks(inode, iblock, &p_blkno, &count, &ext_flags); if (err) { - mlog(ML_ERROR, "Error %d from get_blocks(0x%p, %llu, 1, " - "%llu, NULL)\n", err, inode, (unsigned long long)iblock, - (unsigned long long)p_blkno); + mlog(ML_ERROR, "get_blocks() failed, inode: 0x%p, " + "block: %llu\n", inode, (unsigned long long)iblock); goto bail; } diff --git a/fs/ocfs2/buffer_head_io.c b/fs/ocfs2/buffer_head_io.c index f9b84f7a3e4b..71a3c0201887 100644 --- a/fs/ocfs2/buffer_head_io.c +++ b/fs/ocfs2/buffer_head_io.c @@ -251,7 +251,6 @@ int ocfs2_read_blocks(struct ocfs2_caching_info *ci, u64 block, int nr, if (bhs[i] == NULL) { bhs[i] = sb_getblk(sb, block++); if (bhs[i] == NULL) { - ocfs2_metadata_cache_io_unlock(ci); status = -ENOMEM; mlog_errno(status); /* Don't forget to put previous bh! */ @@ -405,7 +404,8 @@ read_failure: /* Always set the buffer in the cache, even if it was * a forced read, or read-ahead which hasn't yet * completed. */ - ocfs2_set_buffer_uptodate(ci, bh); + if (bh) + ocfs2_set_buffer_uptodate(ci, bh); } ocfs2_metadata_cache_io_unlock(ci); diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index d8924de8da27..7242dd43ae8b 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -1793,6 +1793,14 @@ int ocfs2_remove_inode_range(struct inode *inode, return 0; if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { + int id_count = ocfs2_max_inline_data_with_xattr(inode->i_sb, di); + + if (byte_start > id_count || byte_start + byte_len > id_count) { + ret = -EINVAL; + mlog_errno(ret); + goto out; + } + ret = ocfs2_truncate_inline(inode, di_bh, byte_start, byte_start + byte_len, 0); if (ret) { diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index 39bb80fb2934..934fb7280cfa 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -989,7 +989,7 @@ void ocfs2_journal_shutdown(struct ocfs2_super *osb) if (!igrab(inode)) BUG(); - num_running_trans = atomic_read(&(osb->journal->j_num_trans)); + num_running_trans = atomic_read(&(journal->j_num_trans)); trace_ocfs2_journal_shutdown(num_running_trans); /* Do a commit_cache here. It will flush our journal, *and* @@ -1008,9 +1008,10 @@ void ocfs2_journal_shutdown(struct ocfs2_super *osb) osb->commit_task = NULL; } - BUG_ON(atomic_read(&(osb->journal->j_num_trans)) != 0); + BUG_ON(atomic_read(&(journal->j_num_trans)) != 0); - if (ocfs2_mount_local(osb)) { + if (ocfs2_mount_local(osb) && + (journal->j_journal->j_flags & JBD2_LOADED)) { jbd2_journal_lock_updates(journal->j_journal); status = jbd2_journal_flush(journal->j_journal); jbd2_journal_unlock_updates(journal->j_journal); diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c index ea38677daa06..b3d9f2dbfc8f 100644 --- a/fs/ocfs2/localalloc.c +++ b/fs/ocfs2/localalloc.c @@ -1027,6 +1027,25 @@ static int ocfs2_sync_local_to_main(struct ocfs2_super *osb, start = bit_off + 1; } + /* clear the contiguous bits until the end boundary */ + if (count) { + blkno = la_start_blk + + ocfs2_clusters_to_blocks(osb->sb, + start - count); + + trace_ocfs2_sync_local_to_main_free( + count, start - count, + (unsigned long long)la_start_blk, + (unsigned long long)blkno); + + status = ocfs2_release_clusters(handle, + main_bm_inode, + main_bm_bh, blkno, + count); + if (status < 0) + mlog_errno(status); + } + bail: if (status) mlog_errno(status); diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c index 16c42ed0dca8..74c5edd1bd95 100644 --- a/fs/ocfs2/quota_local.c +++ b/fs/ocfs2/quota_local.c @@ -690,7 +690,7 @@ static int ocfs2_local_read_info(struct super_block *sb, int type) int status; struct buffer_head *bh = NULL; struct ocfs2_quota_recovery *rec; - int locked = 0; + int locked = 0, global_read = 0; info->dqi_max_spc_limit = 0x7fffffffffffffffLL; info->dqi_max_ino_limit = 0x7fffffffffffffffLL; @@ -698,6 +698,7 @@ static int ocfs2_local_read_info(struct super_block *sb, int type) if (!oinfo) { mlog(ML_ERROR, "failed to allocate memory for ocfs2 quota" " info."); + status = -ENOMEM; goto out_err; } info->dqi_priv = oinfo; @@ -710,6 +711,7 @@ static int ocfs2_local_read_info(struct super_block *sb, int type) status = ocfs2_global_read_info(sb, type); if (status < 0) goto out_err; + global_read = 1; status = ocfs2_inode_lock(lqinode, &oinfo->dqi_lqi_bh, 1); if (status < 0) { @@ -780,10 +782,12 @@ out_err: if (locked) ocfs2_inode_unlock(lqinode, 1); ocfs2_release_local_quota_bitmaps(&oinfo->dqi_chunk); + if (global_read) + cancel_delayed_work_sync(&oinfo->dqi_sync_work); kfree(oinfo); } brelse(bh); - return -1; + return status; } /* Write local info to quota file */ diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c index 5f3190905955..c2c000297e6b 100644 --- a/fs/ocfs2/refcounttree.c +++ b/fs/ocfs2/refcounttree.c @@ -35,6 +35,7 @@ #include "namei.h" #include "ocfs2_trace.h" #include "file.h" +#include "symlink.h" #include #include @@ -4192,8 +4193,9 @@ static int __ocfs2_reflink(struct dentry *old_dentry, int ret; struct inode *inode = d_inode(old_dentry); struct buffer_head *new_bh = NULL; + struct ocfs2_inode_info *oi = OCFS2_I(inode); - if (OCFS2_I(inode)->ip_flags & OCFS2_INODE_SYSTEM_FILE) { + if (oi->ip_flags & OCFS2_INODE_SYSTEM_FILE) { ret = -EINVAL; mlog_errno(ret); goto out; @@ -4219,6 +4221,26 @@ static int __ocfs2_reflink(struct dentry *old_dentry, goto out_unlock; } + if ((oi->ip_dyn_features & OCFS2_HAS_XATTR_FL) && + (oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL)) { + /* + * Adjust extent record count to reserve space for extended attribute. + * Inline data count had been adjusted in ocfs2_duplicate_inline_data(). + */ + struct ocfs2_inode_info *new_oi = OCFS2_I(new_inode); + + if (!(new_oi->ip_dyn_features & OCFS2_INLINE_DATA_FL) && + !(ocfs2_inode_is_fast_symlink(new_inode))) { + struct ocfs2_dinode *new_di = (struct ocfs2_dinode *)new_bh->b_data; + struct ocfs2_dinode *old_di = (struct ocfs2_dinode *)old_bh->b_data; + struct ocfs2_extent_list *el = &new_di->id2.i_list; + int inline_size = le16_to_cpu(old_di->i_xattr_inline_size); + + le16_add_cpu(&el->l_count, -(inline_size / + sizeof(struct ocfs2_extent_rec))); + } + } + ret = ocfs2_create_reflink_node(inode, old_bh, new_inode, new_bh, preserve); if (ret) { @@ -4226,7 +4248,7 @@ static int __ocfs2_reflink(struct dentry *old_dentry, goto inode_unlock; } - if (OCFS2_I(inode)->ip_dyn_features & OCFS2_HAS_XATTR_FL) { + if (oi->ip_dyn_features & OCFS2_HAS_XATTR_FL) { ret = ocfs2_reflink_xattrs(inode, old_bh, new_inode, new_bh, preserve); diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c index ceba69bbe04b..09d34642d0b0 100644 --- a/fs/ocfs2/xattr.c +++ b/fs/ocfs2/xattr.c @@ -1075,13 +1075,13 @@ ssize_t ocfs2_listxattr(struct dentry *dentry, return i_ret + b_ret; } -static int ocfs2_xattr_find_entry(int name_index, +static int ocfs2_xattr_find_entry(struct inode *inode, int name_index, const char *name, struct ocfs2_xattr_search *xs) { struct ocfs2_xattr_entry *entry; size_t name_len; - int i, cmp = 1; + int i, name_offset, cmp = 1; if (name == NULL) return -EINVAL; @@ -1089,13 +1089,22 @@ static int ocfs2_xattr_find_entry(int name_index, name_len = strlen(name); entry = xs->here; for (i = 0; i < le16_to_cpu(xs->header->xh_count); i++) { + if ((void *)entry >= xs->end) { + ocfs2_error(inode->i_sb, "corrupted xattr entries"); + return -EFSCORRUPTED; + } cmp = name_index - ocfs2_xattr_get_type(entry); if (!cmp) cmp = name_len - entry->xe_name_len; - if (!cmp) - cmp = memcmp(name, (xs->base + - le16_to_cpu(entry->xe_name_offset)), - name_len); + if (!cmp) { + name_offset = le16_to_cpu(entry->xe_name_offset); + if ((xs->base + name_offset + name_len) > xs->end) { + ocfs2_error(inode->i_sb, + "corrupted xattr entries"); + return -EFSCORRUPTED; + } + cmp = memcmp(name, (xs->base + name_offset), name_len); + } if (cmp == 0) break; entry += 1; @@ -1179,7 +1188,7 @@ static int ocfs2_xattr_ibody_get(struct inode *inode, xs->base = (void *)xs->header; xs->here = xs->header->xh_entries; - ret = ocfs2_xattr_find_entry(name_index, name, xs); + ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); if (ret) return ret; size = le64_to_cpu(xs->here->xe_value_size); @@ -2711,7 +2720,7 @@ static int ocfs2_xattr_ibody_find(struct inode *inode, /* Find the named attribute. */ if (oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL) { - ret = ocfs2_xattr_find_entry(name_index, name, xs); + ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); if (ret && ret != -ENODATA) return ret; xs->not_found = ret; @@ -2846,7 +2855,7 @@ static int ocfs2_xattr_block_find(struct inode *inode, xs->end = (void *)(blk_bh->b_data) + blk_bh->b_size; xs->here = xs->header->xh_entries; - ret = ocfs2_xattr_find_entry(name_index, name, xs); + ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); } else ret = ocfs2_xattr_index_block_find(inode, blk_bh, name_index, @@ -6524,16 +6533,7 @@ static int ocfs2_reflink_xattr_inline(struct ocfs2_xattr_reflink *args) } new_oi = OCFS2_I(args->new_inode); - /* - * Adjust extent record count to reserve space for extended attribute. - * Inline data count had been adjusted in ocfs2_duplicate_inline_data(). - */ - if (!(new_oi->ip_dyn_features & OCFS2_INLINE_DATA_FL) && - !(ocfs2_inode_is_fast_symlink(args->new_inode))) { - struct ocfs2_extent_list *el = &new_di->id2.i_list; - le16_add_cpu(&el->l_count, -(inline_size / - sizeof(struct ocfs2_extent_rec))); - } + spin_lock(&new_oi->ip_lock); new_oi->ip_dyn_features |= OCFS2_HAS_XATTR_FL | OCFS2_INLINE_XATTR_FL; new_di->i_dyn_features = cpu_to_le16(new_oi->ip_dyn_features); diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index cb41329a3ee4..94818a05c7d6 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -1421,6 +1421,10 @@ extern int jbd2_journal_inode_ranged_write(handle_t *handle, extern int jbd2_journal_inode_ranged_wait(handle_t *handle, struct jbd2_inode *inode, loff_t start_byte, loff_t length); +extern int jbd2_journal_submit_inode_data_buffers( + struct jbd2_inode *jinode); +extern int jbd2_journal_finish_inode_data_buffers( + struct jbd2_inode *jinode); extern int jbd2_journal_begin_ordered_truncate(journal_t *journal, struct jbd2_inode *inode, loff_t new_size); extern void jbd2_journal_init_jbd_inode(struct jbd2_inode *jinode, struct inode *inode); diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index a5aeb52e83be..85ba086f9ba8 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -2600,6 +2600,8 @@ #define PCI_DEVICE_ID_DCI_PCCOM8 0x0002 #define PCI_DEVICE_ID_DCI_PCCOM2 0x0004 +#define PCI_VENDOR_ID_GLENFLY 0x6766 + #define PCI_VENDOR_ID_INTEL 0x8086 #define PCI_DEVICE_ID_INTEL_EESSC 0x0008 #define PCI_DEVICE_ID_INTEL_PXHD_0 0x0320 diff --git a/include/net/sock.h b/include/net/sock.h index e2f95c4665f5..2f1461e38adb 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -735,6 +735,8 @@ static inline void sk_add_bind_node(struct sock *sk, hlist_for_each_entry_safe(__sk, tmp, list, sk_node) #define sk_for_each_bound(__sk, list) \ hlist_for_each_entry(__sk, list, sk_bind_node) +#define sk_for_each_bound_safe(__sk, tmp, list) \ + hlist_for_each_entry_safe(__sk, tmp, list, sk_bind_node) /** * sk_for_each_entry_offset_rcu - iterate over a list at a given struct offset diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h index 3d544ba9b13c..58054e76d0dc 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -5,6 +5,7 @@ #if !defined(_TRACE_SCHED_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_SCHED_H +#include #include #include #include @@ -52,6 +53,89 @@ TRACE_EVENT(sched_kthread_stop_ret, TP_printk("ret=%d", __entry->ret) ); +/** + * sched_kthread_work_queue_work - called when a work gets queued + * @worker: pointer to the kthread_worker + * @work: pointer to struct kthread_work + * + * This event occurs when a work is queued immediately or once a + * delayed work is actually queued (ie: once the delay has been + * reached). + */ +TRACE_EVENT(sched_kthread_work_queue_work, + + TP_PROTO(struct kthread_worker *worker, + struct kthread_work *work), + + TP_ARGS(worker, work), + + TP_STRUCT__entry( + __field( void *, work ) + __field( void *, function) + __field( void *, worker) + ), + + TP_fast_assign( + __entry->work = work; + __entry->function = work->func; + __entry->worker = worker; + ), + + TP_printk("work struct=%p function=%ps worker=%p", + __entry->work, __entry->function, __entry->worker) +); + +/** + * sched_kthread_work_execute_start - called immediately before the work callback + * @work: pointer to struct kthread_work + * + * Allows to track kthread work execution. + */ +TRACE_EVENT(sched_kthread_work_execute_start, + + TP_PROTO(struct kthread_work *work), + + TP_ARGS(work), + + TP_STRUCT__entry( + __field( void *, work ) + __field( void *, function) + ), + + TP_fast_assign( + __entry->work = work; + __entry->function = work->func; + ), + + TP_printk("work struct %p: function %ps", __entry->work, __entry->function) +); + +/** + * sched_kthread_work_execute_end - called immediately after the work callback + * @work: pointer to struct work_struct + * @function: pointer to worker function + * + * Allows to track workqueue execution. + */ +TRACE_EVENT(sched_kthread_work_execute_end, + + TP_PROTO(struct kthread_work *work, kthread_work_func_t function), + + TP_ARGS(work, function), + + TP_STRUCT__entry( + __field( void *, work ) + __field( void *, function) + ), + + TP_fast_assign( + __entry->work = work; + __entry->function = function; + ), + + TP_printk("work struct %p: function %ps", __entry->work, __entry->function) +); + /* * Tracepoint for task enqueue/dequeue: */ diff --git a/include/uapi/linux/cec.h b/include/uapi/linux/cec.h index f50dd34e4f7b..24c8c68d9dff 100644 --- a/include/uapi/linux/cec.h +++ b/include/uapi/linux/cec.h @@ -161,6 +161,8 @@ static inline void cec_msg_init(struct cec_msg *msg, * Set the msg destination to the orig initiator and the msg initiator to the * orig destination. Note that msg and orig may be the same pointer, in which * case the change is done in place. + * + * It also zeroes the reply, timeout and flags fields. */ static inline void cec_msg_set_reply_to(struct cec_msg *msg, struct cec_msg *orig) @@ -168,7 +170,9 @@ static inline void cec_msg_set_reply_to(struct cec_msg *msg, /* The destination becomes the initiator and vice versa */ msg->msg[0] = (cec_msg_destination(orig) << 4) | cec_msg_initiator(orig); - msg->reply = msg->timeout = 0; + msg->reply = 0; + msg->timeout = 0; + msg->flags = 0; } /* cec_msg flags field */ diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 0e2667a29024..8d0c4570d6ab 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -5102,7 +5102,7 @@ static bool cgroup_check_hierarchy_limits(struct cgroup *parent) { struct cgroup *cgroup; int ret = false; - int level = 1; + int level = 0; lockdep_assert_held(&cgroup_mutex); @@ -5110,7 +5110,7 @@ static bool cgroup_check_hierarchy_limits(struct cgroup *parent) if (cgroup->nr_descendants >= cgroup->max_descendants) goto fail; - if (level > cgroup->max_depth) + if (level >= cgroup->max_depth) goto fail; level++; diff --git a/kernel/events/core.c b/kernel/events/core.c index 69efca089b89..9408a8c75606 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -3514,7 +3514,11 @@ static void perf_adjust_period(struct perf_event *event, u64 nsec, u64 count, bo period = perf_calculate_period(event, nsec, count); delta = (s64)(period - hwc->sample_period); - delta = (delta + 7) / 8; /* low pass filter */ + if (delta >= 0) + delta += 7; + else + delta -= 7; + delta /= 8; /* low pass filter */ sample_period = hwc->sample_period + delta; diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index ae2077e70f44..ae2b36dd4fce 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -1194,7 +1194,7 @@ static struct xol_area *__create_xol_area(unsigned long vaddr) area->xol_mapping.name = "[uprobes]"; area->xol_mapping.pages = area->pages; - area->pages[0] = alloc_page(GFP_HIGHUSER); + area->pages[0] = alloc_page(GFP_HIGHUSER | __GFP_ZERO); if (!area->pages[0]) goto free_bitmap; area->pages[1] = NULL; diff --git a/kernel/kthread.c b/kernel/kthread.c index 5d7c5e8eb839..97e1a1f443f3 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -674,10 +674,25 @@ repeat: spin_unlock_irq(&worker->lock); if (work) { + kthread_work_func_t func = work->func; __set_current_state(TASK_RUNNING); + trace_sched_kthread_work_execute_start(work); work->func(work); - } else if (!freezing(current)) + /* + * Avoid dereferencing work after this point. The trace + * event only cares about the address. + */ + trace_sched_kthread_work_execute_end(work, func); + } else if (!freezing(current)) { schedule(); + } else { + /* + * Handle the case where the current remains + * TASK_INTERRUPTIBLE. try_to_freeze() expects + * the current to be TASK_RUNNING. + */ + __set_current_state(TASK_RUNNING); + } try_to_freeze(); cond_resched(); @@ -804,6 +819,8 @@ static void kthread_insert_work(struct kthread_worker *worker, { kthread_insert_work_sanity_check(worker, work); + trace_sched_kthread_work_queue_work(worker, work); + list_add_tail(&work->node, pos); work->worker = worker; if (!worker->current_work && likely(worker->task)) diff --git a/kernel/signal.c b/kernel/signal.c index b05a96402d8e..0580439a47c3 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1587,10 +1587,11 @@ struct sigqueue *sigqueue_alloc(void) void sigqueue_free(struct sigqueue *q) { - unsigned long flags; spinlock_t *lock = ¤t->sighand->siglock; + unsigned long flags; - BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); + if (WARN_ON_ONCE(!(q->flags & SIGQUEUE_PREALLOC))) + return; /* * We must hold ->siglock while testing q->list * to serialize with collect_signal() or with @@ -1617,7 +1618,10 @@ int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) unsigned long flags; int ret, result; - BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); + if (WARN_ON_ONCE(!(q->flags & SIGQUEUE_PREALLOC))) + return 0; + if (WARN_ON_ONCE(q->info.si_code != SI_TIMER)) + return 0; ret = -1; if (!likely(lock_task_sighand(t, &flags))) @@ -1634,7 +1638,6 @@ int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) * If an SI_TIMER entry is already queue just increment * the overrun count. */ - BUG_ON(q->info.si_code != SI_TIMER); q->info.si_overrun++; result = TRACE_SIGNAL_ALREADY_PENDING; goto out; diff --git a/kernel/time/posix-clock.c b/kernel/time/posix-clock.c index e5706a826c1f..4f11d47467c8 100644 --- a/kernel/time/posix-clock.c +++ b/kernel/time/posix-clock.c @@ -303,6 +303,9 @@ static int pc_clock_settime(clockid_t id, const struct timespec64 *ts) struct posix_clock_desc cd; int err; + if (!timespec64_valid_strict(ts)) + return -EINVAL; + err = get_clock_desc(id, &cd); if (err) return err; diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 75bc24f5c7d3..1116448dce7f 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -1487,12 +1487,11 @@ static enum print_line_t trace_print_print(struct trace_iterator *iter, { struct print_entry *field; struct trace_seq *s = &iter->seq; - int max = iter->ent_size - offsetof(struct print_entry, buf); trace_assign_type(field, iter->ent); seq_print_ip_sym(s, field->ip, flags); - trace_seq_printf(s, ": %.*s", max, field->buf); + trace_seq_printf(s, ": %s", field->buf); return trace_handle_return(s); } @@ -1501,11 +1500,10 @@ static enum print_line_t trace_print_raw(struct trace_iterator *iter, int flags, struct trace_event *event) { struct print_entry *field; - int max = iter->ent_size - offsetof(struct print_entry, buf); trace_assign_type(field, iter->ent); - trace_seq_printf(&iter->seq, "# %lx %.*s", field->ip, max, field->buf); + trace_seq_printf(&iter->seq, "# %lx %s", field->ip, field->buf); return trace_handle_return(&iter->seq); } diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c index a16d584a6c0d..e1cfd110d281 100644 --- a/net/bluetooth/bnep/core.c +++ b/net/bluetooth/bnep/core.c @@ -744,8 +744,7 @@ static int __init bnep_init(void) if (flt[0]) BT_INFO("BNEP filters: %s", flt); - bnep_sock_init(); - return 0; + return bnep_sock_init(); } static void __exit bnep_exit(void) diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c index eeff89e8ad4c..0d832f175e69 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c @@ -872,9 +872,7 @@ static int rfcomm_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned lon if (err == -ENOIOCTLCMD) { #ifdef CONFIG_BT_RFCOMM_TTY - lock_sock(sk); err = rfcomm_dev_ioctl(sk, cmd, (void __user *) arg); - release_sock(sk); #else err = -EOPNOTSUPP; #endif diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c index c33e7f4b0ec3..6733505856ce 100644 --- a/net/bridge/br_netfilter_hooks.c +++ b/net/bridge/br_netfilter_hooks.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -740,6 +741,10 @@ static int br_nf_dev_queue_xmit(struct net *net, struct sock *sk, struct sk_buff return br_dev_queue_push_xmit(net, sk, skb); } + /* Fragmentation on metadata/template dst is not supported */ + if (unlikely(!skb_valid_dst(skb))) + goto drop; + /* This is wrong! We should preserve the original fragment * boundaries by preserving frag_list rather than refragmenting. */ diff --git a/net/can/bcm.c b/net/can/bcm.c index 4e015f139eae..5a0a7c249b4d 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c @@ -1475,8 +1475,10 @@ static void bcm_notify(struct bcm_sock *bo, unsigned long msg, /* remove device reference, if this is our bound device */ if (bo->bound && bo->ifindex == dev->ifindex) { #if IS_ENABLED(CONFIG_PROC_FS) - if (sock_net(sk)->can.bcmproc_dir && bo->bcm_proc_read) + if (sock_net(sk)->can.bcmproc_dir && bo->bcm_proc_read) { remove_proc_entry(bo->procname, sock_net(sk)->can.bcmproc_dir); + bo->bcm_proc_read = NULL; + } #endif bo->bound = 0; bo->ifindex = 0; diff --git a/net/core/dev.c b/net/core/dev.c index a3c551e0791b..9a0f4c34c632 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3066,7 +3066,22 @@ int skb_csum_hwoffload_help(struct sk_buff *skb, return !!(features & NETIF_F_SCTP_CRC) ? 0 : skb_crc32c_csum_help(skb); - return !!(features & NETIF_F_CSUM_MASK) ? 0 : skb_checksum_help(skb); + if (features & NETIF_F_HW_CSUM) + return 0; + + if (features & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM)) { + if (vlan_get_protocol(skb) == htons(ETH_P_IPV6) && + skb_network_header_len(skb) != sizeof(struct ipv6hdr)) + goto sw_checksum; + switch (skb->csum_offset) { + case offsetof(struct tcphdr, check): + case offsetof(struct udphdr, check): + return 0; + } + } + +sw_checksum: + return skb_checksum_help(skb); } EXPORT_SYMBOL(skb_csum_hwoffload_help); diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index eb078ead47e6..a718fd5fb47e 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -533,10 +533,6 @@ static int inet_set_ifa(struct net_device *dev, struct in_ifaddr *ifa) ASSERT_RTNL(); - if (!in_dev) { - inet_free_ifa(ifa); - return -ENOBUFS; - } ipv4_devconf_setall(in_dev); neigh_parms_data_state_setall(in_dev->arp_parms); if (ifa->ifa_dev != in_dev) { @@ -1096,6 +1092,8 @@ int devinet_ioctl(struct net *net, unsigned int cmd, void __user *arg) if (!ifa) { ret = -ENOBUFS; + if (!in_dev) + break; ifa = inet_alloc_ifa(); if (!ifa) break; diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 710f5609b7f4..8bab8d9b0795 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -1072,7 +1072,7 @@ static void nl_fib_lookup(struct net *net, struct fib_result_nl *frn) struct flowi4 fl4 = { .flowi4_mark = frn->fl_mark, .daddr = frn->fl_addr, - .flowi4_tos = frn->fl_tos, + .flowi4_tos = frn->fl_tos & IPTOS_RT_MASK, .flowi4_scope = frn->fl_scope, }; struct fib_table *tb; diff --git a/net/ipv4/netfilter/nf_dup_ipv4.c b/net/ipv4/netfilter/nf_dup_ipv4.c index 39895b9ddeb9..b385c97ddc29 100644 --- a/net/ipv4/netfilter/nf_dup_ipv4.c +++ b/net/ipv4/netfilter/nf_dup_ipv4.c @@ -55,8 +55,9 @@ void nf_dup_ipv4(struct net *net, struct sk_buff *skb, unsigned int hooknum, { struct iphdr *iph; + local_bh_disable(); if (this_cpu_read(nf_skb_duplicated)) - return; + goto out; /* * Copy the skb, and route the copy. Will later return %XT_CONTINUE for * the original skb, which should continue on its way as if nothing has @@ -64,7 +65,7 @@ void nf_dup_ipv4(struct net *net, struct sk_buff *skb, unsigned int hooknum, */ skb = pskb_copy(skb, GFP_ATOMIC); if (skb == NULL) - return; + goto out; #if IS_ENABLED(CONFIG_NF_CONNTRACK) /* Avoid counting cloned packets towards the original connection. */ @@ -93,6 +94,8 @@ void nf_dup_ipv4(struct net *net, struct sk_buff *skb, unsigned int hooknum, } else { kfree_skb(skb); } +out: + local_bh_enable(); } EXPORT_SYMBOL_GPL(nf_dup_ipv4); diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index d2e017a80230..9b0878780430 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -2384,6 +2384,16 @@ static bool tcp_any_retrans_done(const struct sock *sk) return false; } +/* If loss recovery is finished and there are no retransmits out in the + * network, then we clear retrans_stamp so that upon the next loss recovery + * retransmits_timed_out() and timestamp-undo are using the correct value. + */ +static void tcp_retrans_stamp_cleanup(struct sock *sk) +{ + if (!tcp_any_retrans_done(sk)) + tcp_sk(sk)->retrans_stamp = 0; +} + static void DBGUNDO(struct sock *sk, const char *msg) { #if FASTRETRANS_DEBUG > 1 @@ -2725,6 +2735,9 @@ void tcp_enter_recovery(struct sock *sk, bool ece_ack) struct tcp_sock *tp = tcp_sk(sk); int mib_idx; + /* Start the clock with our fast retransmit, for undo and ETIMEDOUT. */ + tcp_retrans_stamp_cleanup(sk); + if (tcp_is_reno(tp)) mib_idx = LINUX_MIB_TCPRENORECOVERY; else diff --git a/net/ipv6/netfilter/nf_dup_ipv6.c b/net/ipv6/netfilter/nf_dup_ipv6.c index 4a7ddeddbaab..941e389c227f 100644 --- a/net/ipv6/netfilter/nf_dup_ipv6.c +++ b/net/ipv6/netfilter/nf_dup_ipv6.c @@ -50,11 +50,12 @@ static bool nf_dup_ipv6_route(struct net *net, struct sk_buff *skb, void nf_dup_ipv6(struct net *net, struct sk_buff *skb, unsigned int hooknum, const struct in6_addr *gw, int oif) { + local_bh_disable(); if (this_cpu_read(nf_skb_duplicated)) - return; + goto out; skb = pskb_copy(skb, GFP_ATOMIC); if (skb == NULL) - return; + goto out; #if IS_ENABLED(CONFIG_NF_CONNTRACK) nf_reset(skb); @@ -72,6 +73,8 @@ void nf_dup_ipv6(struct net *net, struct sk_buff *skb, unsigned int hooknum, } else { kfree_skb(skb); } +out: + local_bh_enable(); } EXPORT_SYMBOL_GPL(nf_dup_ipv6); diff --git a/net/ipv6/netfilter/nf_reject_ipv6.c b/net/ipv6/netfilter/nf_reject_ipv6.c index 24858402e374..0edf9c1192de 100644 --- a/net/ipv6/netfilter/nf_reject_ipv6.c +++ b/net/ipv6/netfilter/nf_reject_ipv6.c @@ -92,33 +92,23 @@ void nf_reject_ip6_tcphdr_put(struct sk_buff *nskb, const struct tcphdr *oth, unsigned int otcplen) { struct tcphdr *tcph; - int needs_ack; skb_reset_transport_header(nskb); - tcph = skb_put(nskb, sizeof(struct tcphdr)); + tcph = skb_put_zero(nskb, sizeof(struct tcphdr)); /* Truncate to length (no data) */ tcph->doff = sizeof(struct tcphdr)/4; tcph->source = oth->dest; tcph->dest = oth->source; if (oth->ack) { - needs_ack = 0; tcph->seq = oth->ack_seq; - tcph->ack_seq = 0; } else { - needs_ack = 1; tcph->ack_seq = htonl(ntohl(oth->seq) + oth->syn + oth->fin + otcplen - (oth->doff<<2)); - tcph->seq = 0; + tcph->ack = 1; } - /* Reset flags */ - ((u_int8_t *)tcph)[13] = 0; tcph->rst = 1; - tcph->ack = needs_ack; - tcph->window = 0; - tcph->urg_ptr = 0; - tcph->check = 0; /* Adjust TCP checksum */ tcph->check = csum_ipv6_magic(&ipv6_hdr(nskb)->saddr, diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 6ae941f2752d..438e4496cfe8 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -2419,7 +2419,8 @@ static int ieee80211_get_tx_power(struct wiphy *wiphy, struct ieee80211_local *local = wiphy_priv(wiphy); struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); - if (local->ops->get_txpower) + if (local->ops->get_txpower && + (sdata->flags & IEEE80211_SDATA_IN_DRIVER)) return drv_get_txpower(local, sdata, dbm); if (!local->use_chanctx) diff --git a/net/mac80211/key.c b/net/mac80211/key.c index 87ed1210295f..3bec20b73436 100644 --- a/net/mac80211/key.c +++ b/net/mac80211/key.c @@ -771,6 +771,26 @@ void ieee80211_reset_crypto_tx_tailroom(struct ieee80211_sub_if_data *sdata) mutex_unlock(&sdata->local->key_mtx); } +static void +ieee80211_key_iter(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + struct ieee80211_key *key, + void (*iter)(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + struct ieee80211_sta *sta, + struct ieee80211_key_conf *key, + void *data), + void *iter_data) +{ + /* skip keys of station in removal process */ + if (key->sta && key->sta->removed) + return; + if (!(key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)) + return; + iter(hw, vif, key->sta ? &key->sta->sta : NULL, + &key->conf, iter_data); +} + void ieee80211_iter_keys(struct ieee80211_hw *hw, struct ieee80211_vif *vif, void (*iter)(struct ieee80211_hw *hw, @@ -790,16 +810,13 @@ void ieee80211_iter_keys(struct ieee80211_hw *hw, if (vif) { sdata = vif_to_sdata(vif); list_for_each_entry_safe(key, tmp, &sdata->key_list, list) - iter(hw, &sdata->vif, - key->sta ? &key->sta->sta : NULL, - &key->conf, iter_data); + ieee80211_key_iter(hw, vif, key, iter, iter_data); } else { list_for_each_entry(sdata, &local->interfaces, list) list_for_each_entry_safe(key, tmp, &sdata->key_list, list) - iter(hw, &sdata->vif, - key->sta ? &key->sta->sta : NULL, - &key->conf, iter_data); + ieee80211_key_iter(hw, &sdata->vif, key, + iter, iter_data); } mutex_unlock(&local->key_mtx); } @@ -817,17 +834,8 @@ _ieee80211_iter_keys_rcu(struct ieee80211_hw *hw, { struct ieee80211_key *key; - list_for_each_entry_rcu(key, &sdata->key_list, list) { - /* skip keys of station in removal process */ - if (key->sta && key->sta->removed) - continue; - if (!(key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)) - continue; - - iter(hw, &sdata->vif, - key->sta ? &key->sta->sta : NULL, - &key->conf, iter_data); - } + list_for_each_entry_rcu(key, &sdata->key_list, list) + ieee80211_key_iter(hw, &sdata->vif, key, iter, iter_data); } void ieee80211_iter_keys_rcu(struct ieee80211_hw *hw, diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c index 4d1f9c6294f7..0069464e4302 100644 --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c @@ -342,7 +342,7 @@ nla_put_failure: #define ctnetlink_dump_secctx(a, b) (0) #endif -#ifdef CONFIG_NF_CONNTRACK_LABELS +#ifdef CONFIG_NF_CONNTRACK_EVENTS static inline int ctnetlink_label_size(const struct nf_conn *ct) { struct nf_conn_labels *labels = nf_ct_labels_find(ct); @@ -351,6 +351,7 @@ static inline int ctnetlink_label_size(const struct nf_conn *ct) return 0; return nla_total_size(sizeof(labels->bits)); } +#endif static int ctnetlink_dump_labels(struct sk_buff *skb, const struct nf_conn *ct) @@ -371,10 +372,6 @@ ctnetlink_dump_labels(struct sk_buff *skb, const struct nf_conn *ct) return 0; } -#else -#define ctnetlink_dump_labels(a, b) (0) -#define ctnetlink_label_size(a) (0) -#endif #define master_tuple(ct) &(ct->master->tuplehash[IP_CT_DIR_ORIGINAL].tuple) diff --git a/net/netfilter/nft_payload.c b/net/netfilter/nft_payload.c index 0ef51c81ec94..128195a7ea5e 100644 --- a/net/netfilter/nft_payload.c +++ b/net/netfilter/nft_payload.c @@ -306,6 +306,9 @@ static void nft_payload_set_eval(const struct nft_expr *expr, if ((priv->csum_type == NFT_PAYLOAD_CSUM_INET || priv->csum_flags) && (priv->base != NFT_PAYLOAD_TRANSPORT_HEADER || skb->ip_summed != CHECKSUM_PARTIAL)) { + if (offset + priv->len > skb->len) + goto err; + fsum = skb_checksum(skb, offset, priv->len, 0); tsum = csum_partial(src, priv->len, 0); diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index ee42244aada1..e26c98882369 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -2139,8 +2139,9 @@ void __netlink_clear_multicast_users(struct sock *ksk, unsigned int group) { struct sock *sk; struct netlink_table *tbl = &nl_table[ksk->sk_protocol]; + struct hlist_node *tmp; - sk_for_each_bound(sk, &tbl->mc_list) + sk_for_each_bound_safe(sk, tmp, &tbl->mc_list) netlink_update_socket_mc(nlk_sk(sk), group, 0); } diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c index 730f7731395c..56741db5d148 100644 --- a/net/qrtr/qrtr.c +++ b/net/qrtr/qrtr.c @@ -1544,7 +1544,7 @@ static int qrtr_bcast_enqueue(struct qrtr_node *node, struct sk_buff *skb, list_for_each_entry(node, &qrtr_all_epts, item) { if (node->nid == QRTR_EP_NID_AUTO && type != QRTR_TYPE_HELLO) continue; - skbn = skb_clone(skb, GFP_KERNEL); + skbn = pskb_copy(skb, GFP_KERNEL); if (!skbn) break; skb_set_owner_w(skbn, skb->sk); diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index b843796c3d2e..0069de848e90 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -739,7 +739,7 @@ void qdisc_tree_reduce_backlog(struct Qdisc *sch, unsigned int n, drops = max_t(int, n, 0); rcu_read_lock(); while ((parentid = sch->parent)) { - if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS)) + if (parentid == TC_H_ROOT) break; if (sch->flags & TCQ_F_NOPARENT) diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index db21e00806f5..e724e72fe567 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c @@ -158,8 +158,12 @@ static int bearer_name_validate(const char *name, /* return bearer name components, if necessary */ if (name_parts) { - strcpy(name_parts->media_name, media_name); - strcpy(name_parts->if_name, if_name); + if (strscpy(name_parts->media_name, media_name, + TIPC_MAX_MEDIA_NAME) < 0) + return 0; + if (strscpy(name_parts->if_name, if_name, + TIPC_MAX_IF_NAME) < 0) + return 0; } return 1; } diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index c5741c983f6b..1c22661eb272 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -148,6 +148,7 @@ static int verify_newsa_info(struct xfrm_usersa_info *p, struct nlattr **attrs) { int err; + u16 family = p->sel.family; err = -EINVAL; switch (p->family) { @@ -166,7 +167,10 @@ static int verify_newsa_info(struct xfrm_usersa_info *p, goto out; } - switch (p->sel.family) { + if (!family && !(p->flags & XFRM_STATE_AF_UNSPEC)) + family = p->family; + + switch (family) { case AF_UNSPEC: break; diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh index b5115c6b22f6..ca9bbddc93c5 100755 --- a/scripts/kconfig/merge_config.sh +++ b/scripts/kconfig/merge_config.sh @@ -128,6 +128,8 @@ for MERGE_FILE in $MERGE_LIST ; do fi sed -i "/$CFG[ =]/d" $TMP_FILE done + # In case the previous file lacks a new line at the end + echo >> $TMP_FILE cat $MERGE_FILE >> $TMP_FILE done diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c index 61e734baa332..83dbfa26a651 100644 --- a/security/smack/smackfs.c +++ b/security/smack/smackfs.c @@ -948,7 +948,7 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf, rc = smk_netlbl_mls(maplevel, mapcatset, &ncats, SMK_CIPSOLEN); if (rc >= 0) { old_cat = skp->smk_netlabel.attr.mls.cat; - skp->smk_netlabel.attr.mls.cat = ncats.attr.mls.cat; + rcu_assign_pointer(skp->smk_netlabel.attr.mls.cat, ncats.attr.mls.cat); skp->smk_netlabel.attr.mls.lvl = ncats.attr.mls.lvl; synchronize_rcu(); netlbl_catmap_free(old_cat); diff --git a/security/tomoyo/domain.c b/security/tomoyo/domain.c index f6758dad981f..0271b40b4bb6 100644 --- a/security/tomoyo/domain.c +++ b/security/tomoyo/domain.c @@ -701,10 +701,13 @@ int tomoyo_find_next_domain(struct linux_binprm *bprm) ee->r.obj = &ee->obj; ee->obj.path1 = bprm->file->f_path; /* Get symlink's pathname of program. */ - retval = -ENOENT; exename.name = tomoyo_realpath_nofollow(original_name); - if (!exename.name) - goto out; + if (!exename.name) { + /* Fallback to realpath if symlink's pathname does not exist. */ + exename.name = tomoyo_realpath_from_path(&bprm->file->f_path); + if (!exename.name) + goto out; + } tomoyo_fill_path_info(&exename); retry: /* Check 'aggregator' directive. */ diff --git a/sound/core/init.c b/sound/core/init.c index 6bd56ce35ae5..93cf6e89306a 100644 --- a/sound/core/init.c +++ b/sound/core/init.c @@ -624,13 +624,19 @@ int snd_card_free(struct snd_card *card) } EXPORT_SYMBOL(snd_card_free); +/* check, if the character is in the valid ASCII range */ +static inline bool safe_ascii_char(char c) +{ + return isascii(c) && isalnum(c); +} + /* retrieve the last word of shortname or longname */ static const char *retrieve_id_from_card_name(const char *name) { const char *spos = name; while (*name) { - if (isspace(*name) && isalnum(name[1])) + if (isspace(*name) && safe_ascii_char(name[1])) spos = name + 1; name++; } @@ -657,12 +663,12 @@ static void copy_valid_id_string(struct snd_card *card, const char *src, { char *id = card->id; - while (*nid && !isalnum(*nid)) + while (*nid && !safe_ascii_char(*nid)) nid++; if (isdigit(*nid)) *id++ = isalpha(*src) ? *src : 'D'; while (*nid && (size_t)(id - card->id) < sizeof(card->id) - 1) { - if (isalnum(*nid)) + if (safe_ascii_char(*nid)) *id++ = *nid; nid++; } @@ -760,7 +766,7 @@ card_id_store_attr(struct device *dev, struct device_attribute *attr, for (idx = 0; idx < copy; idx++) { c = buf[idx]; - if (!isalnum(c) && c != '_' && c != '-') + if (!safe_ascii_char(c) && c != '_' && c != '-') return -EINVAL; } memcpy(buf1, buf, copy); diff --git a/sound/pci/asihpi/hpimsgx.c b/sound/pci/asihpi/hpimsgx.c index 736f45337fc7..5be1d910a5d5 100644 --- a/sound/pci/asihpi/hpimsgx.c +++ b/sound/pci/asihpi/hpimsgx.c @@ -724,7 +724,7 @@ static u16 HPIMSGX__init(struct hpi_message *phm, phr->error = HPI_ERROR_PROCESSING_MESSAGE; return phr->error; } - if (hr.error == 0) { + if (hr.error == 0 && hr.u.s.adapter_index < HPI_MAX_ADAPTERS) { /* the adapter was created successfully save the mapping for future use */ hpi_entry_points[hr.u.s.adapter_index] = entry_point_func; diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index 383c3d7fa5d7..aa0c70d63c01 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -1381,7 +1381,7 @@ static int try_assign_dacs(struct hda_codec *codec, int num_outs, struct nid_path *path; hda_nid_t pin = pins[i]; - if (!spec->obey_preferred_dacs) { + if (!spec->preferred_dacs) { path = snd_hda_get_path_from_idx(codec, path_idx[i]); if (path) { badness += assign_out_path_ctls(codec, path); @@ -1393,7 +1393,7 @@ static int try_assign_dacs(struct hda_codec *codec, int num_outs, if (dacs[i]) { if (is_dac_already_used(codec, dacs[i])) badness += bad->shared_primary; - } else if (spec->obey_preferred_dacs) { + } else if (spec->preferred_dacs) { badness += BAD_NO_PRIMARY_DAC; } diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index fd09d4e5e4f4..4bb34502835c 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c @@ -767,6 +767,23 @@ static const struct hda_pintbl cxt_pincfg_sws_js201d[] = { {} }; +/* pincfg quirk for Tuxedo Sirius; + * unfortunately the (PCI) SSID conflicts with System76 Pangolin pang14, + * which has incompatible pin setup, so we check the codec SSID (luckily + * different one!) and conditionally apply the quirk here + */ +static void cxt_fixup_sirius_top_speaker(struct hda_codec *codec, + const struct hda_fixup *fix, + int action) +{ + /* ignore for incorrectly picked-up pang14 */ + if (codec->core.subsystem_id == 0x278212b3) + return; + /* set up the top speaker pin */ + if (action == HDA_FIXUP_ACT_PRE_PROBE) + snd_hda_codec_set_pincfg(codec, 0x1d, 0x82170111); +} + static const struct hda_fixup cxt_fixups[] = { [CXT_PINCFG_LENOVO_X200] = { .type = HDA_FIXUP_PINS, @@ -923,11 +940,8 @@ static const struct hda_fixup cxt_fixups[] = { .v.pins = cxt_pincfg_sws_js201d, }, [CXT_PINCFG_TOP_SPEAKER] = { - .type = HDA_FIXUP_PINS, - .v.pins = (const struct hda_pintbl[]) { - { 0x1d, 0x82170111 }, - { } - }, + .type = HDA_FIXUP_FUNC, + .v.func = cxt_fixup_sirius_top_speaker, }, }; diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c index edd359772f1f..7dab89a3b03a 100644 --- a/sound/pci/rme9652/hdsp.c +++ b/sound/pci/rme9652/hdsp.c @@ -1322,8 +1322,10 @@ static int snd_hdsp_midi_output_possible (struct hdsp *hdsp, int id) static void snd_hdsp_flush_midi_input (struct hdsp *hdsp, int id) { - while (snd_hdsp_midi_input_available (hdsp, id)) - snd_hdsp_midi_read_byte (hdsp, id); + int count = 256; + + while (snd_hdsp_midi_input_available(hdsp, id) && --count) + snd_hdsp_midi_read_byte(hdsp, id); } static int snd_hdsp_midi_output_write (struct hdsp_midi *hmidi) diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c index 5bbbbba0817b..de14e3071300 100644 --- a/sound/pci/rme9652/hdspm.c +++ b/sound/pci/rme9652/hdspm.c @@ -1846,8 +1846,10 @@ static inline int snd_hdspm_midi_output_possible (struct hdspm *hdspm, int id) static void snd_hdspm_flush_midi_input(struct hdspm *hdspm, int id) { - while (snd_hdspm_midi_input_available (hdspm, id)) - snd_hdspm_midi_read_byte (hdspm, id); + int count = 256; + + while (snd_hdspm_midi_input_available(hdspm, id) && --count) + snd_hdspm_midi_read_byte(hdspm, id); } static int snd_hdspm_midi_output_write (struct hdspm_midi *hmidi) diff --git a/sound/soc/au1x/db1200.c b/sound/soc/au1x/db1200.c index 301e1fc9a377..24d16e6bf750 100644 --- a/sound/soc/au1x/db1200.c +++ b/sound/soc/au1x/db1200.c @@ -43,6 +43,7 @@ static const struct platform_device_id db1200_pids[] = { }, {}, }; +MODULE_DEVICE_TABLE(platform, db1200_pids); /*------------------------- AC97 PART ---------------------------*/ diff --git a/tools/iio/iio_generic_buffer.c b/tools/iio/iio_generic_buffer.c index 287b9fcf831c..b2bea7a7a549 100644 --- a/tools/iio/iio_generic_buffer.c +++ b/tools/iio/iio_generic_buffer.c @@ -480,6 +480,10 @@ int main(int argc, char **argv) return -ENOMEM; } trigger_name = malloc(IIO_MAX_NAME_LENGTH); + if (!trigger_name) { + ret = -ENOMEM; + goto error; + } ret = read_sysfs_string("name", trig_dev_name, trigger_name); free(trig_dev_name); if (ret < 0) { diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 9c2ad6063b10..3059d3a874a5 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -2501,9 +2501,12 @@ static int timehist_sched_change_event(struct perf_tool *tool, * - previous sched event is out of window - we are done * - sample time is beyond window user cares about - reset it * to close out stats for time window interest + * - If tprev is 0, that is, sched_in event for current task is + * not recorded, cannot determine whether sched_in event is + * within time window interest - ignore it */ if (ptime->end) { - if (tprev > ptime->end) + if (!tprev || tprev > ptime->end) goto out; if (t > ptime->end) @@ -2941,7 +2944,8 @@ static int perf_sched__timehist(struct perf_sched *sched) if (perf_time__parse_str(&sched->ptime, sched->time_str) != 0) { pr_err("Invalid time string\n"); - return -EINVAL; + err = -EINVAL; + goto out; } if (timehist_check_attr(sched, evlist) != 0) diff --git a/tools/perf/util/time-utils.c b/tools/perf/util/time-utils.c index 81927d027417..c1ade79b419b 100644 --- a/tools/perf/util/time-utils.c +++ b/tools/perf/util/time-utils.c @@ -16,7 +16,7 @@ int parse_nsec_time(const char *str, u64 *ptime) u64 time_sec, time_nsec; char *end; - time_sec = strtoul(str, &end, 10); + time_sec = strtoull(str, &end, 10); if (*end != '.' && *end != '\0') return -1; @@ -34,7 +34,7 @@ int parse_nsec_time(const char *str, u64 *ptime) for (i = strlen(nsec_buf); i < 9; i++) nsec_buf[i] = '0'; - time_nsec = strtoul(nsec_buf, &end, 10); + time_nsec = strtoull(nsec_buf, &end, 10); if (*end != '\0') return -1; } else diff --git a/tools/testing/selftests/bpf/test_lru_map.c b/tools/testing/selftests/bpf/test_lru_map.c index 8c10c9180c1a..0b5b0e4cccd0 100644 --- a/tools/testing/selftests/bpf/test_lru_map.c +++ b/tools/testing/selftests/bpf/test_lru_map.c @@ -75,7 +75,8 @@ static int sched_next_online(int pid, int *next_to_try) while (next < nr_cpus) { CPU_ZERO(&cpuset); - CPU_SET(next++, &cpuset); + CPU_SET(next, &cpuset); + next++; if (!sched_setaffinity(pid, sizeof(cpuset), &cpuset)) { ret = 0; break; diff --git a/tools/testing/selftests/breakpoints/step_after_suspend_test.c b/tools/testing/selftests/breakpoints/step_after_suspend_test.c index 3fece06e9f64..dc8f13d6f77b 100644 --- a/tools/testing/selftests/breakpoints/step_after_suspend_test.c +++ b/tools/testing/selftests/breakpoints/step_after_suspend_test.c @@ -157,7 +157,10 @@ void suspend(void) if (err < 0) ksft_exit_fail_msg("timerfd_settime() failed\n"); - if (write(power_state_fd, "mem", strlen("mem")) != strlen("mem")) + system("(echo mem > /sys/power/state) 2> /dev/null"); + + timerfd_gettime(timerfd, &spec); + if (spec.it_value.tv_sec != 0 || spec.it_value.tv_nsec != 0) ksft_exit_fail_msg("Failed to enter Suspend state\n"); close(timerfd); diff --git a/tools/testing/selftests/kcmp/kcmp_test.c b/tools/testing/selftests/kcmp/kcmp_test.c index d7a8e321bb16..60305f858c48 100644 --- a/tools/testing/selftests/kcmp/kcmp_test.c +++ b/tools/testing/selftests/kcmp/kcmp_test.c @@ -89,7 +89,6 @@ int main(int argc, char **argv) int ret; ksft_print_header(); - ksft_set_plan(3); fd2 = open(kpath, O_RDWR); if (fd2 < 0) { diff --git a/tools/testing/selftests/vDSO/parse_vdso.c b/tools/testing/selftests/vDSO/parse_vdso.c index 9ef3ad3789c1..540f9a284e9f 100644 --- a/tools/testing/selftests/vDSO/parse_vdso.c +++ b/tools/testing/selftests/vDSO/parse_vdso.c @@ -238,7 +238,8 @@ void *vdso_sym(const char *version, const char *name) ELF(Sym) *sym = &vdso_info.symtab[chain]; /* Check for a defined global or weak function w/ right name. */ - if (ELF64_ST_TYPE(sym->st_info) != STT_FUNC) + if (ELF64_ST_TYPE(sym->st_info) != STT_FUNC && + ELF64_ST_TYPE(sym->st_info) != STT_NOTYPE) continue; if (ELF64_ST_BIND(sym->st_info) != STB_GLOBAL && ELF64_ST_BIND(sym->st_info) != STB_WEAK) diff --git a/tools/testing/selftests/vm/compaction_test.c b/tools/testing/selftests/vm/compaction_test.c index e056cfc487e0..e7044fa7f0b7 100644 --- a/tools/testing/selftests/vm/compaction_test.c +++ b/tools/testing/selftests/vm/compaction_test.c @@ -183,8 +183,6 @@ int main(int argc, char **argv) if (prereq() != 0) return ksft_exit_pass(); - ksft_set_plan(1); - lim.rlim_cur = RLIM_INFINITY; lim.rlim_max = RLIM_INFINITY; if (setrlimit(RLIMIT_MEMLOCK, &lim)) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 7c4de635f00a..722df8076435 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -2428,12 +2428,13 @@ void kvm_vcpu_on_spin(struct kvm_vcpu *me, bool yield_to_kernel_mode) { struct kvm *kvm = me->kvm; struct kvm_vcpu *vcpu; - int last_boosted_vcpu = me->kvm->last_boosted_vcpu; + int last_boosted_vcpu; int yielded = 0; int try = 3; int pass; int i; + last_boosted_vcpu = READ_ONCE(kvm->last_boosted_vcpu); kvm_vcpu_set_in_spin_loop(me, true); /* * We boost the priority of a VCPU that is runnable but not @@ -2462,7 +2463,7 @@ void kvm_vcpu_on_spin(struct kvm_vcpu *me, bool yield_to_kernel_mode) yielded = kvm_vcpu_yield_to(vcpu); if (yielded > 0) { - kvm->last_boosted_vcpu = i; + WRITE_ONCE(kvm->last_boosted_vcpu, i); break; } else if (yielded < 0) { try--;