···1515 Google's ChromeOS EC Keyboard is a simple matrix keyboard1616 implemented on a separate EC (Embedded Controller) device. It provides1717 a message for reading key scans from the EC. These are then converted1818- into keycodes for processing by the kernel.1919-2020-allOf:2121- - $ref: "/schemas/input/matrix-keymap.yaml#"1818+ into keycodes for processing by the kernel. This device also supports1919+ switches/buttons like power and volume buttons.22202321properties:2422 compatible:2525- const: google,cros-ec-keyb2323+ oneOf:2424+ - description: ChromeOS EC with only buttons/switches2525+ const: google,cros-ec-keyb-switches2626+ - description: ChromeOS EC with keyboard and possibly buttons/switches2727+ const: google,cros-ec-keyb26282729 google,needs-ghost-filter:2830 description:···4341 where the lower 16 bits are reserved. This property is specified only4442 when the keyboard has a custom design for the top row keys.45434444+dependencies:4545+ function-row-phsymap: [ 'linux,keymap' ]4646+ google,needs-ghost-filter: [ 'linux,keymap' ]4747+4648required:4749 - compatible5050+5151+if:5252+ properties:5353+ compatible:5454+ contains:5555+ const: google,cros-ec-keyb5656+then:5757+ $ref: "/schemas/input/matrix-keymap.yaml#"5858+ required:5959+ - keypad,num-rows6060+ - keypad,num-columns6161+ - linux,keymap48624963unevaluatedProperties: false50645165examples:5266 - |5367 #include <dt-bindings/input/input.h>5454- cros-ec-keyb {6868+ keyboard-controller {5569 compatible = "google,cros-ec-keyb";5670 keypad,num-rows = <8>;5771 keypad,num-columns = <13>;···131113 /* UP LEFT */132114 0x070b0067 0x070c0069>;133115 };116116+ - |117117+ /* No matrix keyboard, just buttons/switches */118118+ keyboard-controller {119119+ compatible = "google,cros-ec-keyb-switches";120120+ };121121+...
+2
MAINTAINERS
···1338213382NETWORKING DRIVERS1338313383M: "David S. Miller" <davem@davemloft.net>1338413384M: Jakub Kicinski <kuba@kernel.org>1338513385+M: Paolo Abeni <pabeni@redhat.com>1338513386L: netdev@vger.kernel.org1338613387S: Maintained1338713388Q: https://patchwork.kernel.org/project/netdevbpf/list/···1342913428NETWORKING [GENERAL]1343013429M: "David S. Miller" <davem@davemloft.net>1343113430M: Jakub Kicinski <kuba@kernel.org>1343113431+M: Paolo Abeni <pabeni@redhat.com>1343213432L: netdev@vger.kernel.org1343313433S: Maintained1343413434Q: https://patchwork.kernel.org/project/netdevbpf/list/
···107107 select VIDEOMODE_HELPERS108108 select DRM_DP_AUX_BUS109109 select DRM_DP_HELPER110110+ select DRM_KMS_HELPER110111 help111112 DRM panel driver for dumb eDP panels that need at most a regulator and112113 a GPIO to be powered up. Optionally a backlight can be attached so
···435435 * but the ckdev->bs_idev will remain NULL when this function exits.436436 *437437 * @ckdev: The keyboard device438438+ * @expect_buttons_switches: Indicates that EC must report button and/or439439+ * switch events438440 *439441 * Returns 0 if no error or -error upon error.440442 */441441-static int cros_ec_keyb_register_bs(struct cros_ec_keyb *ckdev)443443+static int cros_ec_keyb_register_bs(struct cros_ec_keyb *ckdev,444444+ bool expect_buttons_switches)442445{443446 struct cros_ec_device *ec_dev = ckdev->ec;444447 struct device *dev = ckdev->dev;···468465 switches = get_unaligned_le32(&event_data.switches);469466470467 if (!buttons && !switches)471471- return 0;468468+ return expect_buttons_switches ? -EINVAL : 0;472469473470 /*474471 * We call the non-matrix buttons/switches 'input1', if present.···519516}520517521518/**522522- * cros_ec_keyb_register_bs - Register matrix keys519519+ * cros_ec_keyb_register_matrix - Register matrix keys523520 *524521 * Handles all the bits of the keyboard driver related to matrix keys.525522 *···651648 .attrs = cros_ec_keyb_attrs,652649};653650654654-655651static int cros_ec_keyb_probe(struct platform_device *pdev)656652{657653 struct cros_ec_device *ec = dev_get_drvdata(pdev->dev.parent);658654 struct device *dev = &pdev->dev;659655 struct cros_ec_keyb *ckdev;656656+ bool buttons_switches_only = device_get_match_data(dev);660657 int err;661658662659 if (!dev->of_node)···670667 ckdev->dev = dev;671668 dev_set_drvdata(dev, ckdev);672669673673- err = cros_ec_keyb_register_matrix(ckdev);674674- if (err) {675675- dev_err(dev, "cannot register matrix inputs: %d\n", err);676676- return err;670670+ if (!buttons_switches_only) {671671+ err = cros_ec_keyb_register_matrix(ckdev);672672+ if (err) {673673+ dev_err(dev, "cannot register matrix inputs: %d\n",674674+ err);675675+ return err;676676+ }677677 }678678679679- err = cros_ec_keyb_register_bs(ckdev);679679+ err = cros_ec_keyb_register_bs(ckdev, buttons_switches_only);680680 if (err) {681681 dev_err(dev, "cannot register non-matrix inputs: %d\n", err);682682 return err;···687681688682 err = devm_device_add_group(dev, &cros_ec_keyb_attr_group);689683 if (err) {690690- dev_err(dev, "failed to create attributes. err=%d\n", err);684684+ dev_err(dev, "failed to create attributes: %d\n", err);691685 return err;692686 }693687···716710#ifdef CONFIG_OF717711static const struct of_device_id cros_ec_keyb_of_match[] = {718712 { .compatible = "google,cros-ec-keyb" },719719- {},713713+ { .compatible = "google,cros-ec-keyb-switches", .data = (void *)true },714714+ {}720715};721716MODULE_DEVICE_TABLE(of, cros_ec_keyb_of_match);722717#endif
+4-6
drivers/input/tablet/aiptek.c
···17861786 input_set_abs_params(inputdev, ABS_TILT_Y, AIPTEK_TILT_MIN, AIPTEK_TILT_MAX, 0, 0);17871787 input_set_abs_params(inputdev, ABS_WHEEL, AIPTEK_WHEEL_MIN, AIPTEK_WHEEL_MAX - 1, 0, 0);1788178817891789- /* Verify that a device really has an endpoint */17901790- if (intf->cur_altsetting->desc.bNumEndpoints < 1) {17891789+ err = usb_find_common_endpoints(intf->cur_altsetting,17901790+ NULL, NULL, &endpoint, NULL);17911791+ if (err) {17911792 dev_err(&intf->dev,17921792- "interface has %d endpoints, but must have minimum 1\n",17931793- intf->cur_altsetting->desc.bNumEndpoints);17941794- err = -EINVAL;17931793+ "interface has no int in endpoints, but must have minimum 1\n");17951794 goto fail3;17961795 }17971797- endpoint = &intf->cur_altsetting->endpoint[0].desc;1798179617991797 /* Go set up our URB, which is called when the tablet receives18001798 * input.
+35-9
drivers/input/touchscreen/zinitix.c
···135135136136struct touch_event {137137 __le16 status;138138- u8 finger_cnt;138138+ u8 finger_mask;139139 u8 time_stamp;140140 struct point_coord point_coord[MAX_SUPPORTED_FINGER_NUM];141141};···322322static void zinitix_report_finger(struct bt541_ts_data *bt541, int slot,323323 const struct point_coord *p)324324{325325+ u16 x, y;326326+327327+ if (unlikely(!(p->sub_status &328328+ (SUB_BIT_UP | SUB_BIT_DOWN | SUB_BIT_MOVE)))) {329329+ dev_dbg(&bt541->client->dev, "unknown finger event %#02x\n",330330+ p->sub_status);331331+ return;332332+ }333333+334334+ x = le16_to_cpu(p->x);335335+ y = le16_to_cpu(p->y);336336+325337 input_mt_slot(bt541->input_dev, slot);326326- input_mt_report_slot_state(bt541->input_dev, MT_TOOL_FINGER, true);327327- touchscreen_report_pos(bt541->input_dev, &bt541->prop,328328- le16_to_cpu(p->x), le16_to_cpu(p->y), true);329329- input_report_abs(bt541->input_dev, ABS_MT_TOUCH_MAJOR, p->width);338338+ if (input_mt_report_slot_state(bt541->input_dev, MT_TOOL_FINGER,339339+ !(p->sub_status & SUB_BIT_UP))) {340340+ touchscreen_report_pos(bt541->input_dev,341341+ &bt541->prop, x, y, true);342342+ input_report_abs(bt541->input_dev,343343+ ABS_MT_TOUCH_MAJOR, p->width);344344+ dev_dbg(&bt541->client->dev, "finger %d %s (%u, %u)\n",345345+ slot, p->sub_status & SUB_BIT_DOWN ? "down" : "move",346346+ x, y);347347+ } else {348348+ dev_dbg(&bt541->client->dev, "finger %d up (%u, %u)\n",349349+ slot, x, y);350350+ }330351}331352332353static irqreturn_t zinitix_ts_irq_handler(int irq, void *bt541_handler)···355334 struct bt541_ts_data *bt541 = bt541_handler;356335 struct i2c_client *client = bt541->client;357336 struct touch_event touch_event;337337+ unsigned long finger_mask;358338 int error;359339 int i;360340···368346 goto out;369347 }370348371371- for (i = 0; i < MAX_SUPPORTED_FINGER_NUM; i++)372372- if (touch_event.point_coord[i].sub_status & SUB_BIT_EXIST)373373- zinitix_report_finger(bt541, i,374374- &touch_event.point_coord[i]);349349+ finger_mask = touch_event.finger_mask;350350+ for_each_set_bit(i, &finger_mask, MAX_SUPPORTED_FINGER_NUM) {351351+ const struct point_coord *p = &touch_event.point_coord[i];352352+353353+ /* Only process contacts that are actually reported */354354+ if (p->sub_status & SUB_BIT_EXIST)355355+ zinitix_report_finger(bt541, i, p);356356+ }375357376358 input_mt_sync_frame(bt541->input_dev);377359 input_sync(bt541->input_dev);
···22872287 dma_length_status = status->length_status;22882288 if (dev->features & NETIF_F_RXCSUM) {22892289 rx_csum = (__force __be16)(status->rx_csum & 0xffff);22902290- skb->csum = (__force __wsum)ntohs(rx_csum);22912291- skb->ip_summed = CHECKSUM_COMPLETE;22902290+ if (rx_csum) {22912291+ skb->csum = (__force __wsum)ntohs(rx_csum);22922292+ skb->ip_summed = CHECKSUM_COMPLETE;22932293+ }22922294 }2293229522942296 /* DMA flags and length are still valid no matter how
+14-1
drivers/net/ethernet/intel/iavf/iavf_main.c
···25412541 queue_delayed_work(iavf_wq, &adapter->watchdog_task, HZ * 2);25422542}2543254325442544+/**25452545+ * iavf_disable_vf - disable VF25462546+ * @adapter: board private structure25472547+ *25482548+ * Set communication failed flag and free all resources.25492549+ * NOTE: This function is expected to be called with crit_lock being held.25502550+ **/25442551static void iavf_disable_vf(struct iavf_adapter *adapter)25452552{25462553 struct iavf_mac_filter *f, *ftmp;···26022595 memset(adapter->vf_res, 0, IAVF_VIRTCHNL_VF_RESOURCE_SIZE);26032596 iavf_shutdown_adminq(&adapter->hw);26042597 adapter->netdev->flags &= ~IFF_UP;26052605- mutex_unlock(&adapter->crit_lock);26062598 adapter->flags &= ~IAVF_FLAG_RESET_PENDING;26072599 iavf_change_state(adapter, __IAVF_DOWN);26082600 wake_up(&adapter->down_waitqueue);···46194613 struct iavf_cloud_filter *cf, *cftmp;46204614 struct iavf_hw *hw = &adapter->hw;46214615 int err;46164616+46174617+ /* When reboot/shutdown is in progress no need to do anything46184618+ * as the adapter is already REMOVE state that was set during46194619+ * iavf_shutdown() callback.46204620+ */46214621+ if (adapter->state == __IAVF_REMOVE)46224622+ return;4622462346234624 set_bit(__IAVF_IN_REMOVE_TASK, &adapter->crit_section);46244625 /* Wait until port initialization is complete.
···6060 */6161static int ocelot_chain_to_lookup(int chain)6262{6363+ /* Backwards compatibility with older, single-chain tc-flower6464+ * offload support in Ocelot6565+ */6666+ if (chain == 0)6767+ return 0;6868+6369 return (chain / VCAP_LOOKUP) % 10;6470}6571···7468 */7569static int ocelot_chain_to_pag(int chain)7670{7777- int lookup = ocelot_chain_to_lookup(chain);7171+ int lookup;7272+7373+ /* Backwards compatibility with older, single-chain tc-flower7474+ * offload support in Ocelot7575+ */7676+ if (chain == 0)7777+ return 0;7878+7979+ lookup = ocelot_chain_to_lookup(chain);78807981 /* calculate PAG value as chain index relative to the first PAG */8082 return chain - VCAP_IS2_CHAIN(lookup, 0);
···16871687 int err;1688168816891689 /* Suspend the fiber mode first */16901690- if (!linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,16911691- phydev->supported)) {16901690+ if (linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,16911691+ phydev->supported)) {16921692 err = marvell_set_page(phydev, MII_MARVELL_FIBER_PAGE);16931693 if (err < 0)16941694 goto error;···17221722 int err;1723172317241724 /* Resume the fiber mode first */17251725- if (!linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,17261726- phydev->supported)) {17251725+ if (linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,17261726+ phydev->supported)) {17271727 err = marvell_set_page(phydev, MII_MARVELL_FIBER_PAGE);17281728 if (err < 0)17291729 goto error;
···753753754754 /* Iterating over all connections for all CIDs to find orphans is755755 * inefficient. Room for improvement here. */756756- vsock_for_each_connected_socket(vhost_vsock_reset_orphans);756756+ vsock_for_each_connected_socket(&vhost_transport.transport,757757+ vhost_vsock_reset_orphans);757758758759 /* Don't check the owner, because we are in the release path, so we759760 * need to stop the vsock device in any case.
+2-1
fs/cifs/connect.c
···3924392439253925 /* only send once per connect */39263926 spin_lock(&cifs_tcp_ses_lock);39273927- if (server->tcpStatus != CifsNeedSessSetup) {39273927+ if ((server->tcpStatus != CifsNeedSessSetup) &&39283928+ (ses->status == CifsGood)) {39283929 spin_unlock(&cifs_tcp_ses_lock);39293930 return 0;39303931 }
+11-11
fs/ocfs2/super.c
···11051105 goto read_super_error;11061106 }1107110711081108- root = d_make_root(inode);11091109- if (!root) {11101110- status = -ENOMEM;11111111- mlog_errno(status);11121112- goto read_super_error;11131113- }11141114-11151115- sb->s_root = root;11161116-11171117- ocfs2_complete_mount_recovery(osb);11181118-11191108 osb->osb_dev_kset = kset_create_and_add(sb->s_id, NULL,11201109 &ocfs2_kset->kobj);11211110 if (!osb->osb_dev_kset) {···11211132 "/sys/fs/ocfs2/%s/filecheck.\n", sb->s_id);11221133 goto read_super_error;11231134 }11351135+11361136+ root = d_make_root(inode);11371137+ if (!root) {11381138+ status = -ENOMEM;11391139+ mlog_errno(status);11401140+ goto read_super_error;11411141+ }11421142+11431143+ sb->s_root = root;11441144+11451145+ ocfs2_complete_mount_recovery(osb);1124114611251147 if (ocfs2_mount_local(osb))11261148 snprintf(nodestr, sizeof(nodestr), "local");
+1
include/linux/if_arp.h
···5252 case ARPHRD_VOID:5353 case ARPHRD_NONE:5454 case ARPHRD_RAWIP:5555+ case ARPHRD_PIMREG:5556 return false;5657 default:5758 return true;
···1616#1717# Compile-time checks and compiler options1818#1919+CONFIG_DEBUG_INFO=y1920CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y2021CONFIG_DEBUG_SECTION_MISMATCH=y2122CONFIG_FRAME_WARN=2048
+1-1
mm/swap_state.c
···478478 * __read_swap_cache_async(), which has set SWAP_HAS_CACHE479479 * in swap_map, but not yet added its page to swap cache.480480 */481481- cond_resched();481481+ schedule_timeout_uninterruptible(1);482482 }483483484484 /*
···494494 goto another_round;495495}496496497497-static bool tuple_force_port_remap(const struct nf_conntrack_tuple *tuple)498498-{499499- u16 sp, dp;500500-501501- switch (tuple->dst.protonum) {502502- case IPPROTO_TCP:503503- sp = ntohs(tuple->src.u.tcp.port);504504- dp = ntohs(tuple->dst.u.tcp.port);505505- break;506506- case IPPROTO_UDP:507507- case IPPROTO_UDPLITE:508508- sp = ntohs(tuple->src.u.udp.port);509509- dp = ntohs(tuple->dst.u.udp.port);510510- break;511511- default:512512- return false;513513- }514514-515515- /* IANA: System port range: 1-1023,516516- * user port range: 1024-49151,517517- * private port range: 49152-65535.518518- *519519- * Linux default ephemeral port range is 32768-60999.520520- *521521- * Enforce port remapping if sport is significantly lower522522- * than dport to prevent NAT port shadowing, i.e.523523- * accidental match of 'new' inbound connection vs.524524- * existing outbound one.525525- */526526- return sp < 16384 && dp >= 32768;527527-}528528-529497/* Manipulate the tuple into the range given. For NF_INET_POST_ROUTING,530498 * we change the source to map into the range. For NF_INET_PRE_ROUTING531499 * and NF_INET_LOCAL_OUT, we change the destination to map into the···507539 struct nf_conn *ct,508540 enum nf_nat_manip_type maniptype)509541{510510- bool random_port = range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL;511542 const struct nf_conntrack_zone *zone;512543 struct net *net = nf_ct_net(ct);513544514545 zone = nf_ct_zone(ct);515515-516516- if (maniptype == NF_NAT_MANIP_SRC &&517517- !random_port &&518518- !ct->local_origin)519519- random_port = tuple_force_port_remap(orig_tuple);520546521547 /* 1) If this srcip/proto/src-proto-part is currently mapped,522548 * and that same mapping gives a unique tuple within the given···520558 * So far, we don't do local source mappings, so multiple521559 * manips not an issue.522560 */523523- if (maniptype == NF_NAT_MANIP_SRC && !random_port) {561561+ if (maniptype == NF_NAT_MANIP_SRC &&562562+ !(range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL)) {524563 /* try the original tuple first */525564 if (in_range(orig_tuple, range)) {526565 if (!nf_nat_used_tuple(orig_tuple, ct)) {···545582 */546583547584 /* Only bother mapping if it's not already in range and unique */548548- if (!random_port) {585585+ if (!(range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL)) {549586 if (range->flags & NF_NAT_RANGE_PROTO_SPECIFIED) {550587 if (!(range->flags & NF_NAT_RANGE_PROTO_OFFSET) &&551588 l4proto_in_range(tuple, maniptype,
+7-2
net/netfilter/nf_tables_api.c
···82608260}82618261EXPORT_SYMBOL_GPL(nf_tables_trans_destroy_flush_work);8262826282638263+static bool nft_expr_reduce(struct nft_regs_track *track,82648264+ const struct nft_expr *expr)82658265+{82668266+ return false;82678267+}82688268+82638269static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *chain)82648270{82658271 const struct nft_expr *expr, *last;···83138307 nft_rule_for_each_expr(expr, last, rule) {83148308 track.cur = expr;8315830983168316- if (expr->ops->reduce &&83178317- expr->ops->reduce(&track, expr)) {83108310+ if (nft_expr_reduce(&track, expr)) {83188311 expr = track.cur;83198312 continue;83208313 }
+10-1
net/packet/af_packet.c
···23172317 copy_skb = skb_get(skb);23182318 skb_head = skb->data;23192319 }23202320- if (copy_skb)23202320+ if (copy_skb) {23212321+ memset(&PACKET_SKB_CB(copy_skb)->sa.ll, 0,23222322+ sizeof(PACKET_SKB_CB(copy_skb)->sa.ll));23212323 skb_set_owner_r(copy_skb, sk);23242324+ }23222325 }23232326 snaplen = po->rx_ring.frame_size - macoff;23242327 if ((int)snaplen < 0) {···34653462 sock_recv_ts_and_drops(msg, sk, skb);3466346334673464 if (msg->msg_name) {34653465+ const size_t max_len = min(sizeof(skb->cb),34663466+ sizeof(struct sockaddr_storage));34683467 int copy_len;3469346834703469 /* If the address length field is there to be filled···34883483 0, sizeof(sll->sll_addr));34893484 msg->msg_namelen = sizeof(struct sockaddr_ll);34903485 }34863486+ }34873487+ if (WARN_ON_ONCE(copy_len > max_len)) {34883488+ copy_len = max_len;34893489+ msg->msg_namelen = copy_len;34913490 }34923491 memcpy(msg->msg_name, &PACKET_SKB_CB(skb)->sa, copy_len);34933492 }
+7-2
net/vmw_vsock/af_vsock.c
···334334}335335EXPORT_SYMBOL_GPL(vsock_remove_sock);336336337337-void vsock_for_each_connected_socket(void (*fn)(struct sock *sk))337337+void vsock_for_each_connected_socket(struct vsock_transport *transport,338338+ void (*fn)(struct sock *sk))338339{339340 int i;340341···344343 for (i = 0; i < ARRAY_SIZE(vsock_connected_table); i++) {345344 struct vsock_sock *vsk;346345 list_for_each_entry(vsk, &vsock_connected_table[i],347347- connected_table)346346+ connected_table) {347347+ if (vsk->transport != transport)348348+ continue;349349+348350 fn(sk_vsock(vsk));351351+ }349352 }350353351354 spin_unlock_bh(&vsock_table_lock);
+5-2
net/vmw_vsock/virtio_transport.c
···2424static struct workqueue_struct *virtio_vsock_workqueue;2525static struct virtio_vsock __rcu *the_virtio_vsock;2626static DEFINE_MUTEX(the_virtio_vsock_mutex); /* protects the_virtio_vsock */2727+static struct virtio_transport virtio_transport; /* forward declaration */27282829struct virtio_vsock {2930 struct virtio_device *vdev;···385384 switch (le32_to_cpu(event->id)) {386385 case VIRTIO_VSOCK_EVENT_TRANSPORT_RESET:387386 virtio_vsock_update_guest_cid(vsock);388388- vsock_for_each_connected_socket(virtio_vsock_reset_sock);387387+ vsock_for_each_connected_socket(&virtio_transport.transport,388388+ virtio_vsock_reset_sock);389389 break;390390 }391391}···664662 synchronize_rcu();665663666664 /* Reset all connected sockets when the device disappear */667667- vsock_for_each_connected_socket(virtio_vsock_reset_sock);665665+ vsock_for_each_connected_socket(&virtio_transport.transport,666666+ virtio_vsock_reset_sock);668667669668 /* Stop all work handlers to make sure no one is accessing the device,670669 * so we can safely call virtio_reset_device().
+4-1
net/vmw_vsock/vmci_transport.c
···75757676static int PROTOCOL_OVERRIDE = -1;77777878+static struct vsock_transport vmci_transport; /* forward declaration */7979+7880/* Helper function to convert from a VMCI error code to a VSock error code. */79818082static s32 vmci_transport_error_to_vsock_error(s32 vmci_error)···884882 const struct vmci_event_data *e_data,885883 void *client_data)886884{887887- vsock_for_each_connected_socket(vmci_transport_handle_detach);885885+ vsock_for_each_connected_socket(&vmci_transport,886886+ vmci_transport_handle_detach);888887}889888890889static void vmci_transport_recv_pkt_work(struct work_struct *work)
···880880 return $ksft_skip881881 fi882882883883- # test default behaviour. Packet from ns1 to ns0 is not redirected884884- # due to automatic port translation.885885- test_port_shadow "default" "ROUTER"883883+ # test default behaviour. Packet from ns1 to ns0 is redirected to ns2.884884+ test_port_shadow "default" "CLIENT"886885887886 # test packet filter based mitigation: prevent forwarding of888887 # packets claiming to come from the service port.
+2-4
tools/testing/selftests/vm/Makefile
···11# SPDX-License-Identifier: GPL-2.022# Makefile for vm selftests3344+LOCAL_HDRS += $(selfdir)/vm/local_config.h $(top_srcdir)/mm/gup_test.h55+46include local_config.mk5768uname_M := $(shell uname -m 2>/dev/null || echo not)···141139endif142140143141$(OUTPUT)/mlock-random-test $(OUTPUT)/memfd_secret: LDLIBS += -lcap144144-145145-$(OUTPUT)/gup_test: ../../../../mm/gup_test.h146146-147147-$(OUTPUT)/hmm-tests: local_config.h148142149143# HMM_EXTRA_LIBS may get set in local_config.mk, or it may be left empty.150144$(OUTPUT)/hmm-tests: LDLIBS += $(HMM_EXTRA_LIBS)