kernel: bump 4.19 to 4.19.122
Refreshed all patches. Remove upstreamed: - 551-loop-Better-discard-support-for-block-devices.patch Fixed: - CVE-2020-11884 - CVE-2020-12114 - CVE-2019-3016 - CVE-2020-11669 Compile-tested on: cns3xxx Runtime-tested on: cns3xxx Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
This commit is contained in:
		| @@ -7,11 +7,11 @@ ifdef CONFIG_TESTING_KERNEL | |||||||
| endif | endif | ||||||
|  |  | ||||||
| LINUX_VERSION-4.14 = .180 | LINUX_VERSION-4.14 = .180 | ||||||
| LINUX_VERSION-4.19 = .115 | LINUX_VERSION-4.19 = .122 | ||||||
| LINUX_VERSION-5.4 = .39 | LINUX_VERSION-5.4 = .39 | ||||||
|  |  | ||||||
| LINUX_KERNEL_HASH-4.14.180 = 444ef973d9b6a6ea174e4a9086f0aea980d8575d13302e431ad688f22e27ed0e | LINUX_KERNEL_HASH-4.14.180 = 444ef973d9b6a6ea174e4a9086f0aea980d8575d13302e431ad688f22e27ed0e | ||||||
| LINUX_KERNEL_HASH-4.19.115 = 11b2d97c8ea5ceb40c5e1d0bb87ad5b2b8c84560181bc60c0d28ec3a3e3801c2 | LINUX_KERNEL_HASH-4.19.122 = 5050268ec5cf003d96366d1611ecfa4ab6974125d6fa26cea1ccb81dd4df00a5 | ||||||
| LINUX_KERNEL_HASH-5.4.39 = 5141965a61a7b1c538443782ec3ef25fe0c3f9cd4d70c4e9f969d16883f365c8 | LINUX_KERNEL_HASH-5.4.39 = 5141965a61a7b1c538443782ec3ef25fe0c3f9cd4d70c4e9f969d16883f365c8 | ||||||
|  |  | ||||||
| remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | ||||||
|   | |||||||
| @@ -1,9 +1,10 @@ | |||||||
| --- a/drivers/mtd/parsers/Makefile | --- a/drivers/mtd/parsers/Makefile | ||||||
| +++ b/drivers/mtd/parsers/Makefile | +++ b/drivers/mtd/parsers/Makefile | ||||||
| @@ -1,2 +1,3 @@ | @@ -1,3 +1,4 @@ | ||||||
| +obj-$(CONFIG_MTD_PARSER_CYBERTAN)	+= parser_cybertan.o | +obj-$(CONFIG_MTD_PARSER_CYBERTAN)	+= parser_cybertan.o | ||||||
|  obj-$(CONFIG_MTD_PARSER_TRX)		+= parser_trx.o |  obj-$(CONFIG_MTD_PARSER_TRX)		+= parser_trx.o | ||||||
|  obj-$(CONFIG_MTD_SHARPSL_PARTS)		+= sharpslpart.o |  obj-$(CONFIG_MTD_SHARPSL_PARTS)		+= sharpslpart.o | ||||||
|  |  obj-$(CONFIG_MTD_ROUTERBOOT_PARTS)		+= routerbootpart.o | ||||||
| --- a/drivers/mtd/parsers/Kconfig | --- a/drivers/mtd/parsers/Kconfig | ||||||
| +++ b/drivers/mtd/parsers/Kconfig | +++ b/drivers/mtd/parsers/Kconfig | ||||||
| @@ -1,3 +1,11 @@ | @@ -1,3 +1,11 @@ | ||||||
|   | |||||||
| @@ -917,7 +917,7 @@ Fixes https://github.com/raspberrypi/linux/issues/2408 | |||||||
|  } |  } | ||||||
| --- a/drivers/usb/core/hub.c
 | --- a/drivers/usb/core/hub.c
 | ||||||
| +++ b/drivers/usb/core/hub.c
 | +++ b/drivers/usb/core/hub.c
 | ||||||
| @@ -5232,7 +5232,7 @@ static void port_event(struct usb_hub *h
 | @@ -5246,7 +5246,7 @@ static void port_event(struct usb_hub *h
 | ||||||
|  		u16 status = 0, unused; |  		u16 status = 0, unused; | ||||||
|  		port_dev->over_current_count++; |  		port_dev->over_current_count++; | ||||||
|   |   | ||||||
| @@ -928,7 +928,7 @@ Fixes https://github.com/raspberrypi/linux/issues/2408 | |||||||
|  				USB_PORT_FEAT_C_OVER_CURRENT); |  				USB_PORT_FEAT_C_OVER_CURRENT); | ||||||
| --- a/drivers/usb/core/message.c
 | --- a/drivers/usb/core/message.c
 | ||||||
