Linux 4.4.239
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.4.239 kernel.
All users of the 4.4 kernel series must upgrade.
The updated 4.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.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
------------
Makefile | 2 drivers/base/dd.c | 5 drivers/clk/samsung/clk-exynos4.c | 4 drivers/gpio/gpio-tc3589x.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 drivers/i2c/busses/i2c-cpm.c | 3 drivers/input/serio/i8042-x86ia64io.h | 7 + drivers/iommu/exynos-iommu.c | 8 + drivers/mtd/nand/nand_base.c | 22 ++- drivers/net/bonding/bond_main.c | 1 drivers/net/ethernet/dec/tulip/de2104x.c | 2 drivers/net/ethernet/renesas/ravb_main.c | 110 +++++++++---------- drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 15 -- drivers/net/team/team.c | 3 drivers/net/usb/rndis_host.c | 2 drivers/net/usb/rtl8150.c | 16 ++ drivers/net/wan/hdlc_cisco.c | 1 drivers/net/wan/hdlc_fr.c | 3 drivers/net/wan/hdlc_ppp.c | 1 drivers/net/wan/lapbether.c | 4 drivers/platform/x86/thinkpad_acpi.c | 6 - drivers/video/console/fbcon.c | 12 ++ drivers/video/console/fbcon.h | 7 - drivers/video/console/fbcon_rotate.c | 1 drivers/video/console/newport_con.c | 7 - drivers/video/console/tileblit.c | 1 fs/eventpoll.c | 71 +++++------- fs/nfs/dir.c | 3 include/linux/font.h | 13 ++ include/linux/mtd/nand.h | 6 - include/net/xfrm.h | 16 +- kernel/kmod.c | 9 + lib/fonts/font_10x18.c | 9 - lib/fonts/font_6x10.c | 9 - lib/fonts/font_6x11.c | 9 - lib/fonts/font_7x14.c | 9 - lib/fonts/font_8x16.c | 9 - lib/fonts/font_8x8.c | 9 - lib/fonts/font_acorn_8x8.c | 9 + lib/fonts/font_mini_4x6.c | 8 - lib/fonts/font_pearl_8x8.c | 9 - lib/fonts/font_sun12x22.c | 9 - lib/fonts/font_sun8x16.c | 7 - net/netfilter/nf_conntrack_netlink.c | 2 net/rxrpc/ar-key.c | 16 ++ net/sctp/auth.c | 1 net/wireless/nl80211.c | 3 net/xfrm/xfrm_state.c | 13 +- tools/perf/builtin-top.c | 4 49 files changed, 283 insertions(+), 217 deletions(-)
Aaron Ma (1):
platform/x86: thinkpad_acpi: re-initialize ACPI buffer size when reuse
Al Viro (4):
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...
Anant Thazhemadam (3):
net: wireless: nl80211: fix out-of-bounds access in nl80211_del_key()
net: team: fix memory leak in __team_options_register
net: usb: rtl8150: set random MAC address when set_ethernet_addr() fails
Antony Antony (2):
xfrm: clone XFRMA_REPLAY_ESN_VAL in xfrm_do_migrate
xfrm: clone whole liftime_cur structure in xfrm_do_migrate
David Howells (2):
rxrpc: Downgrade the BUG() for unsupported token type in rxrpc_read()
rxrpc: Fix server keyring leak
Eric Dumazet (3):
sctp: fix sctp_auth_init_hmacs() error path
team: set dev->needed_headroom in team_setup_by_port()
bonding: set dev->needed_headroom in bond_setup_by_slave()Geert Uytterhoeven (1):
Revert "ravb: Fixed to be able to unload modules"
Greg Kroah-Hartman (1):
Linux 4.4.239
Herbert Xu (1):
xfrm: Use correct address family in xfrm_state_find
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
Jiri Kosina (1):
Input: i8042 - add nopnp quirk for Acer Aspire 5 A515
Linus Torvalds (1):
usermodehelper: reset umask to default before executing user process
Lucy Yan (1):
net: dec: de2104x: Increase receive ring size for Tulip
Marc Dionne (1):
rxrpc: Fix rxkad token xdr encoding
Marek Szyprowski (1):
clk: samsung: exynos4: mark 'chipid' clock as CLK_IGNORE_UNUSED
Nicolas VINCENT (1):
i2c: cpm: Fix i2c_ram structure
Olympia Giannou (1):
rndis_host: increase sleep time in the query-response loop
Peilin Ye (3):
fbdev, newport_con: Move FONT_EXTRA_WORDS macros into linux/font.h
Fonts: Support FONT_EXTRA_WORDS macros for built-in fonts
fbcon: Fix global-out-of-bounds read in fbcon_get_font()
Richard Weinberger (1):
mtd: nand: Provide nand_cleanup() function to free NAND related resources
Tetsuo Handa (1):
driver core: Fix probe_count imbalance in really_probe()
Tom Rix (1):
platform/x86: thinkpad_acpi: initialize tp_nvram_state variable
Tommi Rantala (1):
perf top: Fix stdio interface input handling with glibc 2.28+
Voon Weifeng (1):
net: stmmac: removed enabling eee in EEE set callback
Will McVicker (1):
netfilter: ctnetlink: add a range check for l3/l4 protonum
Xie He (2):
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
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 238 +SUBLEVEL = 239 EXTRAVERSION = NAME = Blurry Fish Butt
drivers/base/dd.c +3 -2
@@ -285,7 +285,8 @@ static int really_probe(struct device *dev, struct device_driver *drv) drv->bus->name, __func__, drv->name, dev_name(dev));if (!list_empty (&dev->devres_head)) {dev_crit (dev,"Resources present before probing\n" ); -return -EBUSY ; + ret = -EBUSY ; + goto done; } dev->driver = drv;
@@ -363,7 +364,7 @@ probe_failed: ret =0 ; done:atomic_dec (&probe_count); -wake_up (&probe_waitqueue); +wake_up_all (&probe_waitqueue);return ret; }
drivers/clk/samsung/clk-exynos4.c +2 -2
@@ -1059,7 +1059,7 @@ static struct samsung_gate_clock exynos4210_gate_clks[] __initdata = {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,
@@ -1100,7 +1100,7 @@ static struct samsung_gate_clock exynos4x12_gate_clks[] __initdata = { 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/gpio/gpio-tc3589x.c +1 -1
@@ -157,7 +157,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/gpu/drm/amd/amdgpu/amdgpu_display.c +1 -1
@@ -311,7 +311,7 @@ int amdgpu_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/i2c/busses/i2c-cpm.c +3 -0
@@ -74,6 +74,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/input/serio/i8042-x86ia64io.h +7 -0
@@ -797,6 +797,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
@@ -1158,13 +1158,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); dev->archdata.iommu = owner;
drivers/mtd/nand/nand_base.c +15 -7
@@ -4427,18 +4427,14 @@ int nand_scan(struct mtd_info *mtd, int maxchips)EXPORT_SYMBOL (nand_scan);/** -* nand_release - [NAND Interface] Free resources held by the NAND device -* @mtd: MTD device structure +* nand_cleanup - [NAND Interface] Free resources held by the NAND device +* @chip: NAND chip object */ -void nand_release (struct mtd_info *mtd) +void nand_cleanup (struct nand_chip *chip) { -struct nand_chip *chip = mtd->priv; -if (chip->ecc.mode ==NAND_ECC_SOFT_BCH )nand_bch_free ((struct nand_bch_control *)chip->ecc.priv); -mtd_device_unregister (mtd); -/* Free bad block table memory */ kfree (chip->bbt);if (!(chip->options &NAND_OWN_BUFFERS ))
@@ -4449,6 +4445,18 @@ void nand_release(struct mtd_info *mtd) & NAND_BBT_DYNAMICSTRUCT)kfree (chip->badblock_pattern); } +EXPORT_SYMBOL_GPL (nand_cleanup); + +/** +* nand_release - [NAND Interface] Unregister the MTD device and free resources +* held by the NAND device +* @mtd: MTD device structure +*/ +void nand_release (struct mtd_info *mtd) +{ +mtd_device_unregister (mtd); +nand_cleanup (mtd->priv); +}EXPORT_SYMBOL_GPL (nand_release);static int __init nand_base_init (void )
drivers/net/bonding/bond_main.c +1 -0
@@ -1132,6 +1132,7 @@ static void bond_setup_by_slave(struct net_device *bond_dev, bond_dev->type = slave_dev->type; bond_dev->hard_header_len = slave_dev->hard_header_len; + bond_dev->needed_headroom = slave_dev->needed_headroom; bond_dev->addr_len = slave_dev->addr_len; memcpy(bond_dev->broadcast, slave_dev->broadcast,
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/ethernet/renesas/ravb_main.c +55 -55
158 lines not on this page · raw message
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +4 -11
@@ -616,23 +616,16 @@ static int stmmac_ethtool_op_set_eee(struct net_device *dev,struct stmmac_priv *priv =netdev_priv (dev);int ret; -if (!edata->eee_enabled) { +if (!priv->dma_cap.eee) +return -EOPNOTSUPP ; + +if (!edata->eee_enabled)stmmac_disable_eee_mode (priv); - }else { -/* We are asking for enabling the EEE but it is safe -* to verify all by invoking the eee_init function. -* In case of failure it will return an error. -*/ - edata->eee_enabled =stmmac_eee_init (priv); -if (!edata->eee_enabled) -return -EOPNOTSUPP ; - } ret =phy_ethtool_set_eee (dev->phydev, edata);if (ret)return ret; - priv->eee_enabled = edata->eee_enabled; priv->tx_lpi_timer = edata->tx_lpi_timer;return 0 ; }
drivers/net/team/team.c +2 -1
@@ -285,7 +285,7 @@ inst_rollback:for (i--; i >=0 ; i--)__team_option_inst_del_option (team, dst_opts[i]); - i = option_count -1 ; + i = option_count; alloc_rollback:for (i--; i >=0 ; i--)kfree (dst_opts[i]);
@@ -2038,6 +2038,7 @@ static void team_setup_by_port(struct net_device *dev, dev->header_ops = port_dev->header_ops; dev->type = port_dev->type; dev->hard_header_len = port_dev->hard_header_len; + dev->needed_headroom = port_dev->needed_headroom; dev->addr_len = port_dev->addr_len; dev->mtu = port_dev->mtu;memcpy (dev->broadcast, port_dev->broadcast, port_dev->addr_len);
drivers/net/usb/rndis_host.c +1 -1
@@ -213,7 +213,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/usb/rtl8150.c +12 -4
@@ -277,12 +277,20 @@ static int write_mii_word(rtl8150_t * dev, u8 phy, __u8 indx, u16 reg)return 1 ; } -static inline void set_ethernet_addr (rtl8150_t * dev) +static void set_ethernet_addr (rtl8150_t *dev) { -u8 node_id[6 ]; +u8 node_id[ETH_ALEN ]; +int ret; + + ret =get_registers (dev,IDR ,sizeof (node_id), node_id); -get_registers (dev,IDR ,sizeof (node_id), node_id); -memcpy (dev->netdev->dev_addr, node_id,sizeof (node_id)); +if (ret ==sizeof (node_id)) { +ether_addr_copy (dev->netdev->dev_addr, node_id); + }else { +eth_hw_addr_random (dev->netdev); +netdev_notice (dev->netdev,"Assigned a random MAC address: %pM\n" , + dev->netdev->dev_addr); + } }static int rtl8150_set_mac_address (struct net_device *netdev,void *p)
drivers/net/wan/hdlc_cisco.c +1 -0
@@ -120,6 +120,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 +3 -0
@@ -435,6 +435,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 ; }
@@ -557,6 +559,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);
drivers/net/wan/hdlc_ppp.c +1 -0
@@ -254,6 +254,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
@@ -201,8 +201,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 ;
@@ -213,6 +211,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/platform/x86/thinkpad_acpi.c +4 -2
@@ -2474,7 +2474,7 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,*/ static int hotkey_kthread (void *data) { -struct tp_nvram_state s[2 ]; +struct tp_nvram_state s[2 ] = {0 };u32 poll_mask, event_mask;unsigned int si, so;unsigned long t;
@@ -6362,8 +6362,10 @@ static int __init tpacpi_query_bcl_levels(acpi_handle handle)list_for_each_entry (child, &device->children, node) {acpi_status status =acpi_evaluate_object (child->handle,"_BCL" ,NULL , &buffer); -if (ACPI_FAILURE (status)) +if (ACPI_FAILURE (status)) { + buffer.length =ACPI_ALLOCATE_BUFFER ;continue ; + } obj = (union acpi_object *)buffer.pointer;if (!obj || (obj->type !=ACPI_TYPE_PACKAGE )) {
drivers/video/console/fbcon.c +12 -0
@@ -2234,6 +2234,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font)if (font->width <=8 ) { j = vc->vc_font.height; +if (font->charcount * j >FNTSIZE (fontdata)) +return -EINVAL ; +for (i =0 ; i < font->charcount; i++) {memcpy (data, fontdata, j);memset (data + j,0 ,32 - j);
@@ -2242,6 +2245,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) } }else if (font->width <=16 ) { j = vc->vc_font.height *2 ; +if (font->charcount * j >FNTSIZE (fontdata)) +return -EINVAL ; +for (i =0 ; i < font->charcount; i++) {memcpy (data, fontdata, j);memset (data + j,0 ,64 - j);
@@ -2249,6 +2255,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) fontdata += j; } }else if (font->width <=24 ) { +if (font->charcount * (vc->vc_font.height *sizeof (u32)) >FNTSIZE (fontdata)) +return -EINVAL ; +for (i =0 ; i < font->charcount; i++) {for (j =0 ; j < vc->vc_font.height; j++) { *data++ = fontdata[0 ];
@@ -2261,6 +2270,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) } }else { j = vc->vc_font.height *4 ; +if (font->charcount * j >FNTSIZE (fontdata)) +return -EINVAL ; +for (i =0 ; i < font->charcount; i++) {memcpy (data, fontdata, j);memset (data + j,0 ,128 - j);
drivers/video/console/fbcon.h +0 -7
@@ -151,13 +151,6 @@ static inline int attr_col_ec(int shift, struct vc_data *vc,#define attr_bgcol_ec (bgshift, vc, info) attr_col_ec(bgshift, vc, info, 0)#define attr_fgcol_ec (fgshift, vc, info) attr_col_ec(fgshift, vc, info, 1) -/* Font */ -#define REFCOUNT (fd) (((int *)(fd))[-1]) -#define FNTSIZE (fd) (((int *)(fd))[-2]) -#define FNTCHARCNT (fd) (((int *)(fd))[-3]) -#define FNTSUM (fd) (((int *)(fd))[-4]) -#define FONT_EXTRA_WORDS 4 -/* * Scroll Method */
drivers/video/console/fbcon_rotate.c +1 -0
@@ -14,6 +14,7 @@#include <linux/fb.h> #include <linux/vt_kern.h> #include <linux/console.h> +#include <linux/font.h> #include <asm/types.h> #include "fbcon.h" #include "fbcon_rotate.h"
drivers/video/console/newport_con.c +1 -6
@@ -35,12 +35,6 @@#define FONT_DATA ((unsigned char *)font_vga_8x16.data) -/* borrowed from fbcon.c */ -#define REFCOUNT (fd) (((int *)(fd))[-1]) -#define FNTSIZE (fd) (((int *)(fd))[-2]) -#define FNTCHARCNT (fd) (((int *)(fd))[-3]) -#define FONT_EXTRA_WORDS 3 -static unsigned char *font_data[MAX_NR_CONSOLES ];static struct newport_regs *npregs;
@@ -522,6 +516,7 @@ static int newport_set_font(int unit, struct console_font *op)FNTSIZE (new_data) = size;FNTCHARCNT (new_data) = op->charcount;REFCOUNT (new_data) =0 ;/* usage counter */ +FNTSUM (new_data) =0 ; p = new_data;for (i =0 ; i < op->charcount; i++) {
drivers/video/console/tileblit.c +1 -0
@@ -13,6 +13,7 @@#include <linux/fb.h> #include <linux/vt_kern.h> #include <linux/console.h> +#include <linux/font.h> #include <asm/types.h> #include "fbcon.h"
fs/eventpoll.c +30 -41
154 lines not on this page · raw message
fs/nfs/dir.c +3 -0
@@ -562,6 +562,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)
include/linux/font.h +13 -0
@@ -57,4 +57,17 @@ extern const struct font_desc *get_default_font(int xres, int yres,/* Max. length for the name of a predefined font */ #define MAX_FONT_NAME 32 +/* Extra word getters */ +#define REFCOUNT (fd) (((int *)(fd))[-1]) +#define FNTSIZE (fd) (((int *)(fd))[-2]) +#define FNTCHARCNT (fd) (((int *)(fd))[-3]) +#define FNTSUM (fd) (((int *)(fd))[-4]) + +#define FONT_EXTRA_WORDS 4 + +struct font_data { +unsigned int extra[FONT_EXTRA_WORDS ]; +const unsigned char data[]; +} __packed; +#endif /* _VIDEO_FONT_H */
include/linux/mtd/nand.h +5 -1
@@ -38,7 +38,7 @@ extern int nand_scan_ident(struct mtd_info *mtd, int max_chips, struct nand_flash_dev *table);extern int nand_scan_tail (struct mtd_info *mtd); -/* Free resources held by the NAND device */ +/* Unregister the MTD device and free resources held by the NAND device */ extern void nand_release (struct mtd_info *mtd);/* Internal helper for board drivers which need to override command function */
@@ -1029,4 +1029,8 @@ int nand_check_erased_ecc_chunk(void *data, int datalen, void *ecc, int ecclen, void *extraoob, int extraooblen, int threshold); + +/* Free resources held by the NAND device */ +void nand_cleanup (struct nand_chip *chip); +#endif /* __LINUX_MTD_NAND_H */
include/net/xfrm.h +6 -10
@@ -1730,21 +1730,17 @@ static inline int xfrm_replay_state_esn_len(struct xfrm_replay_state_esn *replaystatic inline int xfrm_replay_clone (struct xfrm_state *x,struct xfrm_state *orig) { - x->replay_esn =kzalloc (xfrm_replay_state_esn_len (orig->replay_esn), + + x->replay_esn =kmemdup (orig->replay_esn, +xfrm_replay_state_esn_len (orig->replay_esn),GFP_KERNEL );if (!x->replay_esn)return -ENOMEM ; - - x->replay_esn->bmp_len = orig->replay_esn->bmp_len; - x->replay_esn->replay_window = orig->replay_esn->replay_window; - - x->preplay_esn =kmemdup (x->replay_esn, -xfrm_replay_state_esn_len (x->replay_esn), + x->preplay_esn =kmemdup (orig->preplay_esn, +xfrm_replay_state_esn_len (orig->preplay_esn),GFP_KERNEL ); -if (!x->preplay_esn) { -kfree (x->replay_esn); +if (!x->preplay_esn)return -ENOMEM ; - }return 0 ; }
kernel/kmod.c +9 -0
@@ -28,6 +28,7 @@#include <linux/cred.h> #include <linux/file.h> #include <linux/fdtable.h> +#include <linux/fs_struct.h> #include <linux/workqueue.h> #include <linux/security.h> #include <linux/mount.h>
@@ -222,6 +223,14 @@ static int call_usermodehelper_exec_async(void *data)flush_signal_handlers (current,1 );spin_unlock_irq (¤t->sighand->siglock); +/* +* Initial kernel threads share ther FS with init, in order to +* get the init root directory. But we've now created a new +* thread that is going to execve a user process and has its own +* 'struct fs_struct'. Reset umask to the default. +*/ + current->fs->umask =0022 ; +/* * Our parent (unbound workqueue) runs with elevated scheduling * priority. Avoid propagating that into the userspace child.
lib/fonts/font_10x18.c +4 -5
@@ -7,8 +7,8 @@#define FONTDATAMAX 9216 -static const unsigned char fontdata_10x18[FONTDATAMAX ] = { - +static struct font_data fontdata_10x18 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,0x00 ,/* 0000000000 */ 0x00 ,0x00 ,/* 0000000000 */
@@ -5128,8 +5128,7 @@ static const unsigned char fontdata_10x18[FONTDATAMAX] = {0x00 ,0x00 ,/* 0000000000 */ 0x00 ,0x00 ,/* 0000000000 */ 0x00, 0x00, /* 0000000000 */ - -}; +} }; const struct font_desc font_10x18 = {
@@ -5137,7 +5136,7 @@ const struct font_desc font_10x18 = { .name = "10x18", .width = 10, .height = 18, - .data = fontdata_10x18, + .data = fontdata_10x18.data,#ifdef __sparc__ .pref = 5,#else
lib/fonts/font_6x10.c +5 -4
@@ -1,7 +1,9 @@#include <linux/font.h> -static const unsigned char fontdata_6x10[] = { +#define FONTDATAMAX 2560 +static struct font_data fontdata_6x10 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -3073,14 +3075,13 @@ static const unsigned char fontdata_6x10[] = { 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} };const struct font_desc font_6x10 = { .idx = FONT6x10_IDX, .name ="6x10" , .width =6 , .height =10 , - .data = fontdata_6x10, + .data = fontdata_6x10.data, .pref =0 , };
lib/fonts/font_6x11.c +4 -5
@@ -8,8 +8,8 @@#define FONTDATAMAX (11*256) -static const unsigned char fontdata_6x11[FONTDATAMAX ] = { - +static struct font_data fontdata_6x11 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -3337,8 +3337,7 @@ static const unsigned char fontdata_6x11[FONTDATAMAX] = {0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_6x11 = {
@@ -3346,7 +3345,7 @@ const struct font_desc font_vga_6x11 = { .name = "ProFont6x11", .width = 6, .height = 11, - .data = fontdata_6x11, + .data = fontdata_6x11.data, /* Try avoiding this font if possible unless on MAC */ .pref = -2000, };
lib/fonts/font_7x14.c +4 -5
@@ -7,8 +7,8 @@#define FONTDATAMAX 3584 -static const unsigned char fontdata_7x14[FONTDATAMAX ] = { - +static struct font_data fontdata_7x14 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 0000000 */ 0x00 ,/* 0000000 */
@@ -4104,8 +4104,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = {0x00 ,/* 0000000 */ 0x00 ,/* 0000000 */ 0x00, /* 0000000 */ - -}; +} }; const struct font_desc font_7x14 = {
@@ -4113,6 +4112,6 @@ const struct font_desc font_7x14 = { .name = "7x14", .width = 7, .height = 14, - .data = fontdata_7x14, + .data = fontdata_7x14.data, .pref = 0, };
lib/fonts/font_8x16.c +4 -5
@@ -9,8 +9,8 @@#define FONTDATAMAX 4096 -static const unsigned char fontdata_8x16[FONTDATAMAX ] = { - +static struct font_data fontdata_8x16 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -4618,8 +4618,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = {0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_8x16 = {
@@ -4627,7 +4626,7 @@ const struct font_desc font_vga_8x16 = { .name = "VGA8x16", .width = 8, .height = 16, - .data = fontdata_8x16, + .data = fontdata_8x16.data, .pref = 0, };EXPORT_SYMBOL (font_vga_8x16);
lib/fonts/font_8x8.c +4 -5
@@ -8,8 +8,8 @@#define FONTDATAMAX 2048 -static const unsigned char fontdata_8x8[FONTDATAMAX ] = { - +static struct font_data fontdata_8x8 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -2569,8 +2569,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = {0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_8x8 = {
@@ -2578,6 +2577,6 @@ const struct font_desc font_vga_8x8 = { .name = "VGA8x8", .width = 8, .height = 8, - .data = fontdata_8x8, + .data = fontdata_8x8.data, .pref = 0, };
lib/fonts/font_acorn_8x8.c +6 -3
@@ -2,7 +2,10 @@#include <linux/font.h> -static const unsigned char acorndata_8x8[] = { +#define FONTDATAMAX 2048 + +static struct font_data acorndata_8x8 = { +{0 ,0 ,FONTDATAMAX ,0 }, {/* 00 */ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,/* ^@ */ /* 01 */ 0x7e ,0x81 ,0xa5 ,0x81 ,0xbd ,0x99 ,0x81 ,0x7e ,/* ^A */ /* 02 */ 0x7e ,0xff ,0xbd ,0xff ,0xc3 ,0xe7 ,0xff ,0x7e ,/* ^B */
@@ -259,14 +262,14 @@ static const unsigned char acorndata_8x8[] = { /* FD */ 0x38, 0x04, 0x18, 0x20, 0x3c, 0x00, 0x00, 0x00, /* FE */ 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, /* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +} };const struct font_desc font_acorn_8x8 = { .idx = ACORN8x8_IDX, .name ="Acorn8x8" , .width =8 , .height =8 , - .data = acorndata_8x8, + .data = acorndata_8x8.data, #ifdef CONFIG_ARCH_ACORN .pref =20 , #else
lib/fonts/font_mini_4x6.c +4 -4
@@ -43,8 +43,8 @@ __END__;#define FONTDATAMAX 1536 -static const unsigned char fontdata_mini_4x6[FONTDATAMAX ] = { - +static struct font_data fontdata_mini_4x6 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/*{*/ /* Char 0: ' ' */ 0xee ,/*= [*** ] */
@@ -2145,14 +2145,14 @@ static const unsigned char fontdata_mini_4x6[FONTDATAMAX] = { 0xee, /*= [*** ] */ 0x00, /*= [ ] */ /*}*/ -}; +} };const struct font_desc font_mini_4x6 = { .idx = MINI4x6_IDX, .name ="MINI4x6" , .width =4 , .height =6 , - .data = fontdata_mini_4x6, + .data = fontdata_mini_4x6.data, .pref =3 , };
lib/fonts/font_pearl_8x8.c +4 -5
@@ -13,8 +13,8 @@#define FONTDATAMAX 2048 -static const unsigned char fontdata_pearl8x8[FONTDATAMAX ] = { - +static struct font_data fontdata_pearl8x8 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -2574,14 +2574,13 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} };const struct font_desc font_pearl_8x8 = { .idx = PEARL8x8_IDX, .name ="PEARL8x8" , .width =8 , .height =8 , - .data = fontdata_pearl8x8, + .data = fontdata_pearl8x8.data, .pref =2 , };
lib/fonts/font_sun12x22.c +4 -5
@@ -2,8 +2,8 @@#define FONTDATAMAX 11264 -static const unsigned char fontdata_sun12x22[FONTDATAMAX ] = { - +static struct font_data fontdata_sun12x22 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,0x00 ,/* 000000000000 */ 0x00 ,0x00 ,/* 000000000000 */
@@ -6147,8 +6147,7 @@ static const unsigned char fontdata_sun12x22[FONTDATAMAX] = {0x00 ,0x00 ,/* 000000000000 */ 0x00 ,0x00 ,/* 000000000000 */ 0x00, 0x00, /* 000000000000 */ - -}; +} }; const struct font_desc font_sun_12x22 = {
@@ -6156,7 +6155,7 @@ const struct font_desc font_sun_12x22 = { .name = "SUN12x22", .width = 12, .height = 22, - .data = fontdata_sun12x22, + .data = fontdata_sun12x22.data,#ifdef __sparc__ .pref = 5,#else
lib/fonts/font_sun8x16.c +4 -3
@@ -2,7 +2,8 @@#define FONTDATAMAX 4096 -static const unsigned char fontdata_sun8x16[FONTDATAMAX ] = { +static struct font_data fontdata_sun8x16 = { +{0 ,0 ,FONTDATAMAX ,0 }, {/* */ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,/* */ 0x00 ,0x00 ,0x7e ,0x81 ,0xa5 ,0x81 ,0x81 ,0xbd ,0x99 ,0x81 ,0x81 ,0x7e ,0x00 ,0x00 ,0x00 ,0x00 ,/* */ 0x00 ,0x00 ,0x7e ,0xff ,0xdb ,0xff ,0xff ,0xc3 ,0xe7 ,0xff ,0xff ,0x7e ,0x00 ,0x00 ,0x00 ,0x00 ,
@@ -259,14 +260,14 @@ static const unsigned char fontdata_sun8x16[FONTDATAMAX] = { /* */ 0x00,0x70,0xd8,0x30,0x60,0xc8,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -}; +} };const struct font_desc font_sun_8x16 = { .idx = SUN8x16_IDX, .name ="SUN8x16" , .width =8 , .height =16 , - .data = fontdata_sun8x16, + .data = fontdata_sun8x16.data, #ifdef __sparc__ .pref =10 , #else
net/netfilter/nf_conntrack_netlink.c +2 -0
@@ -1022,6 +1022,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/rxrpc/ar-key.c +12 -4
@@ -897,7 +897,7 @@ int rxrpc_request_key(struct rxrpc_sock *rx, char __user *optval, int optlen)_enter ("" ); -if (optlen <=0 || optlen >PAGE_SIZE -1 ) +if (optlen <=0 || optlen >PAGE_SIZE -1 || rx->securities)return -EINVAL ; description =kmalloc (optlen +1 ,GFP_KERNEL );
@@ -1114,7 +1114,8 @@ static long rxrpc_read(const struct key *key,break ;default :/* we have a ticket we can't encode */ -BUG (); +pr_err ("Unsupported key token type (%u)\n" , + token->security_index);continue ; }
@@ -1149,6 +1150,14 @@ static long rxrpc_read(const struct key *key, goto fault; \ xdr += (_l +3 ) >>2 ; \ } while(0) +#define ENCODE_BYTES (l, s) \ + do { \ + u32 _l = (l); \ + memcpy(xdr, (s), _l); \ + if (_l & 3) \ + memcpy((u8 *)xdr + _l, &zero, 4 - (_l & 3)); \ + xdr += (_l + 3) >> 2; \ + } while(0)#define ENCODE64 (x) \ do { \ __be64 y = cpu_to_be64(x); \
@@ -1177,7 +1186,7 @@ static long rxrpc_read(const struct key *key,case RXRPC_SECURITY_RXKAD :ENCODE (token->kad->vice_id);ENCODE (token->kad->kvno); -ENCODE_DATA (8 , token->kad->session_key); +ENCODE_BYTES (8 , token->kad->session_key);ENCODE (token->kad->start);ENCODE (token->kad->expiry);ENCODE (token->kad->primary_flag);
@@ -1227,7 +1236,6 @@ static long rxrpc_read(const struct key *key,break ;default : -BUG ();break ; }
net/sctp/auth.c +1 -0
@@ -496,6 +496,7 @@ int sctp_auth_init_hmacs(struct sctp_endpoint *ep, gfp_t gfp) out_err:/* Clean up any successful allocations */ sctp_auth_destroy_hmacs (ep->auth_hmacs); + ep->auth_hmacs =NULL ;return -ENOMEM ; }
net/wireless/nl80211.c +3 -0
@@ -3101,6 +3101,9 @@ static int nl80211_del_key(struct sk_buff *skb, struct genl_info *info)if (err)return err; +if (key.idx <0 ) +return -EINVAL ; +if (info->attrs[NL80211_ATTR_MAC ]) mac_addr =nla_data (info->attrs[NL80211_ATTR_MAC ]);
net/xfrm/xfrm_state.c +8 -5
@@ -742,7 +742,8 @@ static void xfrm_state_look_at(struct xfrm_policy *pol, struct xfrm_state *x,*/ if (x->km.state ==XFRM_STATE_VALID ) {if ((x->sel.family && - !xfrm_selector_match (&x->sel, fl, x->sel.family)) || + (x->sel.family != family || + !xfrm_selector_match (&x->sel, fl, family))) || !security_xfrm_state_pol_flow_match (x, pol, fl))return ;
@@ -755,7 +756,9 @@ static void xfrm_state_look_at(struct xfrm_policy *pol, struct xfrm_state *x, *acq_in_progress =1 ; }else if (x->km.state ==XFRM_STATE_ERROR || x->km.state ==XFRM_STATE_EXPIRED ) { -if (xfrm_selector_match (&x->sel, fl, x->sel.family) && +if ((!x->sel.family || + (x->sel.family == family && +xfrm_selector_match (&x->sel, fl, family))) &&security_xfrm_state_pol_flow_match (x, pol, fl)) *error = -ESRCH ; }
@@ -791,7 +794,7 @@ xfrm_state_find(const xfrm_address_t *daddr, const xfrm_address_t *saddr, tmpl->mode == x->props.mode && tmpl->id.proto == x->id.proto && (tmpl->id.spi == x->id.spi || !tmpl->id.spi)) -xfrm_state_look_at (pol, x, fl, encap_family, +xfrm_state_look_at (pol, x, fl, family, &best, &acquire_in_progress, &error); }if (best || acquire_in_progress)
@@ -807,7 +810,7 @@ xfrm_state_find(const xfrm_address_t *daddr, const xfrm_address_t *saddr, tmpl->mode == x->props.mode && tmpl->id.proto == x->id.proto && (tmpl->id.spi == x->id.spi || !tmpl->id.spi)) -xfrm_state_look_at (pol, x, fl, encap_family, +xfrm_state_look_at (pol, x, fl, family, &best, &acquire_in_progress, &error); }
@@ -1207,7 +1210,7 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig) x->tfcpad = orig->tfcpad; x->replay_maxdiff = orig->replay_maxdiff; x->replay_maxage = orig->replay_maxage; - x->curlft.add_time = orig->curlft.add_time; +memcpy (&x->curlft, &orig->curlft,sizeof (x->curlft)); x->km.state = orig->km.state; x->km.seq = orig->km.seq; x->replay = orig->replay;
tools/perf/builtin-top.c +3 -1
@@ -626,7 +626,9 @@ repeat: delay_msecs = top->delay_secs *1000 ;set_term_quiet_input (&save);/* trash return*/ -getc (stdin); +clearerr (stdin); +if (poll (&stdin_poll,1 ,0 ) >0 ) +getc (stdin);while (!done) {perf_top__print_sym_table (top);