Linux 5.4.70
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.70 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/iostats.rst | 5 Documentation/devicetree/bindings/gpio/sgpio-aspeed.txt | 5 Makefile | 2 arch/ia64/mm/init.c | 6 block/bio.c | 8 block/blk-core.c | 4 drivers/base/node.c | 85 +++++--- drivers/clk/samsung/clk-exynos4.c | 4 drivers/clk/socfpga/clk-s10.c | 2 drivers/clk/tegra/clk-pll.c | 3 drivers/clocksource/timer-gx6605s.c | 1 drivers/gpio/gpio-aspeed.c | 4 drivers/gpio/gpio-mockup.c | 2 drivers/gpio/gpio-siox.c | 1 drivers/gpio/gpio-sprd.c | 3 drivers/gpio/gpio-tc3589x.c | 2 drivers/gpio/sgpio-aspeed.c | 134 ++++++++----- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 drivers/gpu/drm/sun4i/sun8i_mixer.c | 2 drivers/i2c/busses/i2c-cpm.c | 3 drivers/iio/adc/qcom-spmi-adc5.c | 2 drivers/input/mouse/trackpoint.c | 2 drivers/input/serio/i8042-x86ia64io.h | 7 drivers/iommu/exynos-iommu.c | 8 drivers/memstick/core/memstick.c | 4 drivers/mmc/host/sdhci-pci-core.c | 3 drivers/net/ethernet/dec/tulip/de2104x.c | 2 drivers/net/usb/rndis_host.c | 2 drivers/net/wan/hdlc_cisco.c | 1 drivers/net/wan/hdlc_fr.c | 6 drivers/net/wan/hdlc_ppp.c | 1 drivers/net/wan/lapbether.c | 4 drivers/nvme/host/core.c | 55 +++-- drivers/nvme/host/fc.c | 6 drivers/nvme/host/nvme.h | 16 + drivers/nvme/host/pci.c | 14 - drivers/phy/ti/phy-am654-serdes.c | 6 drivers/pinctrl/mvebu/pinctrl-armada-xp.c | 2 drivers/spi/spi-fsl-espi.c | 5 drivers/usb/gadget/function/f_ncm.c | 30 --- drivers/vhost/vsock.c | 94 ++++----- fs/btrfs/dev-replace.c | 40 +++- fs/eventpoll.c | 71 +++---- fs/fuse/file.c | 25 +- fs/nfs/dir.c | 3 fs/xfs/xfs_iomap.c | 6 include/linux/genhd.h | 2 include/linux/memstick.h | 1 include/linux/mm.h | 2 include/linux/mmzone.h | 11 - include/linux/node.h | 11 - include/linux/virtio_vsock.h | 3 kernel/trace/ftrace.c | 6 kernel/trace/trace.c | 38 +-- kernel/trace/trace_output.c | 12 - lib/random32.c | 2 mm/memory_hotplug.c | 5 mm/page_alloc.c | 10 - net/mac80211/rx.c | 3 net/mac80211/vht.c | 8 net/netfilter/nf_conntrack_netlink.c | 2 net/vmw_vsock/virtio_transport.c | 160 ++++++++-------- net/vmw_vsock/virtio_transport_common.c | 13 - scripts/dtc/Makefile | 2 tools/io_uring/io_uring-bench.c | 4 tools/lib/bpf/Makefile | 2 66 files changed, 570 insertions(+), 420 deletions(-)
Ahmad Fatoum (1):
gpio: siox: explicitly support only threaded irqs
Al Viro (5):
fuse: fix the ->direct_IO() treatment of iov_iter
epoll: do not insert into poll queues until all sanity checks are done
epoll: replace ->visited/visited_list with generation count
epoll: EPOLL_CTL_ADD: close the race in decision to take fast path ep_create_wakeup_source(): dentry name can change under you...
Aloka Dixit (1):
mac80211: Fix radiotap header channel flag for 6GHz band
Bartosz Golaszewski (1):
gpio: mockup: fix resource leak in error path
Bryan O'Donoghue (1):
USB: gadget: f_ncm: Fix NDP16 datagram validation
Chaitanya Kulkarni (1):
nvme-core: get/put ctrl and transport module in nvme_dev_open/release()
Chris Packham (2):
spi: fsl-espi: Only process interrupts for expected events
pinctrl: mvebu: Fix i2c sda definition for 98DX3236
Damien Le Moal (2):
nvme: Cleanup and rename nvme_block_nr()
nvme: Introduce nvme_lba_to_sect()
Dan Carpenter (1):
phy: ti: am654: Fix a leak in serdes_am654_probe()
Dinh Nguyen (1):
clk: socfpga: stratix10: fix the divider for the emac_ptp_free_clk
Dmitry Baryshkov (1):
iio: adc: qcom-spmi-adc5: fix driver name
Douglas Gilbert (1):
tools/io_uring: fix compile breakage
Eric Sandeen (1):
xfs: trim IO to found COW extent limit
Felix Fietkau (1):
mac80211: do not allow bigger VHT MPDUs than the hardware supports
Filipe Manana (1):
btrfs: fix filesystem corruption after a device replace
Greg Kroah-Hartman (1):
Linux 5.4.70
Guo Ren (1):
clocksource/drivers/timer-gx6605s: Fixup counter reload
Hans de Goede (1):
mmc: sdhci: Workaround broken command queuing on Intel GLK based IRBIS models
James Smart (1):
nvme-fc: fail new connections to a deleted host or remote port
Jean Delvare (1):
drm/amdgpu: restore proper ref count in amdgpu_display_crtc_set_config
Jeffrey Mitchell (1):
nfs: Fix security label length not being reset
Jeremy Kerr (2):
gpio/aspeed-sgpio: enable access to all 80 input & output sgpios gpio/aspeed-sgpio: don't enable all interrupts by default
Jiri Kosina (1):
Input: i8042 - add nopnp quirk for Acer Aspire 5 A515
Kai-Heng Feng (1):
memstick: Skip allocating card when removing host
Keith Busch (1):
nvme: consolidate chunk_sectors settings
Konstantin Khlebnikov (1):
block/diskstats: more accurate approximation of io_ticks for slow disks
Laurent Dufour (2):
mm: replace memmap_context by meminit_context
mm: don't rely on system state to detect hot-plug operations
Lucy Yan (1):
net: dec: de2104x: Increase receive ring size for Tulip
Marek Szyprowski (1):
clk: samsung: exynos4: mark 'chipid' clock as CLK_IGNORE_UNUSED
Martin Cerveny (1):
drm/sun4i: mixer: Extend regmap max_register
Naveen N. Rao (1):
libbpf: Remove arch-specific include path in Makefile
Nicolas VINCENT (1):
i2c: cpm: Fix i2c_ram structure
Olympia Giannou (1):
rndis_host: increase sleep time in the query-response loop
Sebastian Andrzej Siewior (1):
tracing: Make the space reserved for the pid wider
Sebastien Boeuf (1):
net: virtio_vsock: Enhance connection semantics
Stefano Garzarella (1):
vsock/virtio: add transport parameter to the virtio_transport_reset_no_sock()
Steven Rostedt (VMware) (1):
ftrace: Move RCU is watching check after recursion check
Taiping Lai (1):
gpio: sprd: Clear interrupt when setting the type as edge
Tao Ren (1):
gpio: aspeed: fix ast2600 bank properties
Thibaut Sautereau (1):
random32: Restore __latent_entropy attribute on net_rand_state
Thierry Reding (1):
clk: tegra: Always program PLL_E when enabled
Uwe Kleine-König (1):
scripts/dtc: only append to HOST_EXTRACFLAGS instead of overwriting
Vincent Huang (1):
Input: trackpoint - enable Synaptics trackpoints
Will McVicker (1):
netfilter: ctnetlink: add a range check for l3/l4 protonum
Xianting Tian (1):
nvme-pci: fix NULL req in completion handler
Xie He (3):
drivers/net/wan/hdlc_fr: Add needed_headroom for PVC devices
drivers/net/wan/lapbether: Make skb->protocol consistent with the header
drivers/net/wan/hdlc: Set skb->protocol before transmittingYu Kuai (1):
iommu/exynos: add missing put_device() call in exynos_iommu_of_xlate()
dillon min (1):
gpio: tc35894: fix up tc35894 interrupt configuration
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/iostats.rst +4 -1
@@ -99,7 +99,7 @@ Field 10 -- # of milliseconds spent doing I/Os Since 5.0 this field counts jiffies when at least one request was started or completed. If request runs more than 2 jiffies then some - I/O time will not be accounted unless there are other requests. + I/O time might be not accounted in case of concurrent requests. Field 11 -- weighted # of milliseconds spent doing I/Os This field is incremented at each I/O start, I/O completion, I/O
@@ -133,6 +133,9 @@ are summed (possibly overflowing the unsigned long variable they are summed to) and the result given to the user. There is no convenient user interface for accessing the per-CPU counters themselves. +Since 4.19 request times are measured with nanoseconds precision and +truncated to milliseconds before showing in this interface. + Disks vs Partitions -------------------
Documentation/devicetree/bindings/gpio/sgpio-aspeed.txt +3 -2
@@ -20,8 +20,9 @@ Required properties: - gpio-controller : Marks the device node as a GPIO controller - interrupts : Interrupt specifier, see interrupt-controller/interrupts.txt - interrupt-controller : Mark the GPIO controller as an interrupt-controller -- ngpios : number of GPIO lines, see gpio.txt - (should be multiple of 8, up to 80 pins) +- ngpios : number of *hardware* GPIO lines, see gpio.txt. This will expose + 2 software GPIOs per hardware GPIO: one for hardware input, one for hardware + output. Up to 80 pins, must be a multiple of 8. - clocks : A phandle to the APB clock for SGPM clock division - bus-frequency : SGPM CLK frequency
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 69 +SUBLEVEL = 70 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/ia64/mm/init.c +3 -3
@@ -518,7 +518,7 @@ virtual_memmap_init(u64 start, u64 end, void *arg)if (map_start < map_end)memmap_init_zone ((unsigned long )(map_end - map_start), args->nid, args->zone,page_to_pfn (map_start), -MEMMAP_EARLY ,NULL ); +MEMINIT_EARLY ,NULL );return 0 ; }
@@ -527,8 +527,8 @@ memmap_init (unsigned long size, int nid, unsigned long zone, unsigned long start_pfn) {if (!vmem_map) { -memmap_init_zone (size, nid, zone, start_pfn,MEMMAP_EARLY , -NULL ); +memmap_init_zone (size, nid, zone, start_pfn, +MEMINIT_EARLY ,NULL ); }else {struct page *start;struct memmap_init_callback_data args;
block/bio.c +4 -4
@@ -1754,14 +1754,14 @@ void bio_check_pages_dirty(struct bio *bio)schedule_work (&bio_dirty_work); } -void update_io_ticks (struct hd_struct *part,unsigned long now) +void update_io_ticks (struct hd_struct *part,unsigned long now,bool end) {unsigned long stamp; again: stamp =READ_ONCE (part->stamp);if (unlikely (stamp != now)) {if (likely (cmpxchg (&part->stamp, stamp, now) == stamp)) { -__part_stat_add (part, io_ticks,1 ); +__part_stat_add (part, io_ticks, end ? now - stamp :1 ); } }if (part->partno) {
@@ -1777,7 +1777,7 @@ void generic_start_io_acct(struct request_queue *q, int op,part_stat_lock (); -update_io_ticks (part, jiffies); +update_io_ticks (part, jiffies, false);part_stat_inc (part, ios[sgrp]);part_stat_add (part, sectors[sgrp], sectors);part_inc_in_flight (q, part,op_is_write (op));
@@ -1795,7 +1795,7 @@ void generic_end_io_acct(struct request_queue *q, int req_op,part_stat_lock (); -update_io_ticks (part, now); +update_io_ticks (part, now, true);part_stat_add (part, nsecs[sgrp],jiffies_to_nsecs (duration));part_stat_add (part, time_in_queue, duration);part_dec_in_flight (q, part,op_is_write (req_op));
block/blk-core.c +2 -2
@@ -1334,7 +1334,7 @@ void blk_account_io_done(struct request *req, u64 now)part_stat_lock (); part = req->part; -update_io_ticks (part, jiffies); +update_io_ticks (part, jiffies, true);part_stat_inc (part, ios[sgrp]);part_stat_add (part, nsecs[sgrp], now - req->start_time_ns);part_stat_add (part, time_in_queue,nsecs_to_jiffies64 (now - req->start_time_ns));
@@ -1376,7 +1376,7 @@ void blk_account_io_start(struct request *rq, bool new_io) rq->part = part; } -update_io_ticks (part, jiffies); +update_io_ticks (part, jiffies, false);part_stat_unlock (); }
drivers/base/node.c +55 -30
118 lines not on this page · raw message
drivers/clk/samsung/clk-exynos4.c +2 -2
@@ -927,7 +927,7 @@ static const struct samsung_gate_clock exynos4210_gate_clks[] __initconst = {GATE (CLK_PCIE ,"pcie" ,"aclk133" ,GATE_IP_FSYS ,14 ,0 ,0 ),GATE (CLK_SMMU_PCIE ,"smmu_pcie" ,"aclk133" ,GATE_IP_FSYS ,18 ,0 ,0 ),GATE (CLK_MODEMIF ,"modemif" ,"aclk100" ,GATE_IP_PERIL ,28 ,0 ,0 ), -GATE (CLK_CHIPID ,"chipid" ,"aclk100" ,E4210_GATE_IP_PERIR ,0 ,0 ,0 ), +GATE (CLK_CHIPID ,"chipid" ,"aclk100" ,E4210_GATE_IP_PERIR ,0 ,CLK_IGNORE_UNUSED ,0 ),GATE (CLK_SYSREG ,"sysreg" ,"aclk100" ,E4210_GATE_IP_PERIR ,0 ,CLK_IGNORE_UNUSED ,0 ), GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4210_GATE_IP_PERIR, 11, 0,
@@ -969,7 +969,7 @@ static const struct samsung_gate_clock exynos4x12_gate_clks[] __initconst = { 0),GATE (CLK_TSADC ,"tsadc" ,"aclk133" ,E4X12_GATE_BUS_FSYS1 ,16 ,0 ,0 ),GATE (CLK_MIPI_HSI ,"mipi_hsi" ,"aclk133" ,GATE_IP_FSYS ,10 ,0 ,0 ), -GATE (CLK_CHIPID ,"chipid" ,"aclk100" ,E4X12_GATE_IP_PERIR ,0 ,0 ,0 ), +GATE (CLK_CHIPID ,"chipid" ,"aclk100" ,E4X12_GATE_IP_PERIR ,0 ,CLK_IGNORE_UNUSED ,0 ),GATE (CLK_SYSREG ,"sysreg" ,"aclk100" ,E4X12_GATE_IP_PERIR ,1 ,CLK_IGNORE_UNUSED ,0 ), GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4X12_GATE_IP_PERIR, 11, 0,
drivers/clk/socfpga/clk-s10.c +1 -1
@@ -107,7 +107,7 @@ static const struct stratix10_perip_cnt_clock s10_main_perip_cnt_clks[] = { {STRATIX10_EMAC_B_FREE_CLK ,"emacb_free_clk" ,NULL , emacb_free_mux,ARRAY_SIZE (emacb_free_mux), 0, 0, 2, 0xB0, 1}, { STRATIX10_EMAC_PTP_FREE_CLK, "emac_ptp_free_clk", NULL, emac_ptp_free_mux, - ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 4, 0xB0, 2}, + ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 2, 0xB0, 2}, { STRATIX10_GPIO_DB_FREE_CLK, "gpio_db_free_clk", NULL, gpio_db_free_mux, ARRAY_SIZE(gpio_db_free_mux), 0, 0, 0, 0xB0, 3}, { STRATIX10_SDMMC_FREE_CLK, "sdmmc_free_clk", NULL, sdmmc_free_mux,
drivers/clk/tegra/clk-pll.c +0 -3
@@ -1569,9 +1569,6 @@ static int clk_plle_tegra114_enable(struct clk_hw *hw)unsigned long flags =0 ;unsigned long input_rate; -if (clk_pll_is_enabled (hw)) -return 0 ; - input_rate =clk_hw_get_rate (clk_hw_get_parent (hw));if (_get_table_rate (hw, &sel, pll->params->fixed_rate, input_rate))
drivers/clocksource/timer-gx6605s.c +1 -0
@@ -28,6 +28,7 @@ static irqreturn_t gx6605s_timer_interrupt(int irq, void *dev)void __iomem *base =timer_of_base (to_timer_of (ce));writel_relaxed (GX6605S_STATUS_CLR , base +TIMER_STATUS ); +writel_relaxed (0 , base +TIMER_INI ); ce->event_handler (ce);
drivers/gpio/gpio-aspeed.c +2 -2
@@ -1115,8 +1115,8 @@ static const struct aspeed_gpio_config ast2500_config =static const struct aspeed_bank_props ast2600_bank_props[] = {/* input output */ - {5 ,0xffffffff ,0x0000ffff },/* U/V/W/X */ - {6 ,0xffff0000 ,0x0fff0000 },/* Y/Z */ + {5 ,0xffffffff ,0xffffff00 },/* U/V/W/X */ + {6 ,0x0000ffff ,0x0000ffff },/* Y/Z */ { }, };
drivers/gpio/gpio-mockup.c +2 -0
@@ -497,6 +497,7 @@ static int __init gpio_mockup_init(void) err =platform_driver_register (&gpio_mockup_driver);if (err) {gpio_mockup_err ("error registering platform driver\n" ); +debugfs_remove_recursive (gpio_mockup_dbg_dir);return err; }
@@ -527,6 +528,7 @@ static int __init gpio_mockup_init(void)gpio_mockup_err ("error registering device" );platform_driver_unregister (&gpio_mockup_driver);gpio_mockup_unregister_pdevs (); +debugfs_remove_recursive (gpio_mockup_dbg_dir);return PTR_ERR (pdev); }
drivers/gpio/gpio-siox.c +1 -0
@@ -245,6 +245,7 @@ static int gpio_siox_probe(struct siox_device *sdevice) girq->chip = &ddata->ichip; girq->default_type =IRQ_TYPE_NONE ; girq->handler = handle_level_irq; + girq->threaded = true; ret =devm_gpiochip_add_data (dev, &ddata->gchip,NULL );if (ret)
drivers/gpio/gpio-sprd.c +3 -0
@@ -149,17 +149,20 @@ static int sprd_gpio_irq_set_type(struct irq_data *data,sprd_gpio_update (chip, offset,SPRD_GPIO_IS ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IBE ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IEV ,1 ); +sprd_gpio_update (chip, offset,SPRD_GPIO_IC ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_FALLING :sprd_gpio_update (chip, offset,SPRD_GPIO_IS ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IBE ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IEV ,0 ); +sprd_gpio_update (chip, offset,SPRD_GPIO_IC ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_BOTH :sprd_gpio_update (chip, offset,SPRD_GPIO_IS ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IBE ,1 ); +sprd_gpio_update (chip, offset,SPRD_GPIO_IC ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_LEVEL_HIGH :
drivers/gpio/gpio-tc3589x.c +1 -1
@@ -209,7 +209,7 @@ static void tc3589x_gpio_irq_sync_unlock(struct irq_data *d)continue ; tc3589x_gpio->oldregs[i][j] = new; -tc3589x_reg_write (tc3589x, regmap[i] + j *8 , new); +tc3589x_reg_write (tc3589x, regmap[i] + j, new); } }
drivers/gpio/sgpio-aspeed.c +87 -47
248 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1 -1
@@ -297,7 +297,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set,take the current one */ if (active && !adev->have_disp_power_ref) { adev->have_disp_power_ref = true; - goto out; +return ret; }/* if we have no active crtcs, then drop the power ref we got before */
drivers/gpu/drm/sun4i/sun8i_mixer.c +1 -1
@@ -396,7 +396,7 @@ static struct regmap_config sun8i_mixer_regmap_config = { .reg_bits = 32, .val_bits = 32, .reg_stride = 4, - .max_register = 0xbfffc, /* guessed */ + .max_register = 0xffffc, /* guessed */ };static int sun8i_mixer_of_get_id (struct device_node *node)
drivers/i2c/busses/i2c-cpm.c +3 -0
@@ -65,6 +65,9 @@ struct i2c_ram {char res1[4 ];/* Reserved */ ushort rpbase;/* Relocation pointer */ char res2[2 ];/* Reserved */ +/* The following elements are only for CPM2 */ +char res3[4 ];/* Reserved */ +uint sdmatmp;/* Internal */ };#define I2COM_START 0x80
drivers/iio/adc/qcom-spmi-adc5.c +1 -1
@@ -786,7 +786,7 @@ static int adc5_probe(struct platform_device *pdev)static struct platform_driver adc5_driver = { .driver = { - .name ="qcom-spmi-adc5.c" , + .name ="qcom-spmi-adc5" , .of_match_table = adc5_match_table, }, .probe = adc5_probe,
drivers/input/mouse/trackpoint.c +2 -0
@@ -282,6 +282,8 @@ static int trackpoint_start_protocol(struct psmouse *psmouse,case TP_VARIANT_ALPS :case TP_VARIANT_ELAN :case TP_VARIANT_NXP : +case TP_VARIANT_JYT_SYNAPTICS : +case TP_VARIANT_SYNAPTICS :if (variant_id) *variant_id = param[0 ];if (firmware_id)
drivers/input/serio/i8042-x86ia64io.h +7 -0
@@ -721,6 +721,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nopnp_table[] = { DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"), }, }, + { + /* Acer Aspire 5 A515 */ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "Grumpy_PK"), + DMI_MATCH(DMI_BOARD_VENDOR, "PK"), + }, + }, { } };
drivers/iommu/exynos-iommu.c +6 -2
@@ -1299,13 +1299,17 @@ static int exynos_iommu_of_xlate(struct device *dev,return -ENODEV ; data =platform_get_drvdata (sysmmu); -if (!data) +if (!data) { +put_device (&sysmmu->dev);return -ENODEV ; + }if (!owner) { owner =kzalloc (sizeof (*owner),GFP_KERNEL ); -if (!owner) +if (!owner) { +put_device (&sysmmu->dev);return -ENOMEM ; + }INIT_LIST_HEAD (&owner->controllers);mutex_init (&owner->rpm_lock);
drivers/memstick/core/memstick.c +4 -0
@@ -441,6 +441,9 @@ static void memstick_check(struct work_struct *work) }else if (host->card->stop) host->card->stop (host->card); +if (host->removing) + goto out_power_off; + card =memstick_alloc_card (host);if (!card) {
@@ -545,6 +548,7 @@ EXPORT_SYMBOL(memstick_add_host);*/ void memstick_remove_host (struct memstick_host *host) { + host->removing =1 ;flush_workqueue (workqueue);mutex_lock (&host->lock);if (host->card)
drivers/mmc/host/sdhci-pci-core.c +2 -1
@@ -798,7 +798,8 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot)static bool glk_broken_cqhci (struct sdhci_pci_slot *slot) {return slot->chip->pdev->device ==PCI_DEVICE_ID_INTEL_GLK_EMMC && -dmi_match (DMI_BIOS_VENDOR ,"LENOVO" ); + (dmi_match (DMI_BIOS_VENDOR ,"LENOVO" ) || +dmi_match (DMI_SYS_VENDOR ,"IRBIS" )); }static int glk_emmc_probe_slot (struct sdhci_pci_slot *slot)
drivers/net/ethernet/dec/tulip/de2104x.c +1 -1
@@ -91,7 +91,7 @@ MODULE_PARM_DESC (rx_copybreak, "de2104x Breakpoint at which Rx packets are copi#define DSL CONFIG_DE2104X_DSL#endif -#define DE_RX_RING_SIZE 64 +#define DE_RX_RING_SIZE 128#define DE_TX_RING_SIZE 64#define DE_RING_BYTES \ ((sizeof(struct de_desc) * DE_RX_RING_SIZE) + \
drivers/net/usb/rndis_host.c +1 -1
@@ -201,7 +201,7 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf, int buflen)dev_dbg (&info->control->dev,"rndis response error, code %d\n" , retval); } -msleep (20 ); +msleep (40 ); }dev_dbg (&info->control->dev,"rndis response timeout\n" );return -ETIMEDOUT ;
drivers/net/wan/hdlc_cisco.c +1 -0
@@ -118,6 +118,7 @@ static void cisco_keepalive_send(struct net_device *dev, u32 type,skb_put (skb,sizeof (struct cisco_packet )); skb->priority =TC_PRIO_CONTROL ; skb->dev = dev; + skb->protocol =htons (ETH_P_HDLC );skb_reset_network_header (skb);dev_queue_xmit (skb);
drivers/net/wan/hdlc_fr.c +5 -1
@@ -433,6 +433,8 @@ static netdev_tx_t pvc_xmit(struct sk_buff *skb, struct net_device *dev)if (pvc->state.fecn)/* TX Congestion counter */ dev->stats.tx_compressed++; skb->dev = pvc->frad; + skb->protocol =htons (ETH_P_HDLC ); +skb_reset_network_header (skb);dev_queue_xmit (skb);return NETDEV_TX_OK ; }
@@ -555,6 +557,7 @@ static void fr_lmi_send(struct net_device *dev, int fullrep)skb_put (skb, i); skb->priority =TC_PRIO_CONTROL ; skb->dev = dev; + skb->protocol =htons (ETH_P_HDLC );skb_reset_network_header (skb);dev_queue_xmit (skb);
@@ -1041,7 +1044,7 @@ static void pvc_setup(struct net_device *dev) { dev->type =ARPHRD_DLCI ; dev->flags =IFF_POINTOPOINT ; - dev->hard_header_len =10 ; + dev->hard_header_len =0 ; dev->addr_len =2 ;netif_keep_dst (dev); }
@@ -1093,6 +1096,7 @@ static int fr_add_pvc(struct net_device *frad, unsigned int dlci, int type) dev->mtu =HDLC_MAX_MTU ; dev->min_mtu =68 ; dev->max_mtu =HDLC_MAX_MTU ; + dev->needed_headroom =10 ; dev->priv_flags |=IFF_NO_QUEUE ; dev->ml_priv = pvc;
drivers/net/wan/hdlc_ppp.c +1 -0
@@ -251,6 +251,7 @@ static void ppp_tx_cp(struct net_device *dev, u16 pid, u8 code, skb->priority =TC_PRIO_CONTROL ; skb->dev = dev; + skb->protocol =htons (ETH_P_HDLC );skb_reset_network_header (skb);skb_queue_tail (&tx_queue, skb); }
drivers/net/wan/lapbether.c +2 -2
@@ -198,8 +198,6 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb)struct net_device *dev;int size = skb->len; - skb->protocol =htons (ETH_P_X25 ); - ptr =skb_push (skb,2 ); *ptr++ = size %256 ;
@@ -210,6 +208,8 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb) skb->dev = dev = lapbeth->ethdev; + skb->protocol =htons (ETH_P_DEC ); +skb_reset_network_header (skb);dev_hard_header (skb, dev,ETH_P_DEC , bcast_addr,NULL ,0 );
drivers/nvme/host/core.c +34 -21
139 lines not on this page · raw message
drivers/nvme/host/fc.c +4 -2
@@ -3319,12 +3319,14 @@ nvme_fc_create_ctrl(struct device *dev, struct nvmf_ctrl_options *opts)spin_lock_irqsave (&nvme_fc_lock, flags);list_for_each_entry (lport, &nvme_fc_lport_list, port_list) {if (lport->localport.node_name != laddr.nn || - lport->localport.port_name != laddr.pn) + lport->localport.port_name != laddr.pn || + lport->localport.port_state !=FC_OBJSTATE_ONLINE )continue ;list_for_each_entry (rport, &lport->endp_list, endp_list) {if (rport->remoteport.node_name != raddr.nn || - rport->remoteport.port_name != raddr.pn) + rport->remoteport.port_name != raddr.pn || + rport->remoteport.port_state !=FC_OBJSTATE_ONLINE )continue ;/* if fail to get reference fall through. Will error */
drivers/nvme/host/nvme.h +13 -3
@@ -384,7 +384,6 @@ struct nvme_ns {#define NVME_NS_REMOVING 0#define NVME_NS_DEAD 1#define NVME_NS_ANA_PENDING 2 -u16 noiob;struct nvme_fault_inject fault_inject;
@@ -429,9 +428,20 @@ static inline int nvme_reset_subsystem(struct nvme_ctrl *ctrl)return ctrl->ops->reg_write32 (ctrl,NVME_REG_NSSR ,0x4E564D65 ); } -static inline u64 nvme_block_nr (struct nvme_ns *ns,sector_t sector) +/* +* Convert a 512B sector number to a device logical block number. +*/ +static inline u64 nvme_sect_to_lba (struct nvme_ns *ns,sector_t sector) +{ +return sector >> (ns->lba_shift -SECTOR_SHIFT ); +} + +/* +* Convert a device logical block number to a 512B sector number. +*/ +static inline sector_t nvme_lba_to_sect (struct nvme_ns *ns,u64 lba) { -return (sector >> (ns->lba_shift -9 )); +return lba << (ns->lba_shift -SECTOR_SHIFT ); } static inline void nvme_end_request(struct request *req, __le16 status,
drivers/nvme/host/pci.c +7 -7
@@ -941,13 +941,6 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx)volatile struct nvme_completion *cqe = &nvmeq->cqes[idx];struct request *req; -if (unlikely (cqe->command_id >= nvmeq->q_depth)) { -dev_warn (nvmeq->dev->ctrl.device, -"invalid id %d completed on queue %d\n" , - cqe->command_id,le16_to_cpu (cqe->sq_id)); -return ; - } -/* * AEN requests are special as they don't time out and can * survive any kind of queue freeze and often don't respond to
@@ -962,6 +955,13 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx) } req =blk_mq_tag_to_rq (nvme_queue_tagset (nvmeq), cqe->command_id); +if (unlikely (!req)) { +dev_warn (nvmeq->dev->ctrl.device, +"invalid id %d completed on queue %d\n" , + cqe->command_id,le16_to_cpu (cqe->sq_id)); +return ; + } +trace_nvme_sq (req, cqe->sq_head, nvmeq->sq_tail);nvme_end_request (req, cqe->status, cqe->result); }
drivers/phy/ti/phy-am654-serdes.c +4 -2
@@ -625,8 +625,10 @@ static int serdes_am654_probe(struct platform_device *pdev)pm_runtime_enable (dev); phy =devm_phy_create (dev,NULL , &ops); -if (IS_ERR (phy)) -return PTR_ERR (phy); +if (IS_ERR (phy)) { + ret =PTR_ERR (phy); + goto clk_err; + }phy_set_drvdata (phy, am654_phy); phy_provider =devm_of_phy_provider_register (dev, serdes_am654_xlate);
drivers/pinctrl/mvebu/pinctrl-armada-xp.c +1 -1
@@ -414,7 +414,7 @@ static struct mvebu_mpp_mode mv98dx3236_mpp_modes[] = { MPP_VAR_FUNCTION(0x1, "i2c0", "sck", V_98DX3236_PLUS)),MPP_MODE (15 ,MPP_VAR_FUNCTION (0x0 ,"gpio" ,NULL ,V_98DX3236_PLUS ), -MPP_VAR_FUNCTION (0x4 ,"i2c0" ,"sda" ,V_98DX3236_PLUS )), +MPP_VAR_FUNCTION (0x1 ,"i2c0" ,"sda" ,V_98DX3236_PLUS )),MPP_MODE (16 ,MPP_VAR_FUNCTION (0x0 ,"gpo" ,NULL ,V_98DX3236_PLUS ), MPP_VAR_FUNCTION(0x4, "dev", "oe", V_98DX3236_PLUS)),
drivers/spi/spi-fsl-espi.c +3 -2
@@ -555,13 +555,14 @@ static void fsl_espi_cpu_irq(struct fsl_espi *espi, u32 events)static irqreturn_t fsl_espi_irq (s32 irq,void *context_data) {struct fsl_espi *espi = context_data; -u32 events; +u32 events, mask;spin_lock (&espi->lock);/* Get interrupt events(tx/rx) */ events =fsl_espi_read_reg (espi,ESPI_SPIE ); -if (!events) { + mask =fsl_espi_read_reg (espi,ESPI_SPIM ); +if (!(events & mask)) {spin_unlock (&espi->lock);return IRQ_NONE ; }
drivers/usb/gadget/function/f_ncm.c +2 -28
@@ -1189,7 +1189,6 @@ static int ncm_unwrap_ntb(struct gether *port,const struct ndp_parser_opts *opts = ncm->parser_opts;unsigned crc_len = ncm->is_crc ?sizeof (uint32_t ) :0 ;int dgram_counter; -bool ndp_after_header;/* dwSignature */ if (get_unaligned_le32 (tmp) != opts->nth_sign) {
@@ -1216,7 +1215,6 @@ static int ncm_unwrap_ntb(struct gether *port, } ndp_index =get_ncm (&tmp, opts->ndp_index); - ndp_after_header = false;/* Run through all the NDP's in the NTB */ do {
@@ -1232,8 +1230,6 @@ static int ncm_unwrap_ntb(struct gether *port, ndp_index); goto err; } -if (ndp_index == opts->nth_size) - ndp_after_header = true;/* * walk through NDP
@@ -1312,37 +1308,13 @@ static int ncm_unwrap_ntb(struct gether *port, index2 =get_ncm (&tmp, opts->dgram_item_len); dg_len2 =get_ncm (&tmp, opts->dgram_item_len); -if (index2 ==0 || dg_len2 ==0 ) -break ; -/* wDatagramIndex[1] */ -if (ndp_after_header) { -if (index2 < opts->nth_size + opts->ndp_size) { -INFO (port->func.config->cdev, -"Bad index: %#X\n" , index2); - goto err; - } - }else { -if (index2 < opts->nth_size + opts->dpe_size) { -INFO (port->func.config->cdev, -"Bad index: %#X\n" , index2); - goto err; - } - }if (index2 > block_len - opts->dpe_size) {INFO (port->func.config->cdev,"Bad index: %#X\n" , index2); goto err; } -/* wDatagramLength[1] */ -if ((dg_len2 <14 + crc_len) || - (dg_len2 > frame_max)) { -INFO (port->func.config->cdev, -"Bad dgram length: %#X\n" , dg_len); - goto err; - } -/* * Copy the data into a new skb. * This ensures the truesize is correct
@@ -1359,6 +1331,8 @@ static int ncm_unwrap_ntb(struct gether *port, ndp_len -=2 * (opts->dgram_item_len *2 ); dgram_counter++; +if (index2 ==0 || dg_len2 ==0 ) +break ; }while (ndp_len >2 * (opts->dgram_item_len *2 )); }while (ndp_index);
drivers/vhost/vsock.c +47 -47
112 lines not on this page · raw message
fs/btrfs/dev-replace.c +39 -1
@@ -562,6 +562,37 @@ static void btrfs_rm_dev_replace_unblocked(struct btrfs_fs_info *fs_info)wake_up (&fs_info->dev_replace.replace_wait); } +/* +* When finishing the device replace, before swapping the source device with the +* target device we must update the chunk allocation state in the target device, +* as it is empty because replace works by directly copying the chunks and not +* through the normal chunk allocation path. +*/ +static int btrfs_set_target_alloc_state (struct btrfs_device *srcdev, +struct btrfs_device *tgtdev) +{ +struct extent_state *cached_state =NULL ; +u64 start =0 ; +u64 found_start; +u64 found_end; +int ret =0 ; + +lockdep_assert_held (&srcdev->fs_info->chunk_mutex); + +while (!find_first_extent_bit (&srcdev->alloc_state, start, + &found_start, &found_end, +CHUNK_ALLOCATED , &cached_state)) { + ret =set_extent_bits (&tgtdev->alloc_state, found_start, + found_end,CHUNK_ALLOCATED ); +if (ret) +break ; + start = found_end +1 ; + } + +free_extent_state (cached_state); +return ret; +} +static int btrfs_dev_replace_finishing (struct btrfs_fs_info *fs_info,int scrub_ret) {
@@ -636,8 +667,14 @@ static int btrfs_dev_replace_finishing(struct btrfs_fs_info *fs_info, dev_replace->time_stopped =ktime_get_real_seconds (); dev_replace->item_needs_writeback =1 ; -/* replace old device with new one in mapping tree */ +/* +* Update allocation state in the new device and replace the old device +* with the new one in the mapping tree. +*/ if (!scrub_ret) { + scrub_ret =btrfs_set_target_alloc_state (src_device, tgt_device); +if (scrub_ret) + goto error;btrfs_dev_replace_update_device_in_mapping_tree (fs_info, src_device, tgt_device);
@@ -648,6 +685,7 @@ static int btrfs_dev_replace_finishing(struct btrfs_fs_info *fs_info,btrfs_dev_name (src_device), src_device->devid, rcu_str_deref(tgt_device->name), scrub_ret); +error:up_write (&dev_replace->rwsem);mutex_unlock (&fs_info->chunk_mutex);mutex_unlock (&fs_info->fs_devices->device_list_mutex);
fs/eventpoll.c +30 -41
154 lines not on this page · raw message
fs/fuse/file.c +12 -13
@@ -3074,11 +3074,10 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)ssize_t ret =0 ;struct file *file = iocb->ki_filp;struct fuse_file *ff = file->private_data; -bool async_dio = ff->fc->async_dio;loff_t pos =0 ;struct inode *inode;loff_t i_size; -size_t count =iov_iter_count (iter); +size_t count =iov_iter_count (iter), shortened =0 ;loff_t offset = iocb->ki_pos;struct fuse_io_priv *io;
@@ -3086,17 +3085,9 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter) inode = file->f_mapping->host; i_size =i_size_read (inode); -if ((iov_iter_rw (iter) ==READ ) && (offset > i_size)) +if ((iov_iter_rw (iter) ==READ ) && (offset >= i_size))return 0 ; -/* optimization for short read */ -if (async_dio &&iov_iter_rw (iter) !=WRITE && offset + count > i_size) { -if (offset >= i_size) -return 0 ; -iov_iter_truncate (iter,fuse_round_up (ff->fc, i_size - offset)); - count =iov_iter_count (iter); - } - io =kmalloc (sizeof (struct fuse_io_priv ),GFP_KERNEL );if (!io)return -ENOMEM ;
@@ -3112,15 +3103,22 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)* By default, we want to optimize all I/Os with async request * submission to the client filesystem if supported. */ - io->async = async_dio; + io->async = ff->fc->async_dio; io->iocb = iocb; io->blocking =is_sync_kiocb (iocb); +/* optimization for short read */ +if (io->async && !io->write && offset + count > i_size) { +iov_iter_truncate (iter,fuse_round_up (ff->fc, i_size - offset)); + shortened = count -iov_iter_count (iter); + count -= shortened; + } +/* * We cannot asynchronously extend the size of a file. * In such case the aio will behave exactly like sync io. */ -if ((offset + count > i_size) &&iov_iter_rw (iter) ==WRITE ) +if ((offset + count > i_size) && io->write) io->blocking = true;if (io->async && io->blocking) {
@@ -3138,6 +3136,7 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter) }else { ret =__fuse_direct_read (io, iter, &pos); } +iov_iter_reexpand (iter,iov_iter_count (iter) + shortened);if (io->async) {bool blocking = io->blocking;
fs/nfs/dir.c +3 -0
@@ -553,6 +553,9 @@ int nfs_readdir_page_filler(nfs_readdir_descriptor_t *desc, struct nfs_entry *enxdr_set_scratch_buffer (&stream,page_address (scratch),PAGE_SIZE ); do { + if (entry->label) + entry->label->len = NFS4_MAXLABELLEN; + status = xdr_decode(desc, entry, &stream); if (status != 0) { if (status == -EAGAIN)
fs/xfs/xfs_iomap.c +6 -0
@@ -1002,9 +1002,15 @@ xfs_file_iomap_begin(* I/O, which must be block aligned, we need to report the * newly allocated address. If the data fork has a hole, copy * the COW fork mapping to avoid allocating to the data fork. +* +* Otherwise, ensure that the imap range does not extend past +* the range allocated/found in cmap. */ if (directio || imap.br_startblock ==HOLESTARTBLOCK ) imap = cmap; +else +xfs_trim_extent (&imap, cmap.br_startoff, + cmap.br_blockcount); end_fsb = imap.br_startoff + imap.br_blockcount; length =XFS_FSB_TO_B (mp, end_fsb) - offset;
include/linux/genhd.h +1 -1
@@ -419,7 +419,7 @@ static inline void free_part_info(struct hd_struct *part)kfree (part->info); } -void update_io_ticks (struct hd_struct *part,unsigned long now); +void update_io_ticks (struct hd_struct *part,unsigned long now,bool end);/* block/genhd.c */ extern void device_add_disk(struct device *parent, struct gendisk *disk,
include/linux/memstick.h +1 -0
@@ -281,6 +281,7 @@ struct memstick_host {struct memstick_dev *card;unsigned int retries; +bool removing;/* Notify the host that some requests are pending. */ void (*request)(struct memstick_host *host);
include/linux/mm.h +1 -1
@@ -2208,7 +2208,7 @@ static inline void zero_resv_unavail(void) {}extern void set_dma_reserve (unsigned long new_dma_reserve);extern void memmap_init_zone (unsigned long ,int ,unsigned long ,unsigned long , -enum memmap_context ,struct vmem_altmap *); +enum meminit_context ,struct vmem_altmap *);extern void setup_per_zone_wmarks (void );extern int __meminit init_per_zone_wmark_min (void );extern void mem_init (void );
include/linux/mmzone.h +8 -3
@@ -822,10 +822,15 @@ bool zone_watermark_ok(struct zone *z, unsigned int order, unsigned int alloc_flags);bool zone_watermark_ok_safe (struct zone *z,unsigned int order,unsigned long mark,int classzone_idx); -enum memmap_context { -MEMMAP_EARLY , -MEMMAP_HOTPLUG , +/* +* Memory initialization context, use to differentiate memory added by +* the platform statically or via memory hotplug interface. +*/ +enum meminit_context { +MEMINIT_EARLY , +MEMINIT_HOTPLUG , }; +extern void init_currently_empty_zone (struct zone *zone,unsigned long start_pfn,unsigned long size);
include/linux/node.h +7 -4
@@ -99,11 +99,13 @@ extern struct node *node_devices[];typedef void (*node_registration_func_t )(struct node *);#if defined(CONFIG_MEMORY_HOTPLUG_SPARSE ) && defined(CONFIG_NUMA ) -extern int link_mem_sections (int nid,unsigned long start_pfn, -unsigned long end_pfn); +int link_mem_sections (int nid,unsigned long start_pfn, +unsigned long end_pfn, +enum meminit_context context);#else static inline int link_mem_sections (int nid,unsigned long start_pfn, -unsigned long end_pfn) +unsigned long end_pfn, +enum meminit_context context) {return 0 ; }
@@ -128,7 +130,8 @@ static inline int register_one_node(int nid)if (error)return error;/* link memory sections under this node */ - error =link_mem_sections (nid, start_pfn, end_pfn); + error =link_mem_sections (nid, start_pfn, end_pfn, +MEMINIT_EARLY ); }return error;
include/linux/virtio_vsock.h +2 -1
@@ -150,7 +150,8 @@ virtio_transport_dgram_enqueue(struct vsock_sock *vsk,void virtio_transport_destruct (struct vsock_sock *vsk); -void virtio_transport_recv_pkt (struct virtio_vsock_pkt *pkt); +void virtio_transport_recv_pkt (struct virtio_transport *t, +struct virtio_vsock_pkt *pkt);void virtio_transport_free_pkt (struct virtio_vsock_pkt *pkt);void virtio_transport_inc_tx_pkt (struct virtio_vsock_sock *vvs,struct virtio_vsock_pkt *pkt);u32 virtio_transport_get_credit (struct virtio_vsock_sock *vvs,u32 wanted);
kernel/trace/ftrace.c +2 -4
@@ -6382,16 +6382,14 @@ static void ftrace_ops_assist_func(unsigned long ip, unsigned long parent_ip, {int bit; -if ((op->flags &FTRACE_OPS_FL_RCU ) && !rcu_is_watching ()) -return ; - bit =trace_test_and_set_recursion (TRACE_LIST_START ,TRACE_LIST_MAX );if (bit <0 )return ;preempt_disable_notrace (); - op->func (ip, parent_ip, op, regs); +if (!(op->flags &FTRACE_OPS_FL_RCU ) ||rcu_is_watching ()) + op->func (ip, parent_ip, op, regs);preempt_enable_notrace ();trace_clear_recursion (bit);
kernel/trace/trace.c +19 -19
@@ -3584,14 +3584,14 @@ unsigned long trace_total_entries(struct trace_array *tr)static void print_lat_help_header (struct seq_file *m) { -seq_puts (m,"# _------=> CPU# \n" -"# / _-----=> irqs-off \n" -"# | / _----=> need-resched \n" -"# || / _---=> hardirq/softirq \n" -"# ||| / _--=> preempt-depth \n" -"# |||| / delay \n" -"# cmd pid ||||| time | caller \n" -"# \\ / ||||| \\ | / \n" ); +seq_puts (m,"# _------=> CPU# \n" +"# / _-----=> irqs-off \n" +"# | / _----=> need-resched \n" +"# || / _---=> hardirq/softirq \n" +"# ||| / _--=> preempt-depth \n" +"# |||| / delay \n" +"# cmd pid ||||| time | caller \n" +"# \\ / ||||| \\ | / \n" ); }static void print_event_info (struct trace_buffer *buf,struct seq_file *m)
@@ -3612,26 +3612,26 @@ static void print_func_help_header(struct trace_buffer *buf, struct seq_file *m,print_event_info (buf, m); -seq_printf (m,"# TASK-PID %s CPU# TIMESTAMP FUNCTION\n" , tgid ?"TGID " :"" ); -seq_printf (m,"# | | %s | | |\n" , tgid ?" | " :"" ); +seq_printf (m,"# TASK-PID %s CPU# TIMESTAMP FUNCTION\n" , tgid ?" TGID " :"" ); +seq_printf (m,"# | | %s | | |\n" , tgid ?" | " :"" ); }static void print_func_help_header_irq (struct trace_buffer *buf,struct seq_file *m,unsigned int flags) {bool tgid = flags &TRACE_ITER_RECORD_TGID ; -const char *space =" " ; -int prec = tgid ?10 :2 ; +const char *space =" " ; +int prec = tgid ?12 :2 ;print_event_info (buf, m); -seq_printf (m,"# %.*s _-----=> irqs-off\n" , prec, space); -seq_printf (m,"# %.*s / _----=> need-resched\n" , prec, space); -seq_printf (m,"# %.*s| / _---=> hardirq/softirq\n" , prec, space); -seq_printf (m,"# %.*s|| / _--=> preempt-depth\n" , prec, space); -seq_printf (m,"# %.*s||| / delay\n" , prec, space); -seq_printf (m,"# TASK-PID %.*sCPU# |||| TIMESTAMP FUNCTION\n" , prec," TGID " ); -seq_printf (m,"# | | %.*s | |||| | |\n" , prec," | " ); +seq_printf (m,"# %.*s _-----=> irqs-off\n" , prec, space); +seq_printf (m,"# %.*s / _----=> need-resched\n" , prec, space); +seq_printf (m,"# %.*s| / _---=> hardirq/softirq\n" , prec, space); +seq_printf (m,"# %.*s|| / _--=> preempt-depth\n" , prec, space); +seq_printf (m,"# %.*s||| / delay\n" , prec, space); +seq_printf (m,"# TASK-PID %.*s CPU# |||| TIMESTAMP FUNCTION\n" , prec," TGID " ); +seq_printf (m,"# | | %.*s | |||| | |\n" , prec," | " ); }void
kernel/trace/trace_output.c +6 -6
@@ -482,7 +482,7 @@ lat_print_generic(struct trace_seq *s, struct trace_entry *entry, int cpu)trace_find_cmdline (entry->pid, comm); -trace_seq_printf (s,"%8.8s-%-5d %3d" , +trace_seq_printf (s,"%8.8s-%-7d %3d" , comm, entry->pid, cpu);return trace_print_lat_fmt (s, entry);
@@ -573,15 +573,15 @@ int trace_print_context(struct trace_iterator *iter)trace_find_cmdline (entry->pid, comm); -trace_seq_printf (s,"%16s-%-5d " , comm, entry->pid); +trace_seq_printf (s,"%16s-%-7d " , comm, entry->pid);if (tr->trace_flags &TRACE_ITER_RECORD_TGID ) {unsigned int tgid =trace_find_tgid (entry->pid);if (!tgid) -trace_seq_printf (s,"(-----) " ); +trace_seq_printf (s,"(-------) " );else -trace_seq_printf (s,"(%5d) " , tgid); +trace_seq_printf (s,"(%7d) " , tgid); }trace_seq_printf (s,"[%03d] " , iter->cpu);
@@ -624,7 +624,7 @@ int trace_print_lat_context(struct trace_iterator *iter)trace_find_cmdline (entry->pid, comm);trace_seq_printf ( - s,"%16s %5d %3d %d %08x %08lx " , + s,"%16s %7d %3d %d %08x %08lx " , comm, entry->pid, iter->cpu, entry->flags, entry->preempt_count, iter->idx); }else {
@@ -905,7 +905,7 @@ static enum print_line_t trace_ctxwake_print(struct trace_iterator *iter,S =task_index_to_char (field->prev_state);trace_find_cmdline (field->next_pid, comm); trace_seq_printf(&iter->seq, - " %5d:%3d:%c %s [%03d] %5d:%3d:%c %s\n", + " %7d:%3d:%c %s [%03d] %7d:%3d:%c %s\n", field->prev_pid, field->prev_prio, S, delim,
lib/random32.c +1 -1
@@ -48,7 +48,7 @@ static inline void prandom_state_selftest(void) }#endif -DEFINE_PER_CPU(struct rnd_state, net_rand_state); +DEFINE_PER_CPU(struct rnd_state, net_rand_state) __latent_entropy;/** * prandom_u32_state - seeded pseudo-random number generator.
mm/memory_hotplug.c +3 -2
@@ -725,7 +725,7 @@ void __ref move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn,* are reserved so nobody should be touching them so we should be safe */ memmap_init_zone (nr_pages, nid,zone_idx (zone), start_pfn, -MEMMAP_HOTPLUG , altmap); +MEMINIT_HOTPLUG , altmap);set_zone_contiguous (zone); }
@@ -1082,7 +1082,8 @@ int __ref add_memory_resource(int nid, struct resource *res) }/* link memory sections under this node.*/ - ret =link_mem_sections (nid,PFN_DOWN (start),PFN_UP (start + size -1 )); + ret =link_mem_sections (nid,PFN_DOWN (start),PFN_UP (start + size -1 ), +MEMINIT_HOTPLUG );BUG_ON (ret);/* create new memmap entry */
mm/page_alloc.c +5 -5
@@ -5875,7 +5875,7 @@ overlap_memmap_init(unsigned long zone, unsigned long *pfn)* done. Non-atomic initialization, single-pass. */ void __meminit memmap_init_zone (unsigned long size,int nid,unsigned long zone, -unsigned long start_pfn,enum memmap_context context, +unsigned long start_pfn,enum meminit_context context,struct vmem_altmap *altmap) {unsigned long pfn, end_pfn = start_pfn + size;
@@ -5907,7 +5907,7 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,* There can be holes in boot-time mem_map[]s handed to this * function. They do not exist on hotplugged memory. */ -if (context ==MEMMAP_EARLY ) { +if (context ==MEMINIT_EARLY ) {if (!early_pfn_valid (pfn))continue ;if (!early_pfn_in_nid (pfn, nid))
@@ -5920,7 +5920,7 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, page =pfn_to_page (pfn);__init_single_page (page, pfn, zone, nid); -if (context ==MEMMAP_HOTPLUG ) +if (context ==MEMINIT_HOTPLUG )__SetPageReserved (page);/*
@@ -6002,7 +6002,7 @@ void __ref memmap_init_zone_device(struct zone *zone,* check here not to call set_pageblock_migratetype() against * pfn out of zone. * -* Please note that MEMMAP_HOTPLUG path doesn't clear memmap +* Please note that MEMINIT_HOTPLUG path doesn't clear memmap * because this is done early in section_activate() */ if (!(pfn & (pageblock_nr_pages -1 ))) {
@@ -6028,7 +6028,7 @@ static void __meminit zone_init_free_lists(struct zone *zone)void __meminit __weak memmap_init (unsigned long size,int nid,unsigned long zone,unsigned long start_pfn) { -memmap_init_zone (size, nid, zone, start_pfn,MEMMAP_EARLY ,NULL ); +memmap_init_zone (size, nid, zone, start_pfn,MEMINIT_EARLY ,NULL ); }static int zone_batchsize (struct zone *zone)
net/mac80211/rx.c +2 -1
@@ -419,7 +419,8 @@ ieee80211_add_rx_radiotap_header(struct ieee80211_local *local,else if (status->bw ==RATE_INFO_BW_5 ) channel_flags |=IEEE80211_CHAN_QUARTER ; -if (status->band ==NL80211_BAND_5GHZ ) +if (status->band ==NL80211_BAND_5GHZ || + status->band ==NL80211_BAND_6GHZ ) channel_flags |=IEEE80211_CHAN_OFDM |IEEE80211_CHAN_5GHZ ;else if (status->encoding !=RX_ENC_LEGACY ) channel_flags |=IEEE80211_CHAN_DYN |IEEE80211_CHAN_2GHZ ;
net/mac80211/vht.c +4 -4
@@ -168,10 +168,7 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,/* take some capabilities as-is */ cap_info =le32_to_cpu (vht_cap_ie->vht_cap_info); vht_cap->cap = cap_info; - vht_cap->cap &=IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 | -IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 | -IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 | -IEEE80211_VHT_CAP_RXLDPC | + vht_cap->cap &=IEEE80211_VHT_CAP_RXLDPC |IEEE80211_VHT_CAP_VHT_TXOP_PS |IEEE80211_VHT_CAP_HTC_VHT | IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK |
@@ -180,6 +177,9 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN |IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN ; + vht_cap->cap |=min_t (u32, cap_info &IEEE80211_VHT_CAP_MAX_MPDU_MASK , + own_cap.cap &IEEE80211_VHT_CAP_MAX_MPDU_MASK ); +/* and some based on our own capabilities */ switch (own_cap.cap &IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK ) {case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ :
net/netfilter/nf_conntrack_netlink.c +2 -0
@@ -1141,6 +1141,8 @@ ctnetlink_parse_tuple(const struct nlattr * const cda[],if (!tb[CTA_TUPLE_IP ])return -EINVAL ; +if (l3num !=NFPROTO_IPV4 && l3num !=NFPROTO_IPV6 ) +return -EOPNOTSUPP ; tuple->src.l3num = l3num; err =ctnetlink_parse_tuple_ip (tb[CTA_TUPLE_IP ], tuple);
net/vmw_vsock/virtio_transport.c +80 -80
178 lines not on this page · raw message
net/vmw_vsock/virtio_transport_common.c +7 -6
@@ -696,9 +696,9 @@ static int virtio_transport_reset(struct vsock_sock *vsk,/* Normally packets are associated with a socket. There may be no socket if an * attempt was made to connect to a socket that does not exist. */ -static int virtio_transport_reset_no_sock (struct virtio_vsock_pkt *pkt) +static int virtio_transport_reset_no_sock (const struct virtio_transport *t, +struct virtio_vsock_pkt *pkt) { -const struct virtio_transport *t;struct virtio_vsock_pkt *reply;struct virtio_vsock_pkt_info info = { .op =VIRTIO_VSOCK_OP_RST ,
@@ -718,7 +718,6 @@ static int virtio_transport_reset_no_sock(struct virtio_vsock_pkt *pkt)if (!reply)return -ENOMEM ; - t =virtio_transport_get_ops ();if (!t) {virtio_transport_free_pkt (reply);return -ENOTCONN ;
@@ -1060,7 +1059,8 @@ static bool virtio_transport_space_update(struct sock *sk,/* We are under the virtio-vsock's vsock->rx_lock or vhost-vsock's vq->mutex * lock. */ -void virtio_transport_recv_pkt (struct virtio_vsock_pkt *pkt) +void virtio_transport_recv_pkt (struct virtio_transport *t, +struct virtio_vsock_pkt *pkt) {struct sockaddr_vm src, dst;struct vsock_sock *vsk;
@@ -1082,7 +1082,7 @@ void virtio_transport_recv_pkt(struct virtio_vsock_pkt *pkt) le32_to_cpu(pkt->hdr.fwd_cnt));if (le16_to_cpu (pkt->hdr.type) !=VIRTIO_VSOCK_TYPE_STREAM ) { - (void )virtio_transport_reset_no_sock (pkt); + (void )virtio_transport_reset_no_sock (t, pkt); goto free_pkt; }
@@ -1093,7 +1093,7 @@ void virtio_transport_recv_pkt(struct virtio_vsock_pkt *pkt)if (!sk) { sk =vsock_find_bound_socket (&dst);if (!sk) { - (void )virtio_transport_reset_no_sock (pkt); + (void )virtio_transport_reset_no_sock (t, pkt); goto free_pkt; } }
@@ -1127,6 +1127,7 @@ void virtio_transport_recv_pkt(struct virtio_vsock_pkt *pkt)virtio_transport_free_pkt (pkt);break ;default : + (void )virtio_transport_reset_no_sock (t, pkt);virtio_transport_free_pkt (pkt);break ; }
scripts/dtc/Makefile +1 -1
@@ -9,7 +9,7 @@ dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o \ dtc-objs += dtc-lexer.lex.o dtc-parser.tab.o # Source files need to get at the userspace version of libfdt_env.h to compile -HOST_EXTRACFLAGS := -I $(srctree)/$(src)/libfdt +HOST_EXTRACFLAGS += -I $(srctree)/$(src)/libfdt ifeq ($(shell pkg-config --exists yaml-0.1 2>/dev/null && echo yes),) ifneq ($(CHECK_DTBS),)
tools/io_uring/io_uring-bench.c +2 -2
@@ -130,7 +130,7 @@ static int io_uring_register_files(struct submitter *s) s->nr_files); } -static int gettid (void ) +static int lk_gettid (void ) {return syscall (__NR_gettid); }
@@ -281,7 +281,7 @@ static void *submitter_fn(void *data)struct io_sq_ring *ring = &s->sq_ring;int ret, prepped; -printf ("submitter=%d\n" ,gettid ()); +printf ("submitter=%d\n" ,lk_gettid ());srand48_r (pthread_self (), &s->rand);
tools/lib/bpf/Makefile +1 -1
@@ -59,7 +59,7 @@ FEATURE_USER = .libbpf FEATURE_TESTS = libelf libelf-mmap bpf reallocarray cxx FEATURE_DISPLAY = libelf bpf -INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi +INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/include/uapi FEATURE_CHECK_CFLAGS-bpf = $(INCLUDES) check_feat := 1