| +++ b/drivers/usb/core/message.c
 | +++ b/drivers/usb/core/message.c
 | ||||||
| @@ -1993,6 +1993,85 @@ free_interfaces:
 | @@ -2000,6 +2000,85 @@ free_interfaces:
 | ||||||
|  	if (cp->string == NULL && |  	if (cp->string == NULL && | ||||||
|  			!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) |  			!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) | ||||||
|  		cp->string = usb_cache_string(dev, cp->desc.iConfiguration); |  		cp->string = usb_cache_string(dev, cp->desc.iConfiguration); | ||||||
|   | |||||||
| @@ -156,7 +156,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> | |||||||
| +}; | +}; | ||||||
| --- a/arch/arm/boot/dts/bcm283x.dtsi | --- a/arch/arm/boot/dts/bcm283x.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm283x.dtsi | +++ b/arch/arm/boot/dts/bcm283x.dtsi | ||||||
| @@ -565,6 +565,32 @@ | @@ -566,6 +566,32 @@ | ||||||
|  			status = "disabled"; |  			status = "disabled"; | ||||||
|  		}; |  		}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c | --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c | ||||||
| +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c | +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c | ||||||
| @@ -2147,7 +2147,7 @@ static void bcmgenet_init_tx_ring(struct | @@ -2150,7 +2150,7 @@ static void bcmgenet_init_tx_ring(struct | ||||||
|   |   | ||||||
|  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX); |  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX); | ||||||
|  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX); |  	bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX); | ||||||
| @@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  	/* Disable rate control for now */ |  	/* Disable rate control for now */ | ||||||
|  	bcmgenet_tdma_ring_writel(priv, index, flow_period_val, |  	bcmgenet_tdma_ring_writel(priv, index, flow_period_val, | ||||||
|  				  TDMA_FLOW_PERIOD); |  				  TDMA_FLOW_PERIOD); | ||||||
| @@ -3576,9 +3576,12 @@ static int bcmgenet_probe(struct platfor | @@ -3580,9 +3580,12 @@ static int bcmgenet_probe(struct platfor | ||||||
|  	netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1); |  	netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1); | ||||||
|   |   | ||||||
|  	/* Set default coalescing parameters */ |  	/* Set default coalescing parameters */ | ||||||
|   | |||||||
| @@ -159,8 +159,8 @@ Signed-off-by: Stefan Wahren <wahrenst@gmx.net> | |||||||
|  			jtag_gpio22: jtag_gpio22 { |  			jtag_gpio22: jtag_gpio22 { | ||||||
|  				brcm,pins = <22 23 24 25 26 27>; |  				brcm,pins = <22 23 24 25 26 27>; | ||||||
|  				brcm,function = <BCM2835_FSEL_ALT4>; |  				brcm,function = <BCM2835_FSEL_ALT4>; | ||||||
| @@ -487,14 +460,6 @@ | @@ -488,14 +461,6 @@ | ||||||
|   |  			status = "disabled"; | ||||||
|  		}; |  		}; | ||||||
|   |   | ||||||
| -		thermal: thermal@7e212000 { | -		thermal: thermal@7e212000 { | ||||||
| @@ -174,7 +174,7 @@ Signed-off-by: Stefan Wahren <wahrenst@gmx.net> | |||||||
|  		aux: aux@7e215000 { |  		aux: aux@7e215000 { | ||||||
|  			compatible = "brcm,bcm2835-aux"; |  			compatible = "brcm,bcm2835-aux"; | ||||||
|  			#clock-cells = <1>; |  			#clock-cells = <1>; | ||||||
| @@ -660,12 +625,6 @@ | @@ -661,12 +626,6 @@ | ||||||
|  			phy-names = "usb2-phy"; |  			phy-names = "usb2-phy"; | ||||||
|  		}; |  		}; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|   * have been called previously.  Use for set_configuration, set_interface, |   * have been called previously.  Use for set_configuration, set_interface, | ||||||
| --- a/drivers/usb/core/message.c | --- a/drivers/usb/core/message.c | ||||||
| +++ b/drivers/usb/core/message.c | +++ b/drivers/usb/core/message.c | ||||||
| @@ -1113,6 +1113,21 @@ static void remove_intf_ep_devs(struct u | @@ -1120,6 +1120,21 @@ static void remove_intf_ep_devs(struct u | ||||||
|  	intf->ep_devs_created = 0; |  	intf->ep_devs_created = 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci.c | --- a/drivers/usb/host/xhci.c | ||||||
| +++ b/drivers/usb/host/xhci.c | +++ b/drivers/usb/host/xhci.c | ||||||
| @@ -1425,6 +1425,103 @@ command_cleanup: | @@ -1427,6 +1427,103 @@ command_cleanup: | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  /* |  /* | ||||||
| @@ -119,7 +119,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|   * non-error returns are a promise to giveback() the urb later |   * non-error returns are a promise to giveback() the urb later | ||||||
|   * we drop ownership so next owner (or urb unlink) can get it |   * we drop ownership so next owner (or urb unlink) can get it | ||||||
|   */ |   */ | ||||||
| @@ -5217,6 +5314,7 @@ static const struct hc_driver xhci_hc_dr | @@ -5219,6 +5316,7 @@ static const struct hc_driver xhci_hc_dr | ||||||
|  	.endpoint_reset =	xhci_endpoint_reset, |  	.endpoint_reset =	xhci_endpoint_reset, | ||||||
|  	.check_bandwidth =	xhci_check_bandwidth, |  	.check_bandwidth =	xhci_check_bandwidth, | ||||||
|  	.reset_bandwidth =	xhci_reset_bandwidth, |  	.reset_bandwidth =	xhci_reset_bandwidth, | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/gpu/drm/vc4/vc4_hdmi.c | --- a/drivers/gpu/drm/vc4/vc4_hdmi.c | ||||||
| +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c | +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c | ||||||
| @@ -1087,10 +1087,12 @@ static int vc4_hdmi_audio_init(struct vc | @@ -1099,10 +1099,12 @@ static int vc4_hdmi_audio_init(struct vc | ||||||
|  	struct device *dev = &hdmi->pdev->dev; |  	struct device *dev = &hdmi->pdev->dev; | ||||||
|  	const __be32 *addr; |  	const __be32 *addr; | ||||||
|  	int ret; |  	int ret; | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  static inline void bcmgenet_writel(u32 value, void __iomem *offset) |  static inline void bcmgenet_writel(u32 value, void __iomem *offset) | ||||||
|  { |  { | ||||||
|  	/* MIPS chips strapped for BE will automagically configure the |  	/* MIPS chips strapped for BE will automagically configure the | ||||||
| @@ -1993,6 +1997,11 @@ static void reset_umac(struct bcmgenet_p | @@ -1996,6 +2000,11 @@ static void reset_umac(struct bcmgenet_p | ||||||
|  	bcmgenet_rbuf_ctrl_set(priv, 0); |  	bcmgenet_rbuf_ctrl_set(priv, 0); | ||||||
|  	udelay(10); |  	udelay(10); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -488,7 +488,7 @@ | |||||||
|  		uasm_i_eret(&p); /* return from trap */ |  		uasm_i_eret(&p); /* return from trap */ | ||||||
|  	} |  	} | ||||||
|  #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT |  #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT | ||||||
| @@ -2046,6 +2055,9 @@ build_r4000_tlbchange_handler_head(u32 * | @@ -2049,6 +2058,9 @@ build_r4000_tlbchange_handler_head(u32 * | ||||||
|  #ifdef CONFIG_64BIT |  #ifdef CONFIG_64BIT | ||||||
|  	build_get_pmde64(p, l, r, wr.r1, wr.r2); /* get pmd in ptr */ |  	build_get_pmde64(p, l, r, wr.r1, wr.r2); /* get pmd in ptr */ | ||||||
|  #else |  #else | ||||||
| @@ -498,7 +498,7 @@ | |||||||
|  	build_get_pgde32(p, wr.r1, wr.r2); /* get pgd in ptr */ |  	build_get_pgde32(p, wr.r1, wr.r2); /* get pgd in ptr */ | ||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
| @@ -2092,6 +2104,9 @@ build_r4000_tlbchange_handler_tail(u32 * | @@ -2095,6 +2107,9 @@ build_r4000_tlbchange_handler_tail(u32 * | ||||||
|  	build_tlb_write_entry(p, l, r, tlb_indexed); |  	build_tlb_write_entry(p, l, r, tlb_indexed); | ||||||
|  	uasm_l_leave(l, *p); |  	uasm_l_leave(l, *p); | ||||||
|  	build_restore_work_registers(p); |  	build_restore_work_registers(p); | ||||||
|   | |||||||
| @@ -48,7 +48,7 @@ Reviewed-by: John Gilmore <gnu@toad.com> | |||||||
|  #define	INADDR_ANY		((unsigned long int) 0x00000000) |  #define	INADDR_ANY		((unsigned long int) 0x00000000) | ||||||
| --- a/net/ipv4/devinet.c | --- a/net/ipv4/devinet.c | ||||||
| +++ b/net/ipv4/devinet.c | +++ b/net/ipv4/devinet.c | ||||||
| @@ -949,7 +949,7 @@ static int inet_abc_len(__be32 addr) | @@ -954,7 +954,7 @@ static int inet_abc_len(__be32 addr) | ||||||
|  { |  { | ||||||
|  	int rc = -1;	/* Something else, probably a multicast. */ |  	int rc = -1;	/* Something else, probably a multicast. */ | ||||||
|   |   | ||||||
| @@ -57,7 +57,7 @@ Reviewed-by: John Gilmore <gnu@toad.com> | |||||||
|  		rc = 0; |  		rc = 0; | ||||||
|  	else { |  	else { | ||||||
|  		__u32 haddr = ntohl(addr); |  		__u32 haddr = ntohl(addr); | ||||||
| @@ -960,6 +960,8 @@ static int inet_abc_len(__be32 addr) | @@ -965,6 +965,8 @@ static int inet_abc_len(__be32 addr) | ||||||
|  			rc = 16; |  			rc = 16; | ||||||
|  		else if (IN_CLASSC(haddr)) |  		else if (IN_CLASSC(haddr)) | ||||||
|  			rc = 24; |  			rc = 24; | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> | |||||||
|  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o |  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o | ||||||
| --- a/drivers/mtd/nand/spi/core.c | --- a/drivers/mtd/nand/spi/core.c | ||||||
| +++ b/drivers/mtd/nand/spi/core.c | +++ b/drivers/mtd/nand/spi/core.c | ||||||
| @@ -764,6 +764,7 @@ static const struct nand_ops spinand_ops | @@ -762,6 +762,7 @@ static const struct nand_ops spinand_ops | ||||||
|  static const struct spinand_manufacturer *spinand_manufacturers[] = { |  static const struct spinand_manufacturer *spinand_manufacturers[] = { | ||||||
|  	¯onix_spinand_manufacturer, |  	¯onix_spinand_manufacturer, | ||||||
|  	µn_spinand_manufacturer, |  	µn_spinand_manufacturer, | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> | |||||||
|  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o |  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o | ||||||
| --- a/drivers/mtd/nand/spi/core.c | --- a/drivers/mtd/nand/spi/core.c | ||||||
| +++ b/drivers/mtd/nand/spi/core.c | +++ b/drivers/mtd/nand/spi/core.c | ||||||
| @@ -762,6 +762,7 @@ static const struct nand_ops spinand_ops | @@ -760,6 +760,7 @@ static const struct nand_ops spinand_ops | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  static const struct spinand_manufacturer *spinand_manufacturers[] = { |  static const struct spinand_manufacturer *spinand_manufacturers[] = { | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> | |||||||
|  |  | ||||||
| --- a/drivers/mtd/nand/spi/core.c | --- a/drivers/mtd/nand/spi/core.c | ||||||
| +++ b/drivers/mtd/nand/spi/core.c | +++ b/drivers/mtd/nand/spi/core.c | ||||||
| @@ -853,7 +853,7 @@ spinand_select_op_variant(struct spinand | @@ -851,7 +851,7 @@ spinand_select_op_variant(struct spinand | ||||||
|   */ |   */ | ||||||
|  int spinand_match_and_init(struct spinand_device *spinand, |  int spinand_match_and_init(struct spinand_device *spinand, | ||||||
|  			   const struct spinand_info *table, |  			   const struct spinand_info *table, | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ ADOPTED FROM UPSTREAM	due to upstream commit 377e517b5fa5 in Linux 5.2 | |||||||
|  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o |  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o | ||||||
| --- a/drivers/mtd/nand/spi/core.c | --- a/drivers/mtd/nand/spi/core.c | ||||||
| +++ b/drivers/mtd/nand/spi/core.c | +++ b/drivers/mtd/nand/spi/core.c | ||||||
| @@ -765,6 +765,7 @@ static const struct spinand_manufacturer | @@ -763,6 +763,7 @@ static const struct spinand_manufacturer | ||||||
|  	&gigadevice_spinand_manufacturer, |  	&gigadevice_spinand_manufacturer, | ||||||
|  	¯onix_spinand_manufacturer, |  	¯onix_spinand_manufacturer, | ||||||
|  	µn_spinand_manufacturer, |  	µn_spinand_manufacturer, | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ Reviewed-by: Bart Van Assche <bvanassche@acm.org> | |||||||
|  |  | ||||||
| --- a/drivers/block/loop.c | --- a/drivers/block/loop.c | ||||||
| +++ b/drivers/block/loop.c | +++ b/drivers/block/loop.c | ||||||
| @@ -460,7 +460,7 @@ static void lo_complete_rq(struct reques | @@ -461,7 +461,7 @@ static void lo_complete_rq(struct reques | ||||||
|  	if (!cmd->use_aio || cmd->ret < 0 || cmd->ret == blk_rq_bytes(rq) || |  	if (!cmd->use_aio || cmd->ret < 0 || cmd->ret == blk_rq_bytes(rq) || | ||||||
|  	    req_op(rq) != REQ_OP_READ) { |  	    req_op(rq) != REQ_OP_READ) { | ||||||
|  		if (cmd->ret < 0) |  		if (cmd->ret < 0) | ||||||
| @@ -27,7 +27,7 @@ Reviewed-by: Bart Van Assche <bvanassche@acm.org> | |||||||
|  		goto end_io; |  		goto end_io; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -1904,7 +1904,10 @@ static void loop_handle_cmd(struct loop_ | @@ -1924,7 +1924,10 @@ static void loop_handle_cmd(struct loop_ | ||||||
|   failed: |   failed: | ||||||
|  	/* complete non-aio request */ |  	/* complete non-aio request */ | ||||||
|  	if (!cmd->use_aio || ret) { |  	if (!cmd->use_aio || ret) { | ||||||
|   | |||||||
| @@ -1,101 +0,0 @@ | |||||||
| From 3117c3f45edbcc269baaebd3d13f39b7bf884aa6 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Evan Green <evgreen@chromium.org> |  | ||||||
| Date: Thu, 14 Nov 2019 15:50:08 -0800 |  | ||||||
| Subject: loop: Better discard support for block devices |  | ||||||
|  |  | ||||||
| If the backing device for a loop device is itself a block device, |  | ||||||
| then mirror the "write zeroes" capabilities of the underlying |  | ||||||
| block device into the loop device. Copy this capability into both |  | ||||||
| max_write_zeroes_sectors and max_discard_sectors of the loop device. |  | ||||||
|  |  | ||||||
| The reason for this is that REQ_OP_DISCARD on a loop device translates |  | ||||||
| into blkdev_issue_zeroout(), rather than blkdev_issue_discard(). This |  | ||||||
| presents a consistent interface for loop devices (that discarded data |  | ||||||
| is zeroed), regardless of the backing device type of the loop device. |  | ||||||
| There should be no behavior change for loop devices backed by regular |  | ||||||
| files. |  | ||||||
|  |  | ||||||
| This change fixes blktest block/003, and removes an extraneous |  | ||||||
| error print in block/013 when testing on a loop device backed |  | ||||||
| by a block device that does not support discard. |  | ||||||
|  |  | ||||||
| Signed-off-by: Evan Green <evgreen@chromium.org> |  | ||||||
| Reviewed-by: Gwendal Grignou <gwendal@chromium.org> |  | ||||||
| Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> |  | ||||||
| --- |  | ||||||
|  drivers/block/loop.c | 40 +++++++++++++++++++++++++++++----------- |  | ||||||
|  1 file changed, 29 insertions(+), 11 deletions(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/block/loop.c |  | ||||||
| +++ b/drivers/block/loop.c |  | ||||||
| @@ -426,11 +426,12 @@ static int lo_fallocate(struct loop_devi |  | ||||||
|  	 * information. |  | ||||||
|  	 */ |  | ||||||
|  	struct file *file = lo->lo_backing_file; |  | ||||||
| +	struct request_queue *q = lo->lo_queue; |  | ||||||
|  	int ret; |  | ||||||
|   |  | ||||||
|  	mode |= FALLOC_FL_KEEP_SIZE; |  | ||||||
|   |  | ||||||
| -	if ((!file->f_op->fallocate) || lo->lo_encrypt_key_size) { |  | ||||||
| +	if (!blk_queue_discard(q)) { |  | ||||||
|  		ret = -EOPNOTSUPP; |  | ||||||
|  		goto out; |  | ||||||
|  	} |  | ||||||
| @@ -863,6 +864,21 @@ static void loop_config_discard(struct l |  | ||||||
|  	struct file *file = lo->lo_backing_file; |  | ||||||
|  	struct inode *inode = file->f_mapping->host; |  | ||||||
|  	struct request_queue *q = lo->lo_queue; |  | ||||||
| +	struct request_queue *backingq; |  | ||||||
| + |  | ||||||
| +	/* |  | ||||||
| +	 * If the backing device is a block device, mirror its zeroing |  | ||||||
| +	 * capability. REQ_OP_DISCARD translates to a zero-out even when backed |  | ||||||
| +	 * by block devices to keep consistent behavior with file-backed loop |  | ||||||
| +	 * devices. |  | ||||||
| +	 */ |  | ||||||
| +	if (S_ISBLK(inode->i_mode) && !lo->lo_encrypt_key_size) { |  | ||||||
| +		backingq = bdev_get_queue(inode->i_bdev); |  | ||||||
| +		blk_queue_max_discard_sectors(q, |  | ||||||
| +			backingq->limits.max_write_zeroes_sectors); |  | ||||||
| + |  | ||||||
| +		blk_queue_max_write_zeroes_sectors(q, |  | ||||||
| +			backingq->limits.max_write_zeroes_sectors); |  | ||||||
|   |  | ||||||
|  	/* |  | ||||||
|  	 * We use punch hole to reclaim the free space used by the |  | ||||||
| @@ -870,22 +886,24 @@ static void loop_config_discard(struct l |  | ||||||
|  	 * encryption is enabled, because it may give an attacker |  | ||||||
|  	 * useful information. |  | ||||||
|  	 */ |  | ||||||
| -	if ((!file->f_op->fallocate) || |  | ||||||
| -	    lo->lo_encrypt_key_size) { |  | ||||||
| +	} else if ((!file->f_op->fallocate) || lo->lo_encrypt_key_size) { |  | ||||||
|  		q->limits.discard_granularity = 0; |  | ||||||
|  		q->limits.discard_alignment = 0; |  | ||||||
|  		blk_queue_max_discard_sectors(q, 0); |  | ||||||
|  		blk_queue_max_write_zeroes_sectors(q, 0); |  | ||||||
| -		blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q); |  | ||||||
| -		return; |  | ||||||
| -	} |  | ||||||
|   |  | ||||||
| -	q->limits.discard_granularity = inode->i_sb->s_blocksize; |  | ||||||
| -	q->limits.discard_alignment = 0; |  | ||||||
| +	} else { |  | ||||||
| +		q->limits.discard_granularity = inode->i_sb->s_blocksize; |  | ||||||
| +		q->limits.discard_alignment = 0; |  | ||||||
|   |  | ||||||
| -	blk_queue_max_discard_sectors(q, UINT_MAX >> 9); |  | ||||||
| -	blk_queue_max_write_zeroes_sectors(q, UINT_MAX >> 9); |  | ||||||
| -	blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); |  | ||||||
| +		blk_queue_max_discard_sectors(q, UINT_MAX >> 9); |  | ||||||
| +		blk_queue_max_write_zeroes_sectors(q, UINT_MAX >> 9); |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
| +	if (q->limits.max_write_zeroes_sectors) |  | ||||||
| +		blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); |  | ||||||
| +	else |  | ||||||
| +		blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q); |  | ||||||
|  } |  | ||||||
|   |  | ||||||
|  static void loop_unprepare_queue(struct loop_device *lo) |  | ||||||
| @@ -232,7 +232,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	if (!pe) |  	if (!pe) | ||||||
| --- a/mm/vmalloc.c | --- a/mm/vmalloc.c | ||||||
| +++ b/mm/vmalloc.c | +++ b/mm/vmalloc.c | ||||||
| @@ -2752,6 +2752,8 @@ static const struct seq_operations vmall | @@ -2764,6 +2764,8 @@ static const struct seq_operations vmall | ||||||
|   |   | ||||||
|  static int __init proc_vmalloc_init(void) |  static int __init proc_vmalloc_init(void) | ||||||
|  { |  { | ||||||
|   | |||||||
| @@ -14,25 +14,18 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org> | |||||||
|  drivers/platform/Makefile | 1 + |  drivers/platform/Makefile | 1 + | ||||||
|  2 files changed, 3 insertions(+) |  2 files changed, 3 insertions(+) | ||||||
|  |  | ||||||
| diff --git a/drivers/platform/Kconfig b/drivers/platform/Kconfig |  | ||||||
| index c11db8b..0283f0b 100644 |  | ||||||
| --- a/drivers/platform/Kconfig | --- a/drivers/platform/Kconfig | ||||||
| +++ b/drivers/platform/Kconfig | +++ b/drivers/platform/Kconfig | ||||||
| @@ -10,3 +10,5 @@ | @@ -10,3 +10,5 @@ source "drivers/platform/goldfish/Kconfi | ||||||
|  source "drivers/platform/chrome/Kconfig" |  source "drivers/platform/chrome/Kconfig" | ||||||
|  |   | ||||||
|  source "drivers/platform/mellanox/Kconfig" |  source "drivers/platform/mellanox/Kconfig" | ||||||
| + | + | ||||||
| +source "drivers/platform/mikrotik/Kconfig" | +source "drivers/platform/mikrotik/Kconfig" | ||||||
| diff --git a/drivers/platform/Makefile b/drivers/platform/Makefile |  | ||||||
| index d3a6630..ad290c3 100644 |  | ||||||
| --- a/drivers/platform/Makefile | --- a/drivers/platform/Makefile | ||||||
| +++ b/drivers/platform/Makefile | +++ b/drivers/platform/Makefile | ||||||
| @@ -9,3 +9,4 @@ | @@ -9,3 +9,4 @@ obj-$(CONFIG_MIPS)		+= mips/ | ||||||
|  obj-$(CONFIG_OLPC)		+= olpc/ |  obj-$(CONFIG_OLPC)		+= olpc/ | ||||||
|  obj-$(CONFIG_GOLDFISH)		+= goldfish/ |  obj-$(CONFIG_GOLDFISH)		+= goldfish/ | ||||||
|  obj-$(CONFIG_CHROME_PLATFORMS)	+= chrome/ |  obj-$(CONFIG_CHROME_PLATFORMS)	+= chrome/ | ||||||
| +obj-$(CONFIG_MIKROTIK)		+= mikrotik/ | +obj-$(CONFIG_MIKROTIK)		+= mikrotik/ | ||||||
| --  |  | ||||||
| 2.11.0 |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,11 +14,9 @@ Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org> | |||||||
|  drivers/mtd/parsers/Makefile | 1 + |  drivers/mtd/parsers/Makefile | 1 + | ||||||
|  2 files changed, 10 insertions(+) |  2 files changed, 10 insertions(+) | ||||||
|  |  | ||||||
| diff --git a/drivers/mtd/parsers/Kconfig b/drivers/mtd/parsers/Kconfig |  | ||||||
| index de6f5f8..0afa89c 100644 |  | ||||||
| --- a/drivers/mtd/parsers/Kconfig | --- a/drivers/mtd/parsers/Kconfig | ||||||
| +++ b/drivers/mtd/parsers/Kconfig | +++ b/drivers/mtd/parsers/Kconfig | ||||||
| @@ -22,3 +22,12 @@ config MTD_SHARPSL_PARTS | @@ -14,3 +14,12 @@ config MTD_SHARPSL_PARTS | ||||||
|  	  This provides the read-only FTL logic necessary to read the partition |  	  This provides the read-only FTL logic necessary to read the partition | ||||||
|  	  table from the NAND flash of Sharp SL Series (Zaurus) and the MTD |  	  table from the NAND flash of Sharp SL Series (Zaurus) and the MTD | ||||||
|  	  partition parser using this code. |  	  partition parser using this code. | ||||||
| @@ -31,8 +29,6 @@ index de6f5f8..0afa89c 100644 | |||||||
| +	  flash, some of which are fixed and some of which are located at | +	  flash, some of which are fixed and some of which are located at | ||||||
| +	  variable offsets. This parser handles both cases via properly | +	  variable offsets. This parser handles both cases via properly | ||||||
| +	  formatted DTS. | +	  formatted DTS. | ||||||
| diff --git a/drivers/mtd/parsers/Makefile b/drivers/mtd/parsers/Makefile |  | ||||||
| index 44ff342..0543362 100644 |  | ||||||
| --- a/drivers/mtd/parsers/Makefile | --- a/drivers/mtd/parsers/Makefile | ||||||
| +++ b/drivers/mtd/parsers/Makefile | +++ b/drivers/mtd/parsers/Makefile | ||||||
| @@ -1,2 +1,3 @@ | @@ -1,2 +1,3 @@ | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	__u16			tc_index;	/* traffic control index */ |  	__u16			tc_index;	/* traffic control index */ | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -5456,6 +5456,9 @@ static enum gro_result dev_gro_receive(s | @@ -5457,6 +5457,9 @@ static enum gro_result dev_gro_receive(s | ||||||
|  	int same_flow; |  	int same_flow; | ||||||
|  	int grow; |  	int grow; | ||||||
|   |   | ||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	if (netif_elide_gro(skb->dev)) |  	if (netif_elide_gro(skb->dev)) | ||||||
|  		goto normal; |  		goto normal; | ||||||
|   |   | ||||||
| @@ -7114,6 +7117,48 @@ static void __netdev_adjacent_dev_unlink | @@ -7115,6 +7118,48 @@ static void __netdev_adjacent_dev_unlink | ||||||
|  					   &upper_dev->adj_list.lower); |  					   &upper_dev->adj_list.lower); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  static int __netdev_upper_dev_link(struct net_device *dev, |  static int __netdev_upper_dev_link(struct net_device *dev, | ||||||
|  				   struct net_device *upper_dev, bool master, |  				   struct net_device *upper_dev, bool master, | ||||||
|  				   void *upper_priv, void *upper_info, |  				   void *upper_priv, void *upper_info, | ||||||
| @@ -7164,6 +7209,7 @@ static int __netdev_upper_dev_link(struc | @@ -7165,6 +7210,7 @@ static int __netdev_upper_dev_link(struc | ||||||
|  	if (ret) |  	if (ret) | ||||||
|  		return ret; |  		return ret; | ||||||
|   |   | ||||||
| @@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, |  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, | ||||||
|  					    &changeupper_info.info); |  					    &changeupper_info.info); | ||||||
|  	ret = notifier_to_errno(ret); |  	ret = notifier_to_errno(ret); | ||||||
| @@ -7256,6 +7302,7 @@ void netdev_upper_dev_unlink(struct net_ | @@ -7257,6 +7303,7 @@ void netdev_upper_dev_unlink(struct net_ | ||||||
|   |   | ||||||
|  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); |  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); | ||||||
|   |   | ||||||
| @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, |  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, | ||||||
|  				      &changeupper_info.info); |  				      &changeupper_info.info); | ||||||
|   |   | ||||||
| @@ -7895,6 +7942,7 @@ int dev_set_mac_address(struct net_devic | @@ -7896,6 +7943,7 @@ int dev_set_mac_address(struct net_devic | ||||||
|  	if (err) |  	if (err) | ||||||
|  		return err; |  		return err; | ||||||
|  	dev->addr_assign_type = NET_ADDR_SET; |  	dev->addr_assign_type = NET_ADDR_SET; | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> | |||||||
|  /* |  /* | ||||||
|   * The Mellanox Tavor device gives false positive parity errors.  Mark this |   * The Mellanox Tavor device gives false positive parity errors.  Mark this | ||||||
|   * device with a broken_parity_status to allow PCI scanning code to "skip" |   * device with a broken_parity_status to allow PCI scanning code to "skip" | ||||||
| @@ -3147,6 +3148,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I | @@ -3213,6 +3214,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I | ||||||
|  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata); |  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata); | ||||||
|  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata); |  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata); | ||||||
|   |   | ||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> | |||||||
|  /* |  /* | ||||||
|   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. |   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. | ||||||
|   * To work around this, query the size it should be configured to by the |   * To work around this, query the size it should be configured to by the | ||||||
| @@ -3172,6 +3175,8 @@ static void quirk_intel_ntb(struct pci_d | @@ -3238,6 +3241,8 @@ static void quirk_intel_ntb(struct pci_d | ||||||
|  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb); |  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb); | ||||||
|  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb); |  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb); | ||||||
|   |   | ||||||
| @@ -51,7 +51,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> | |||||||
|  /* |  /* | ||||||
|   * Some BIOS implementations leave the Intel GPU interrupts enabled, even |   * Some BIOS implementations leave the Intel GPU interrupts enabled, even | ||||||
|   * though no one is handling them (e.g., if the i915 driver is never |   * though no one is handling them (e.g., if the i915 driver is never | ||||||
| @@ -3210,6 +3215,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN | @@ -3276,6 +3281,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN | ||||||
|  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); |  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); | ||||||
|  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); |  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); | ||||||
|   |   | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Koen Vandeputte
					Koen Vandeputte