Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions arch/x86/kvm/svm/sev.c
Original file line number Diff line number Diff line change
Expand Up @@ -1958,20 +1958,22 @@ int sev_mem_enc_register_region(struct kvm *kvm,
goto e_free;
}

region->uaddr = range->addr;
region->size = range->size;

list_add_tail(&region->list, &sev->regions_list);
mutex_unlock(&kvm->lock);

/*
* The guest may change the memory encryption attribute from C=0 -> C=1
* or vice versa for this memory range. Lets make sure caches are
* flushed to ensure that guest data gets written into memory with
* correct C-bit.
* correct C-bit. Note, this must be done before dropping kvm->lock,
* as region and its array of pages can be freed by a different task
* once kvm->lock is released.
*/
sev_clflush_pages(region->pages, region->npages);

region->uaddr = range->addr;
region->size = range->size;

list_add_tail(&region->list, &sev->regions_list);
mutex_unlock(&kvm->lock);

return ret;

e_free:
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/ethernet/intel/ice/ice_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -7587,6 +7587,8 @@ ice_bridge_setlink(struct net_device *dev, struct nlmsghdr *nlh,
pf_sw = pf->first_sw;
/* find the attribute in the netlink message */
br_spec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC);
if (!br_spec)
return -EINVAL;

nla_for_each_nested(attr, br_spec, rem) {
__u16 mode;
Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/vt/vt.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ static void vc_uniscr_delete(struct vc_data *vc, unsigned int nr)
char32_t *ln = uniscr->lines[vc->state.y];
unsigned int x = vc->state.x, cols = vc->vc_cols;

memcpy(&ln[x], &ln[x + nr], (cols - x - nr) * sizeof(*ln));
memmove(&ln[x], &ln[x + nr], (cols - x - nr) * sizeof(*ln));
memset32(&ln[cols - nr], ' ', nr);
}
}
Expand Down
16 changes: 10 additions & 6 deletions fs/nfs/nfs4proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -10491,29 +10491,33 @@ const struct nfs4_minor_version_ops *nfs_v4_minor_ops[] = {
static ssize_t nfs4_listxattr(struct dentry *dentry, char *list, size_t size)
{
ssize_t error, error2, error3;
size_t left = size;

error = generic_listxattr(dentry, list, size);
error = generic_listxattr(dentry, list, left);
if (error < 0)
return error;
if (list) {
list += error;
size -= error;
left -= error;
}

error2 = nfs4_listxattr_nfs4_label(d_inode(dentry), list, size);
error2 = nfs4_listxattr_nfs4_label(d_inode(dentry), list, left);
if (error2 < 0)
return error2;

if (list) {
list += error2;
size -= error2;
left -= error2;
}

error3 = nfs4_listxattr_nfs4_user(d_inode(dentry), list, size);
error3 = nfs4_listxattr_nfs4_user(d_inode(dentry), list, left);
if (error3 < 0)
return error3;

return error + error2 + error3;
error += error2 + error3;
if (size && error > size)
return -ERANGE;
return error;
}

static void nfs4_enable_swap(struct inode *inode)
Expand Down
1 change: 1 addition & 0 deletions include/net/cfg802154.h
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ struct ieee802154_llsec_key {

struct ieee802154_llsec_key_entry {
struct list_head list;
struct rcu_head rcu;

struct ieee802154_llsec_key_id id;
struct ieee802154_llsec_key *key;
Expand Down
7 changes: 4 additions & 3 deletions net/bluetooth/hci_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1067,17 +1067,18 @@ static void hci_error_reset(struct work_struct *work)
{
struct hci_dev *hdev = container_of(work, struct hci_dev, error_reset);

hci_dev_hold(hdev);
BT_DBG("%s", hdev->name);

if (hdev->hw_error)
hdev->hw_error(hdev, hdev->hw_error_code);
else
bt_dev_err(hdev, "hardware error 0x%2.2x", hdev->hw_error_code);

if (hci_dev_do_close(hdev))
return;
if (!hci_dev_do_close(hdev))
hci_dev_do_open(hdev);

hci_dev_do_open(hdev);
hci_dev_put(hdev);
}

void hci_uuids_clear(struct hci_dev *hdev)
Expand Down
7 changes: 4 additions & 3 deletions net/ipv6/addrconf.c
Original file line number Diff line number Diff line change
Expand Up @@ -5398,9 +5398,10 @@ static int inet6_rtm_getaddr(struct sk_buff *in_skb, struct nlmsghdr *nlh,
}

addr = extract_addr(tb[IFA_ADDRESS], tb[IFA_LOCAL], &peer);
if (!addr)
return -EINVAL;

if (!addr) {
err = -EINVAL;
goto errout;
}
ifm = nlmsg_data(nlh);
if (ifm->ifa_index)
dev = dev_get_by_index(tgt_net, ifm->ifa_index);
Expand Down
18 changes: 13 additions & 5 deletions net/mac802154/llsec.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,19 +265,27 @@ int mac802154_llsec_key_add(struct mac802154_llsec *sec,
return -ENOMEM;
}

static void mac802154_llsec_key_del_rcu(struct rcu_head *rcu)
{
struct ieee802154_llsec_key_entry *pos;
struct mac802154_llsec_key *mkey;

pos = container_of(rcu, struct ieee802154_llsec_key_entry, rcu);
mkey = container_of(pos->key, struct mac802154_llsec_key, key);

llsec_key_put(mkey);
kfree_sensitive(pos);
}

int mac802154_llsec_key_del(struct mac802154_llsec *sec,
const struct ieee802154_llsec_key_id *key)
{
struct ieee802154_llsec_key_entry *pos;

list_for_each_entry(pos, &sec->table.keys, list) {
struct mac802154_llsec_key *mkey;

mkey = container_of(pos->key, struct mac802154_llsec_key, key);

if (llsec_key_id_equal(&pos->id, key)) {
list_del_rcu(&pos->list);
llsec_key_put(mkey);
call_rcu(&pos->rcu, mac802154_llsec_key_del_rcu);
return 0;
}
}
Expand Down
Loading