{"push_id":606518994,"size":99,"distinct_size":99,"ref":"refs/heads/3.14","head":"cf5f400d37353306461d12c5cddb628a27e14fa7","before":"5acd82fc04b106923e64e05b0399ca6ecde0aa6f","commits":[{"sha":"dfef467f6ee2dee5080a4daaa744a7744b14b2e6","author":{"email":"4452d71687b6bc2c9389c3349fdc17fbd73b833b@queasysnail.net","name":"Sabrina Dubroca"},"message":"pktgen: fix UDP checksum computation\n\n[ Upstream commit 7744b5f3693cc06695cb9d6667671c790282730f ]\n\nThis patch fixes two issues in UDP checksum computation in pktgen.\n\nFirst, the pseudo-header uses the source and destination IP\naddresses. Currently, the ports are used for IPv4.\n\nSecond, the UDP checksum covers both header and data.  So we need to\ngenerate the data earlier (move pktgen_finalize_skb up), and compute\nthe checksum for UDP header + data.\n\nFixes: c26bf4a51308c (\"pktgen: Add UDPCSUM flag to support UDP checksums\")\nSigned-off-by: Sabrina Dubroca <sd@queasysnail.net>\nAcked-by: Thomas Graf <tgraf@suug.ch>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/dfef467f6ee2dee5080a4daaa744a7744b14b2e6"},{"sha":"07e756eaedd913394a59d2a289f9808437e6327c","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@iogearbox.net","name":"Daniel Borkmann"},"message":"rtnetlink: ifla_vf_policy: fix misuses of NLA_BINARY\n\n[ Upstream commit 364d5716a7adb91b731a35765d369602d68d2881 ]\n\nifla_vf_policy[] is wrong in advertising its individual member types as\nNLA_BINARY since .type = NLA_BINARY in combination with .len declares the\nlen member as *max* attribute length [0, len].\n\nThe issue is that when do_setvfinfo() is being called to set up a VF\nthrough ndo handler, we could set corrupted data if the attribute length\nis less than the size of the related structure itself.\n\nThe intent is exactly the opposite, namely to make sure to pass at least\ndata of minimum size of len.\n\nFixes: ebc08a6f47ee (\"rtnetlink: Add VF config code to rtnetlink\")\nCc: Mitch Williams <mitch.a.williams@intel.com>\nCc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>\nSigned-off-by: Daniel Borkmann <daniel@iogearbox.net>\nAcked-by: Thomas Graf <tgraf@suug.ch>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/07e756eaedd913394a59d2a289f9808437e6327c"},{"sha":"8f9239642af2f19f57f0eda626e9b6138141a2e1","author":{"email":"2c0d8efbe28c4f7a45c3ab30c984ed2c126716bd@fb.com","name":"Martin KaFai Lau"},"message":"ipv6: fix ipv6_cow_metrics for non DST_HOST case\n\n[ Upstream commit 3b4711757d7903ab6fa88a9e7ab8901b8227da60 ]\n\nipv6_cow_metrics() currently assumes only DST_HOST routes require\ndynamic metrics allocation from inetpeer.  The assumption breaks\nwhen ndisc discovered router with RTAX_MTU and RTAX_HOPLIMIT metric.\nRefer to ndisc_router_discovery() in ndisc.c and note that dst_metric_set()\nis called after the route is created.\n\nThis patch creates the metrics array (by calling dst_cow_metrics_generic) in\nipv6_cow_metrics().\n\nTest:\nradvd.conf:\ninterface qemubr0\n{\n\tAdvLinkMTU 1300;\n\tAdvCurHopLimit 30;\n\n\tprefix fd00:face:face:face::/64\n\t{\n\t\tAdvOnLink on;\n\t\tAdvAutonomous on;\n\t\tAdvRouterAddr off;\n\t};\n};\n\nBefore:\n[root@qemu1 ~]# ip -6 r show | egrep -v unreachable\nfd00:face:face:face::/64 dev eth0  proto kernel  metric 256  expires 27sec\nfe80::/64 dev eth0  proto kernel  metric 256\ndefault via fe80::74df:d0ff:fe23:8ef2 dev eth0  proto ra  metric 1024  expires 27sec\n\nAfter:\n[root@qemu1 ~]# ip -6 r show | egrep -v unreachable\nfd00:face:face:face::/64 dev eth0  proto kernel  metric 256  expires 27sec mtu 1300\nfe80::/64 dev eth0  proto kernel  metric 256  mtu 1300\ndefault via fe80::74df:d0ff:fe23:8ef2 dev eth0  proto ra  metric 1024  expires 27sec mtu 1300 hoplimit 30\n\nFixes: 8e2ec639173f325 (ipv6: don't use inetpeer to store metrics for routes.)\nSigned-off-by: Martin KaFai Lau <kafai@fb.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/8f9239642af2f19f57f0eda626e9b6138141a2e1"},{"sha":"b830ba60e4ccd5d53c4746a9c3c7283511628b5f","author":{"email":"0f114804888b88d50037b04b42e57b858d851b87@gmail.com","name":"WANG Cong"},"message":"rtnetlink: call ->dellink on failure when ->newlink exists\n\n[ Upstream commit 7afb8886a05be68e376655539a064ec672de8a8e ]\n\nIgnacy reported that when eth0 is down and add a vlan device\non top of it like:\n\n  ip link add link eth0 name eth0.1 up type vlan id 1\n\nWe will get a refcount leak:\n\n  unregister_netdevice: waiting for eth0.1 to become free. Usage count = 2\n\nThe problem is when rtnl_configure_link() fails in rtnl_newlink(),\nwe simply call unregister_device(), but for stacked device like vlan,\nwe almost do nothing when we unregister the upper device, more work\nis done when we unregister the lower device, so call its ->dellink().\n\nReported-by: Ignacy Gawedzki <ignacy.gawedzki@green-communications.fr>\nSigned-off-by: Cong Wang <xiyou.wangcong@gmail.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/b830ba60e4ccd5d53c4746a9c3c7283511628b5f"},{"sha":"f1796b116e46cd8c341e9b08d8aa1f3d5cc6f818","author":{"email":"51abb9c683c0b6664a29ebe2b7e8d8cdfbc4c98e@green-communications.fr","name":"Ignacy Gawędzki"},"message":"gen_stats.c: Duplicate xstats buffer for later use\n\n[ Upstream commit 1c4cff0cf55011792125b6041bc4e9713e46240f ]\n\nThe gnet_stats_copy_app() function gets called, more often than not, with its\nsecond argument a pointer to an automatic variable in the caller's stack.\nTherefore, to avoid copying garbage afterwards when calling\ngnet_stats_finish_copy(), this data is better copied to a dynamically allocated\nmemory that gets freed after use.\n\n[xiyou.wangcong@gmail.com: remove a useless kfree()]\n\nSigned-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>\nSigned-off-by: Cong Wang <xiyou.wangcong@gmail.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/f1796b116e46cd8c341e9b08d8aa1f3d5cc6f818"},{"sha":"0b04f65d11c1889908fd7594cbd015bcd2c640dd","author":{"email":"dbf41cb3fb2439ca6a6ecbeb8a3e20110560cd31@gmail.com","name":"Alexander Drozdov"},"message":"ipv4: ip_check_defrag should correctly check return value of skb_copy_bits\n\n[ Upstream commit fba04a9e0c869498889b6445fd06cbe7da9bb834 ]\n\nskb_copy_bits() returns zero on success and negative value on error,\nso it is needed to invert the condition in ip_check_defrag().\n\nFixes: 1bf3751ec90c (\"ipv4: ip_check_defrag must not modify skb before unsharing\")\nSigned-off-by: Alexander Drozdov <al.drozdov@gmail.com>\nAcked-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/0b04f65d11c1889908fd7594cbd015bcd2c640dd"},{"sha":"7ac8d452304d59f204b529cceb6c643982fb7aa4","author":{"email":"dbf41cb3fb2439ca6a6ecbeb8a3e20110560cd31@gmail.com","name":"Alexander Drozdov"},"message":"ipv4: ip_check_defrag should not assume that skb_network_offset is zero\n\n[ Upstream commit 3e32e733d1bbb3f227259dc782ef01d5706bdae0 ]\n\nip_check_defrag() may be used by af_packet to defragment outgoing packets.\nskb_network_offset() of af_packet's outgoing packets is not zero.\n\nSigned-off-by: Alexander Drozdov <al.drozdov@gmail.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/7ac8d452304d59f204b529cceb6c643982fb7aa4"},{"sha":"058969ab33db1707538ad6472964423b8115d642","author":{"email":"ba324ca7b1c77fc20bb970d5aff6eea9377918a5@roeck-us.net","name":"Guenter Roeck"},"message":"net: phy: Fix verification of EEE support in phy_init_eee\n\n[ Upstream commit 54da5a8be3c1e924c35480eb44c6e9b275f6444e ]\n\nphy_init_eee uses phy_find_setting(phydev->speed, phydev->duplex)\nto find a valid entry in the settings array for the given speed\nand duplex value. For full duplex 1000baseT, this will return\nthe first matching entry, which is the entry for 1000baseKX_Full.\n\nIf the phy eee does not support 1000baseKX_Full, this entry will not\nmatch, causing phy_init_eee to fail for no good reason.\n\nFixes: 9a9c56cb34e6 (\"net: phy: fix a bug when verify the EEE support\")\nFixes: 3e7077067e80c (\"phy: Expand phy speed/duplex settings array\")\nCc: Giuseppe Cavallaro <peppe.cavallaro@st.com>\nSigned-off-by: Guenter Roeck <linux@roeck-us.net>\nAcked-by: Florian Fainelli <f.fainelli@gmail.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/058969ab33db1707538ad6472964423b8115d642"},{"sha":"96c65236248aefab6d78b279ca2dc7fd8fa952ef","author":{"email":"51abb9c683c0b6664a29ebe2b7e8d8cdfbc4c98e@green-communications.fr","name":"Ignacy Gawędzki"},"message":"ematch: Fix auto-loading of ematch modules.\n\n[ Upstream commit 34eea79e2664b314cab6a30fc582fdfa7a1bb1df ]\n\nIn tcf_em_validate(), after calling request_module() to load the\nkind-specific module, set em->ops to NULL before returning -EAGAIN, so\nthat module_put() is not called again by tcf_em_tree_destroy().\n\nSigned-off-by: Ignacy Gawędzki <ignacy.gawedzki@green-communications.fr>\nAcked-by: Cong Wang <cwang@twopensource.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/96c65236248aefab6d78b279ca2dc7fd8fa952ef"},{"sha":"f0bde5010b45ca740b3db4e99fee46f10df23f4b","author":{"email":"1428de2d70d1c53cd978750576cb0eaf318833d1@mthode.org","name":"Matthew Thode"},"message":"net: reject creation of netdev names with colons\n\n[ Upstream commit a4176a9391868bfa87705bcd2e3b49e9b9dd2996 ]\n\ncolons are used as a separator in netdev device lookup in dev_ioctl.c\n\nSpecific functions are SIOCGIFTXQLEN SIOCETHTOOL SIOCSIFNAME\n\nSigned-off-by: Matthew Thode <mthode@mthode.org>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/f0bde5010b45ca740b3db4e99fee46f10df23f4b"},{"sha":"fdb35e5a1be06aa0d37dbdc7a987a792011c8bf9","author":{"email":"1b548d10035ae428195c41f5d55eedb1437ccd8a@resnulli.us","name":"Jiri Pirko"},"message":"team: fix possible null pointer dereference in team_handle_frame\n\n[ Upstream commit 57e595631904c827cfa1a0f7bbd7cc9a49da5745 ]\n\nCurrently following race is possible in team:\n\nCPU0                                        CPU1\n                                            team_port_del\n                                              team_upper_dev_unlink\n                                                priv_flags &= ~IFF_TEAM_PORT\nteam_handle_frame\n  team_port_get_rcu\n    team_port_exists\n      priv_flags & IFF_TEAM_PORT == 0\n    return NULL (instead of port got\n                 from rx_handler_data)\n                                              netdev_rx_handler_unregister\n\nThe thing is that the flag is removed before rx_handler is unregistered.\nIf team_handle_frame is called in between, team_port_exists returns 0\nand team_port_get_rcu will return NULL.\nSo do not check the flag here. It is guaranteed by netdev_rx_handler_unregister\nthat team_handle_frame will always see valid rx_handler_data pointer.\n\nSigned-off-by: Jiri Pirko <jiri@resnulli.us>\nFixes: 3d249d4ca7d0 (\"net: introduce ethernet teaming device\")\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/fdb35e5a1be06aa0d37dbdc7a987a792011c8bf9"},{"sha":"a382f4b25c5d2a3028e73957bb2ff3ad17686b2f","author":{"email":"15ce75b290ebaf27c3f9fd73ab848685ed3d8261@arm.com","name":"Catalin Marinas"},"message":"net: compat: Ignore MSG_CMSG_COMPAT in compat_sys_{send, recv}msg\n\n[ Upstream commit d720d8cec563ce4e4fa44a613d4f2dcb1caf2998 ]\n\nWith commit a7526eb5d06b (net: Unbreak compat_sys_{send,recv}msg), the\nMSG_CMSG_COMPAT flag is blocked at the compat syscall entry points,\nchanging the kernel compat behaviour from the one before the commit it\nwas trying to fix (1be374a0518a, net: Block MSG_CMSG_COMPAT in\nsend(m)msg and recv(m)msg).\n\nOn 32-bit kernels (!CONFIG_COMPAT), MSG_CMSG_COMPAT is 0 and the native\n32-bit sys_sendmsg() allows flag 0x80000000 to be set (it is ignored by\nthe kernel). However, on a 64-bit kernel, the compat ABI is different\nwith commit a7526eb5d06b.\n\nThis patch changes the compat_sys_{send,recv}msg behaviour to the one\nprior to commit 1be374a0518a.\n\nThe problem was found running 32-bit LTP (sendmsg01) binary on an arm64\nkernel. Arguably, LTP should not pass 0xffffffff as flags to sendmsg()\nbut the general rule is not to break user ABI (even when the user\nbehaviour is not entirely sane).\n\nFixes: a7526eb5d06b (net: Unbreak compat_sys_{send,recv}msg)\nCc: Andy Lutomirski <luto@amacapital.net>\nCc: David S. Miller <davem@davemloft.net>\nSigned-off-by: Catalin Marinas <catalin.marinas@arm.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/a382f4b25c5d2a3028e73957bb2ff3ad17686b2f"},{"sha":"00ecb618250e0f9369ced3c980becd79f9b6c1f9","author":{"email":"312c7d941f03386814be517ffdb3e0eb6624e275@google.com","name":"Eric Dumazet"},"message":"macvtap: make sure neighbour code can push ethernet header\n\n[ Upstream commit 2f1d8b9e8afa5a833d96afcd23abcb8cdf8d83ab ]\n\nBrian reported crashes using IPv6 traffic with macvtap/veth combo.\n\nI tracked the crashes in neigh_hh_output()\n\n-> memcpy(skb->data - HH_DATA_MOD, hh->hh_data, HH_DATA_MOD);\n\nNeighbour code assumes headroom to push Ethernet header is\nat least 16 bytes.\n\nIt appears macvtap has only 14 bytes available on arches\nwhere NET_IP_ALIGN is 0 (like x86)\n\nEffect is a corruption of 2 bytes right before skb->head,\nand possible crashes if accessing non existing memory.\n\nThis fix should also increase IPv4 performance, as paranoid code\nin ip_finish_output2() wont have to call skb_realloc_headroom()\n\nReported-by: Brian Rak <brak@vultr.com>\nTested-by: Brian Rak <brak@vultr.com>\nSigned-off-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/00ecb618250e0f9369ced3c980becd79f9b6c1f9"},{"sha":"37aa4dd0a138bc88e42ca02a909367b12042fddf","author":{"email":"873d2944fc7a954ed322314738197137e10de387@ni.com","name":"Ben Shelton"},"message":"usb: plusb: Add support for National Instruments host-to-host cable\n\n[ Upstream commit 42c972a1f390e3bc51ca1e434b7e28764992067f ]\n\nThe National Instruments USB Host-to-Host Cable is based on the Prolific\nPL-25A1 chipset.  Add its VID/PID so the plusb driver will recognize it.\n\nSigned-off-by: Ben Shelton <ben.shelton@ni.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/37aa4dd0a138bc88e42ca02a909367b12042fddf"},{"sha":"8a0cafc9a8131cc545dc9924aed38f7176ee4ad7","author":{"email":"48ad0bdf47651f7a71905c605c8960f443623cd5@suse.cz","name":"Michal Kubeček"},"message":"udp: only allow UFO for packets from SOCK_DGRAM sockets\n\n[ Upstream commit acf8dd0a9d0b9e4cdb597c2f74802f79c699e802 ]\n\nIf an over-MTU UDP datagram is sent through a SOCK_RAW socket to a\nUFO-capable device, ip_ufo_append_data() sets skb->ip_summed to\nCHECKSUM_PARTIAL unconditionally as all GSO code assumes transport layer\nchecksum is to be computed on segmentation. However, in this case,\nskb->csum_start and skb->csum_offset are never set as raw socket\ntransmit path bypasses udp_send_skb() where they are usually set. As a\nresult, driver may access invalid memory when trying to calculate the\nchecksum and store the result (as observed in virtio_net driver).\n\nMoreover, the very idea of modifying the userspace provided UDP header\nis IMHO against raw socket semantics (I wasn't able to find a document\nclearly stating this or the opposite, though). And while allowing\nCHECKSUM_NONE in the UFO case would be more efficient, it would be a bit\ntoo intrusive change just to handle a corner case like this. Therefore\ndisallowing UFO for packets from SOCK_DGRAM seems to be the best option.\n\nSigned-off-by: Michal Kubecek <mkubecek@suse.cz>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/8a0cafc9a8131cc545dc9924aed38f7176ee4ad7"},{"sha":"f15e90f9f297c4c2c22de0f5b8530cb9fe62f263","author":{"email":"86995a091f8a1385082bd10715048b52ee386a6a@google.com","name":"Lorenzo Colitti"},"message":"net: ping: Return EAFNOSUPPORT when appropriate.\n\n[ Upstream commit 9145736d4862145684009d6a72a6e61324a9439e ]\n\n1. For an IPv4 ping socket, ping_check_bind_addr does not check\n   the family of the socket address that's passed in. Instead,\n   make it behave like inet_bind, which enforces either that the\n   address family is AF_INET, or that the family is AF_UNSPEC and\n   the address is 0.0.0.0.\n2. For an IPv6 ping socket, ping_check_bind_addr returns EINVAL\n   if the socket family is not AF_INET6. Return EAFNOSUPPORT\n   instead, for consistency with inet6_bind.\n3. Make ping_v4_sendmsg and ping_v6_sendmsg return EAFNOSUPPORT\n   instead of EINVAL if an incorrect socket address structure is\n   passed in.\n4. Make IPv6 ping sockets be IPv6-only. The code does not support\n   IPv4, and it cannot easily be made to support IPv4 because\n   the protocol numbers for ICMP and ICMPv6 are different. This\n   makes connect(::ffff:192.0.2.1) fail with EAFNOSUPPORT instead\n   of making the socket unusable.\n\nAmong other things, this fixes an oops that can be triggered by:\n\n    int s = socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP);\n    struct sockaddr_in6 sin6 = {\n        .sin6_family = AF_INET6,\n        .sin6_addr = in6addr_any,\n    };\n    bind(s, (struct sockaddr *) &sin6, sizeof(sin6));\n\nChange-Id: If06ca86d9f1e4593c0d6df174caca3487c57a241\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/f15e90f9f297c4c2c22de0f5b8530cb9fe62f263"},{"sha":"67b58fb7d3e7b1e393609e14d95d02a14d7328db","author":{"email":"1b548d10035ae428195c41f5d55eedb1437ccd8a@resnulli.us","name":"Jiri Pirko"},"message":"team: don't traverse port list using rcu in team_set_mac_address\n\n[ Upstream commit 9215f437b85da339a7dfe3db6e288637406f88b2 ]\n\nCurrently the list is traversed using rcu variant. That is not correct\nsince dev_set_mac_address can be called which eventually calls\nrtmsg_ifinfo_build_skb and there, skb allocation can sleep. So fix this\nby remove the rcu usage here.\n\nFixes: 3d249d4ca7 \"net: introduce ethernet teaming device\"\nSigned-off-by: Jiri Pirko <jiri@resnulli.us>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/67b58fb7d3e7b1e393609e14d95d02a14d7328db"},{"sha":"d0fc2ca5a30e489a7b723addd1bfc072f11bfe20","author":{"email":"8e7a128cd0264d3269a891fb3e87507c2985f8af@ah.jp.nec.com","name":"Naoya Horiguchi"},"message":"mm/hugetlb: add migration/hwpoisoned entry check in hugetlb_change_protection\n\ncommit a8bda28d87c38c6aa93de28ba5d30cc18e865a11 upstream.\n\nThere is a race condition between hugepage migration and\nchange_protection(), where hugetlb_change_protection() doesn't care about\nmigration entries and wrongly overwrites them.  That causes unexpected\nresults like kernel crash.  HWPoison entries also can cause the same\nproblem.\n\nThis patch adds is_hugetlb_entry_(migration|hwpoisoned) check in this\nfunction to do proper actions.\n\nFixes: 290408d4a2 (\"hugetlb: hugepage migration core\")\nSigned-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nCc: Hugh Dickins <hughd@google.com>\nCc: James Hogan <james.hogan@imgtec.com>\nCc: David Rientjes <rientjes@google.com>\nCc: Mel Gorman <mel@csn.ul.ie>\nCc: Johannes Weiner <hannes@cmpxchg.org>\nCc: Michal Hocko <mhocko@suse.cz>\nCc: Rik van Riel <riel@redhat.com>\nCc: Andrea Arcangeli <aarcange@redhat.com>\nCc: Luiz Capitulino <lcapitulino@redhat.com>\nCc: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>\nCc: Lee Schermerhorn <lee.schermerhorn@hp.com>\nCc: Steve Capper <steve.capper@linaro.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/d0fc2ca5a30e489a7b723addd1bfc072f11bfe20"},{"sha":"99537c232b32546270cba24824e56a7cfe19b6d8","author":{"email":"8e7a128cd0264d3269a891fb3e87507c2985f8af@ah.jp.nec.com","name":"Naoya Horiguchi"},"message":"mm/hugetlb: add migration entry check in __unmap_hugepage_range\n\ncommit 9fbc1f635fd0bd28cb32550211bf095753ac637a upstream.\n\nIf __unmap_hugepage_range() tries to unmap the address range over which\nhugepage migration is on the way, we get the wrong page because pte_page()\ndoesn't work for migration entries.  This patch simply clears the pte for\nmigration entries as we do for hwpoison entries.\n\nFixes: 290408d4a2 (\"hugetlb: hugepage migration core\")\nSigned-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nCc: Hugh Dickins <hughd@google.com>\nCc: James Hogan <james.hogan@imgtec.com>\nCc: David Rientjes <rientjes@google.com>\nCc: Mel Gorman <mel@csn.ul.ie>\nCc: Johannes Weiner <hannes@cmpxchg.org>\nCc: Michal Hocko <mhocko@suse.cz>\nCc: Rik van Riel <riel@redhat.com>\nCc: Andrea Arcangeli <aarcange@redhat.com>\nCc: Luiz Capitulino <lcapitulino@redhat.com>\nCc: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>\nCc: Lee Schermerhorn <lee.schermerhorn@hp.com>\nCc: Steve Capper <steve.capper@linaro.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/99537c232b32546270cba24824e56a7cfe19b6d8"},{"sha":"a4f3f96f850db69890f47984c60606a2362bee89","author":{"email":"db766431e3f0373ca1ec8fa855cfd5f84b2f2eb6@suse.cz","name":"Vlastimil Babka"},"message":"mm: when stealing freepages, also take pages created by splitting buddy page\n\ncommit 99592d598eca62bdbbf62b59941c189176dfc614 upstream.\n\nWhen studying page stealing, I noticed some weird looking decisions in\ntry_to_steal_freepages().  The first I assume is a bug (Patch 1), the\nfollowing two patches were driven by evaluation.\n\nTesting was done with stress-highalloc of mmtests, using the\nmm_page_alloc_extfrag tracepoint and postprocessing to get counts of how\noften page stealing occurs for individual migratetypes, and what\nmigratetypes are used for fallbacks.  Arguably, the worst case of page\nstealing is when UNMOVABLE allocation steals from MOVABLE pageblock.\nRECLAIMABLE allocation stealing from MOVABLE allocation is also not ideal,\nso the goal is to minimize these two cases.\n\nThe evaluation of v2 wasn't always clear win and Joonsoo questioned the\nresults.  Here I used different baseline which includes RFC compaction\nimprovements from [1].  I found that the compaction improvements reduce\nvariability of stress-highalloc, so there's less noise in the data.\n\nFirst, let's look at stress-highalloc configured to do sync compaction,\nand how these patches reduce page stealing events during the test.  First\ncolumn is after fresh reboot, other two are reiterations of test without\nreboot.  That was all accumulater over 5 re-iterations (so the benchmark\nwas run 5x3 times with 5 fresh restarts).\n\nBaseline:\n\n                                                   3.19-rc4        3.19-rc4        3.19-rc4\n                                                  5-nothp-1       5-nothp-2       5-nothp-3\nPage alloc extfrag event                               10264225     8702233    10244125\nExtfrag fragmenting                                    10263271     8701552    10243473\nExtfrag fragmenting for unmovable                         13595       17616       15960\nExtfrag fragmenting unmovable placed with movable          7989       12193        8447\nExtfrag fragmenting for reclaimable                         658        1840        1817\nExtfrag fragmenting reclaimable placed with movable         558        1677        1679\nExtfrag fragmenting for movable                        10249018     8682096    10225696\n\nWith Patch 1:\n                                                   3.19-rc4        3.19-rc4        3.19-rc4\n                                                  6-nothp-1       6-nothp-2       6-nothp-3\nPage alloc extfrag event                               11834954     9877523     9774860\nExtfrag fragmenting                                    11833993     9876880     9774245\nExtfrag fragmenting for unmovable                          7342       16129       11712\nExtfrag fragmenting unmovable placed with movable          4191       10547        6270\nExtfrag fragmenting for reclaimable                         373        1130         923\nExtfrag fragmenting reclaimable placed with movable         302         906         738\nExtfrag fragmenting for movable                        11826278     9859621     9761610\n\nWith Patch 2:\n                                                   3.19-rc4        3.19-rc4        3.19-rc4\n                                                  7-nothp-1       7-nothp-2       7-nothp-3\nPage alloc extfrag event                                4725990     3668793     3807436\nExtfrag fragmenting                                     4725104     3668252     3806898\nExtfrag fragmenting for unmovable                          6678        7974        7281\nExtfrag fragmenting unmovable placed with movable          2051        3829        4017\nExtfrag fragmenting for reclaimable                         429        1208        1278\nExtfrag fragmenting reclaimable placed with movable         369         976        1034\nExtfrag fragmenting for movable                         4717997     3659070     3798339\n\nWith Patch 3:\n                                                   3.19-rc4        3.19-rc4        3.19-rc4\n                                                  8-nothp-1       8-nothp-2       8-nothp-3\nPage alloc extfrag event                                5016183     4700142     3850633\nExtfrag fragmenting                                     5015325     4699613     3850072\nExtfrag fragmenting for unmovable                          1312        3154        3088\nExtfrag fragmenting unmovable placed with movable          1115        2777        2714\nExtfrag fragmenting for reclaimable                         437        1193        1097\nExtfrag fragmenting reclaimable placed with movable         330         969         879\nExtfrag fragmenting for movable                         5013576     4695266     3845887\n\nIn v2 we've seen apparent regression with Patch 1 for unmovable events,\nthis is now gone, suggesting it was indeed noise.  Here, each patch\nimproves the situation for unmovable events.  Reclaimable is improved by\npatch 1 and then either the same modulo noise, or perhaps sligtly worse -\na small price for unmovable improvements, IMHO.  The number of movable\nallocations falling back to other migratetypes is most noisy, but it's\nreduced to half at Patch 2 nevertheless.  These are least critical as\ncompaction can move them around.\n\nIf we look at success rates, the patches don't affect them, that didn't change.\n\nBaseline:\n                             3.19-rc4              3.19-rc4              3.19-rc4\n                            5-nothp-1             5-nothp-2             5-nothp-3\nSuccess 1 Min         49.00 (  0.00%)       42.00 ( 14.29%)       41.00 ( 16.33%)\nSuccess 1 Mean        51.00 (  0.00%)       45.00 ( 11.76%)       42.60 ( 16.47%)\nSuccess 1 Max         55.00 (  0.00%)       51.00 (  7.27%)       46.00 ( 16.36%)\nSuccess 2 Min         53.00 (  0.00%)       47.00 ( 11.32%)       44.00 ( 16.98%)\nSuccess 2 Mean        59.60 (  0.00%)       50.80 ( 14.77%)       48.20 ( 19.13%)\nSuccess 2 Max         64.00 (  0.00%)       56.00 ( 12.50%)       52.00 ( 18.75%)\nSuccess 3 Min         84.00 (  0.00%)       82.00 (  2.38%)       78.00 (  7.14%)\nSuccess 3 Mean        85.60 (  0.00%)       82.80 (  3.27%)       79.40 (  7.24%)\nSuccess 3 Max         86.00 (  0.00%)       83.00 (  3.49%)       80.00 (  6.98%)\n\nPatch 1:\n                             3.19-rc4              3.19-rc4              3.19-rc4\n                            6-nothp-1             6-nothp-2             6-nothp-3\nSuccess 1 Min         49.00 (  0.00%)       44.00 ( 10.20%)       44.00 ( 10.20%)\nSuccess 1 Mean        51.80 (  0.00%)       46.00 ( 11.20%)       45.80 ( 11.58%)\nSuccess 1 Max         54.00 (  0.00%)       49.00 (  9.26%)       49.00 (  9.26%)\nSuccess 2 Min         58.00 (  0.00%)       49.00 ( 15.52%)       48.00 ( 17.24%)\nSuccess 2 Mean        60.40 (  0.00%)       51.80 ( 14.24%)       50.80 ( 15.89%)\nSuccess 2 Max         63.00 (  0.00%)       54.00 ( 14.29%)       55.00 ( 12.70%)\nSuccess 3 Min         84.00 (  0.00%)       81.00 (  3.57%)       79.00 (  5.95%)\nSuccess 3 Mean        85.00 (  0.00%)       81.60 (  4.00%)       79.80 (  6.12%)\nSuccess 3 Max         86.00 (  0.00%)       82.00 (  4.65%)       82.00 (  4.65%)\n\nPatch 2:\n\n                             3.19-rc4              3.19-rc4              3.19-rc4\n                            7-nothp-1             7-nothp-2             7-nothp-3\nSuccess 1 Min         50.00 (  0.00%)       44.00 ( 12.00%)       39.00 ( 22.00%)\nSuccess 1 Mean        52.80 (  0.00%)       45.60 ( 13.64%)       42.40 ( 19.70%)\nSuccess 1 Max         55.00 (  0.00%)       46.00 ( 16.36%)       47.00 ( 14.55%)\nSuccess 2 Min         52.00 (  0.00%)       48.00 (  7.69%)       45.00 ( 13.46%)\nSuccess 2 Mean        53.40 (  0.00%)       49.80 (  6.74%)       48.80 (  8.61%)\nSuccess 2 Max         57.00 (  0.00%)       52.00 (  8.77%)       52.00 (  8.77%)\nSuccess 3 Min         84.00 (  0.00%)       81.00 (  3.57%)       79.00 (  5.95%)\nSuccess 3 Mean        85.00 (  0.00%)       82.40 (  3.06%)       79.60 (  6.35%)\nSuccess 3 Max         86.00 (  0.00%)       83.00 (  3.49%)       80.00 (  6.98%)\n\nPatch 3:\n                             3.19-rc4              3.19-rc4              3.19-rc4\n                            8-nothp-1             8-nothp-2             8-nothp-3\nSuccess 1 Min         46.00 (  0.00%)       44.00 (  4.35%)       42.00 (  8.70%)\nSuccess 1 Mean        50.20 (  0.00%)       45.60 (  9.16%)       44.00 ( 12.35%)\nSuccess 1 Max         52.00 (  0.00%)       47.00 (  9.62%)       47.00 (  9.62%)\nSuccess 2 Min         53.00 (  0.00%)       49.00 (  7.55%)       48.00 (  9.43%)\nSuccess 2 Mean        55.80 (  0.00%)       50.60 (  9.32%)       49.00 ( 12.19%)\nSuccess 2 Max         59.00 (  0.00%)       52.00 ( 11.86%)       51.00 ( 13.56%)\nSuccess 3 Min         84.00 (  0.00%)       80.00 (  4.76%)       79.00 (  5.95%)\nSuccess 3 Mean        85.40 (  0.00%)       81.60 (  4.45%)       80.40 (  5.85%)\nSuccess 3 Max         87.00 (  0.00%)       83.00 (  4.60%)       82.00 (  5.75%)\n\nWhile there's no improvement here, I consider reduced fragmentation events\nto be worth on its own.  Patch 2 also seems to reduce scanning for free\npages, and migrations in compaction, suggesting it has somewhat less work\nto do:\n\nPatch 1:\n\nCompaction stalls                 4153        3959        3978\nCompaction success                1523        1441        1446\nCompaction failures               2630        2517        2531\nPage migrate success           4600827     4943120     5104348\nPage migrate failure             19763       16656       17806\nCompaction pages isolated      9597640    10305617    10653541\nCompaction migrate scanned    77828948    86533283    87137064\nCompaction free scanned      517758295   521312840   521462251\nCompaction cost                   5503        5932        6110\n\nPatch 2:\n\nCompaction stalls                 3800        3450        3518\nCompaction success                1421        1316        1317\nCompaction failures               2379        2134        2201\nPage migrate success           4160421     4502708     4752148\nPage migrate failure             19705       14340       14911\nCompaction pages isolated      8731983     9382374     9910043\nCompaction migrate scanned    98362797    96349194    98609686\nCompaction free scanned      496512560   469502017   480442545\nCompaction cost                   5173        5526        5811\n\nAs with v2, /proc/pagetypeinfo appears unaffected with respect to numbers\nof unmovable and reclaimable pageblocks.\n\nConfiguring the benchmark to allocate like THP page fault (i.e.  no sync\ncompaction) gives much noisier results for iterations 2 and 3 after\nreboot.  This is not so surprising given how [1] offers lower improvements\nin this scenario due to less restarts after deferred compaction which\nwould change compaction pivot.\n\nBaseline:\n                                                   3.19-rc4        3.19-rc4        3.19-rc4\n                                                    5-thp-1         5-thp-2         5-thp-3\nPage alloc extfrag event                                8148965     6227815     6646741\nExtfrag fragmenting                                     8147872     6227130     6646117\nExtfrag fragmenting for unmovable                         10324       12942       15975\nExtfrag fragmenting unmovable placed with movable          5972        8495       10907\nExtfrag fragmenting for reclaimable                         601        1707        2210\nExtfrag fragmenting reclaimable placed with movable         520        1570        2000\nExtfrag fragmenting for movable                         8136947     6212481     6627932\n\nPatch 1:\n                                                   3.19-rc4        3.19-rc4        3.19-rc4\n                                                    6-thp-1         6-thp-2         6-thp-3\nPage alloc extfrag event                                8345457     7574471     7020419\nExtfrag fragmenting                                     8343546     7573777     7019718\nExtfrag fragmenting for unmovable                         10256       18535       30716\nExtfrag fragmenting unmovable placed with movable          6893       11726       22181\nExtfrag fragmenting for reclaimable                         465        1208        1023\nExtfrag fragmenting reclaimable placed with movable         353         996         843\nExtfrag fragmenting for movable                         8332825     7554034     6987979\n\nPatch 2:\n                                                   3.19-rc4        3.19-rc4        3.19-rc4\n                                                    7-thp-1         7-thp-2         7-thp-3\nPage alloc extfrag event                                3512847     3020756     2891625\nExtfrag fragmenting                                     3511940     3020185     2891059\nExtfrag fragmenting for unmovable                          9017        6892        6191\nExtfrag fragmenting unmovable placed with movable          1524        3053        2435\nExtfrag fragmenting for reclaimable                         445        1081        1160\nExtfrag fragmenting reclaimable placed with movable         375         918         986\nExtfrag fragmenting for movable                         3502478     3012212     2883708\n\nPatch 3:\n                                                   3.19-rc4        3.19-rc4        3.19-rc4\n                                                    8-thp-1         8-thp-2         8-thp-3\nPage alloc extfrag event                                3181699     3082881     2674164\nExtfrag fragmenting                                     3180812     3082303     2673611\nExtfrag fragmenting for unmovable                          1201        4031        4040\nExtfrag fragmenting unmovable placed with movable           974        3611        3645\nExtfrag fragmenting for reclaimable                         478        1165        1294\nExtfrag fragmenting reclaimable placed with movable         387         985        1030\nExtfrag fragmenting for movable                         3179133     3077107     2668277\n\nThe improvements for first iteration are clear, the rest is much noisier\nand can appear like regression for Patch 1.  Anyway, patch 2 rectifies it.\n\nAllocation success rates are again unaffected so there's no point in\nmaking this e-mail any longer.\n\n[1] http://marc.info/?l=linux-mm&m=142166196321125&w=2\n\nThis patch (of 3):\n\nWhen __rmqueue_fallback() is called to allocate a page of order X, it will\nfind a page of order Y >= X of a fallback migratetype, which is different\nfrom the desired migratetype.  With the help of try_to_steal_freepages(),\nit may change the migratetype (to the desired one) also of:\n\n1) all currently free pages in the pageblock containing the fallback page\n2) the fallback pageblock itself\n3) buddy pages created by splitting the fallback page (when Y > X)\n\nThese decisions take the order Y into account, as well as the desired\nmigratetype, with the goal of preventing multiple fallback allocations\nthat could e.g.  distribute UNMOVABLE allocations among multiple\npageblocks.\n\nOriginally, decision for 1) has implied the decision for 3).  Commit\n47118af076f6 (\"mm: mmzone: MIGRATE_CMA migration type added\") changed that\n(probably unintentionally) so that the buddy pages in case 3) are always\nchanged to the desired migratetype, except for CMA pageblocks.\n\nCommit fef903efcf0c (\"mm/page_allo.c: restructure free-page stealing code\nand fix a bug\") did some refactoring and added a comment that the case of\n3) is intended.  Commit 0cbef29a7821 (\"mm: __rmqueue_fallback() should\nrespect pageblock type\") removed the comment and tried to restore the\noriginal behavior where 1) implies 3), but due to the previous\nrefactoring, the result is instead that only 2) implies 3) - and the\nconditions for 2) are less frequently met than conditions for 1).  This\nmay increase fragmentation in situations where the code decides to steal\nall free pages from the pageblock (case 1)), but then gives back the buddy\npages produced by splitting.\n\nThis patch restores the original intended logic where 1) implies 3).\nDuring testing with stress-highalloc from mmtests, this has shown to\ndecrease the number of events where UNMOVABLE and RECLAIMABLE allocations\nsteal from MOVABLE pageblocks, which can lead to permanent fragmentation.\nIn some cases it has increased the number of events when MOVABLE\nallocations steal from UNMOVABLE or RECLAIMABLE pageblocks, but these are\nfixable by sync compaction and thus less harmful.\n\nNote that evaluation has shown that the behavior introduced by\n47118af076f6 for buddy pages in case 3) is actually even better than the\noriginal logic, so the following patch will introduce it properly once\nagain.  For stable backports of this patch it makes thus sense to only fix\nversions containing 0cbef29a7821.\n\n[iamjoonsoo.kim@lge.com: tracepoint fix]\nSigned-off-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Mel Gorman <mgorman@suse.de>\nCc: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>\nAcked-by: Minchan Kim <minchan@kernel.org>\nCc: David Rientjes <rientjes@google.com>\nCc: Rik van Riel <riel@redhat.com>\nCc: \"Aneesh Kumar K.V\" <aneesh.kumar@linux.vnet.ibm.com>\nCc: \"Kirill A. Shutemov\" <kirill.shutemov@linux.intel.com>\nCc: Johannes Weiner <hannes@cmpxchg.org>\nCc: Joonsoo Kim <iamjoonsoo.kim@lge.com>\nCc: Michal Hocko <mhocko@suse.cz>\nCc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Sabayon/kernel/commits/a4f3f96f850db69890f47984c60606a2362bee89"}]}