Merge v5.0 into drm-next
There is a really hairy resolution involving amdgpu fixes, that I'd rather confirm here. Also some misc fixes are landed by me, but the pr has them as well. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -20,15 +20,6 @@
|
||||
struct kernel_pkey_query;
|
||||
struct kernel_pkey_params;
|
||||
|
||||
/*
|
||||
* key under-construction record
|
||||
* - passed to the request_key actor if supplied
|
||||
*/
|
||||
struct key_construction {
|
||||
struct key *key; /* key being constructed */
|
||||
struct key *authkey;/* authorisation for key being constructed */
|
||||
};
|
||||
|
||||
/*
|
||||
* Pre-parsed payload, used by key add, update and instantiate.
|
||||
*
|
||||
@@ -50,8 +41,7 @@ struct key_preparsed_payload {
|
||||
time64_t expiry; /* Expiry time of key */
|
||||
} __randomize_layout;
|
||||
|
||||
typedef int (*request_key_actor_t)(struct key_construction *key,
|
||||
const char *op, void *aux);
|
||||
typedef int (*request_key_actor_t)(struct key *auth_key, void *aux);
|
||||
|
||||
/*
|
||||
* Preparsed matching criterion.
|
||||
@@ -181,20 +171,20 @@ extern int key_instantiate_and_link(struct key *key,
|
||||
const void *data,
|
||||
size_t datalen,
|
||||
struct key *keyring,
|
||||
struct key *instkey);
|
||||
struct key *authkey);
|
||||
extern int key_reject_and_link(struct key *key,
|
||||
unsigned timeout,
|
||||
unsigned error,
|
||||
struct key *keyring,
|
||||
struct key *instkey);
|
||||
extern void complete_request_key(struct key_construction *cons, int error);
|
||||
struct key *authkey);
|
||||
extern void complete_request_key(struct key *authkey, int error);
|
||||
|
||||
static inline int key_negate_and_link(struct key *key,
|
||||
unsigned timeout,
|
||||
struct key *keyring,
|
||||
struct key *instkey)
|
||||
struct key *authkey)
|
||||
{
|
||||
return key_reject_and_link(key, timeout, ENOKEY, keyring, instkey);
|
||||
return key_reject_and_link(key, timeout, ENOKEY, keyring, authkey);
|
||||
}
|
||||
|
||||
extern int generic_key_instantiate(struct key *key, struct key_preparsed_payload *prep);
|
||||
|
@@ -11,6 +11,8 @@
|
||||
#define _LINUX_NETDEV_FEATURES_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
typedef u64 netdev_features_t;
|
||||
|
||||
@@ -154,8 +156,26 @@ enum {
|
||||
#define NETIF_F_HW_TLS_TX __NETIF_F(HW_TLS_TX)
|
||||
#define NETIF_F_HW_TLS_RX __NETIF_F(HW_TLS_RX)
|
||||
|
||||
#define for_each_netdev_feature(mask_addr, bit) \
|
||||
for_each_set_bit(bit, (unsigned long *)mask_addr, NETDEV_FEATURE_COUNT)
|
||||
/* Finds the next feature with the highest number of the range of start till 0.
|
||||
*/
|
||||
static inline int find_next_netdev_feature(u64 feature, unsigned long start)
|
||||
{
|
||||
/* like BITMAP_LAST_WORD_MASK() for u64
|
||||
* this sets the most significant 64 - start to 0.
|
||||
*/
|
||||
feature &= ~0ULL >> (-start & ((sizeof(feature) * 8) - 1));
|
||||
|
||||
return fls64(feature) - 1;
|
||||
}
|
||||
|
||||
/* This goes for the MSB to the LSB through the set feature bits,
|
||||
* mask_addr should be a u64 and bit an int
|
||||
*/
|
||||
#define for_each_netdev_feature(mask_addr, bit) \
|
||||
for ((bit) = find_next_netdev_feature((mask_addr), \
|
||||
NETDEV_FEATURE_COUNT); \
|
||||
(bit) >= 0; \
|
||||
(bit) = find_next_netdev_feature((mask_addr), (bit) - 1))
|
||||
|
||||
/* Features valid for ethtool to change */
|
||||
/* = all defined minus driver/device-class-related */
|
||||
|
@@ -3861,7 +3861,7 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits)
|
||||
if (debug_value == 0) /* no output */
|
||||
return 0;
|
||||
/* set low N bits */
|
||||
return (1 << debug_value) - 1;
|
||||
return (1U << debug_value) - 1;
|
||||
}
|
||||
|
||||
static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
|
||||
|
@@ -992,6 +992,14 @@ static inline int genphy_no_soft_reset(struct phy_device *phydev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int genphy_no_ack_interrupt(struct phy_device *phydev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int genphy_no_config_intr(struct phy_device *phydev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
int genphy_read_mmd_unsupported(struct phy_device *phdev, int devad,
|
||||
u16 regnum);
|
||||
int genphy_write_mmd_unsupported(struct phy_device *phdev, int devnum,
|
||||
|
@@ -739,12 +739,6 @@ struct task_struct {
|
||||
unsigned use_memdelay:1;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* May usercopy functions fault on kernel addresses?
|
||||
* This is not just a single bit because this can potentially nest.
|
||||
*/
|
||||
unsigned int kernel_uaccess_faults_ok;
|
||||
|
||||
unsigned long atomic_flags; /* Flags requiring atomic access. */
|
||||
|
||||
struct restart_block restart_block;
|
||||
|
@@ -2434,7 +2434,7 @@ static inline void skb_probe_transport_header(struct sk_buff *skb,
|
||||
|
||||
if (skb_flow_dissect_flow_keys_basic(skb, &keys, NULL, 0, 0, 0, 0))
|
||||
skb_set_transport_header(skb, keys.control.thoff);
|
||||
else
|
||||
else if (offset_hint >= 0)
|
||||
skb_set_transport_header(skb, offset_hint);
|
||||
}
|
||||
|
||||
@@ -4212,6 +4212,12 @@ static inline bool skb_is_gso_sctp(const struct sk_buff *skb)
|
||||
return skb_shinfo(skb)->gso_type & SKB_GSO_SCTP;
|
||||
}
|
||||
|
||||
static inline bool skb_is_gso_tcp(const struct sk_buff *skb)
|
||||
{
|
||||
return skb_is_gso(skb) &&
|
||||
skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6);
|
||||
}
|
||||
|
||||
static inline void skb_gso_reset(struct sk_buff *skb)
|
||||
{
|
||||
skb_shinfo(skb)->gso_size = 0;
|
||||
|
@@ -57,6 +57,25 @@ static inline int virtio_net_hdr_to_skb(struct sk_buff *skb,
|
||||
|
||||
if (!skb_partial_csum_set(skb, start, off))
|
||||
return -EINVAL;
|
||||
} else {
|
||||
/* gso packets without NEEDS_CSUM do not set transport_offset.
|
||||
* probe and drop if does not match one of the above types.
|
||||
*/
|
||||
if (gso_type && skb->network_header) {
|
||||
if (!skb->protocol)
|
||||
virtio_net_hdr_set_proto(skb, hdr);
|
||||
retry:
|
||||
skb_probe_transport_header(skb, -1);
|
||||
if (!skb_transport_header_was_set(skb)) {
|
||||
/* UFO does not specify ipv4 or 6: try both */
|
||||
if (gso_type & SKB_GSO_UDP &&
|
||||
skb->protocol == htons(ETH_P_IP)) {
|
||||
skb->protocol = htons(ETH_P_IPV6);
|
||||
goto retry;
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hdr->gso_type != VIRTIO_NET_HDR_GSO_NONE) {
|
||||
|
Reference in New Issue
Block a user