Skip to content

Commit

Permalink
Merge tag 'hyperv-fixes-signed' of git://git.kernel.org/pub/scm/linux…
Browse files Browse the repository at this point in the history
…/kernel/git/hyperv/linux

Pull Hyper-V fixes from Sasha Levin:

 - Fix for panics and network failures on PAE guests by Dexuan Cui.

 - Fix of a memory leak (and related cleanups) in the hyper-v keyboard
   driver by Dexuan Cui.

 - Code cleanups for hyper-v clocksource driver during the merge window
   by Dexuan Cui.

 - Fix for a false positive warning in the userspace hyper-v KVP store
   by Vitaly Kuznetsov.

* tag 'hyperv-fixes-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux:
  Drivers: hv: vmbus: Fix virt_to_hvpfn() for X86_PAE
  Tools: hv: kvp: eliminate 'may be used uninitialized' warning
  Input: hyperv-keyboard: Use in-place iterator API in the channel callback
  Drivers: hv: vmbus: Remove the unused "tsc_page" from struct hv_context
  • Loading branch information
torvalds committed Aug 24, 2019
2 parents 0a022ec + a9fc434 commit 3614692
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 33 deletions.
2 changes: 1 addition & 1 deletion drivers/hv/channel.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

static unsigned long virt_to_hvpfn(void *addr)
{
unsigned long paddr;
phys_addr_t paddr;

if (is_vmalloc_addr(addr))
paddr = page_to_phys(vmalloc_to_page(addr)) +
Expand Down
2 changes: 0 additions & 2 deletions drivers/hv/hyperv_vmbus.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,6 @@ struct hv_context {
*/
u64 guestid;

void *tsc_page;

struct hv_per_cpu_context __percpu *cpu_context;

/*
Expand Down
35 changes: 6 additions & 29 deletions drivers/input/serio/hyperv-keyboard.c
Original file line number Diff line number Diff line change
Expand Up @@ -237,40 +237,17 @@ static void hv_kbd_handle_received_packet(struct hv_device *hv_dev,

static void hv_kbd_on_channel_callback(void *context)
{
struct vmpacket_descriptor *desc;
struct hv_device *hv_dev = context;
void *buffer;
int bufferlen = 0x100; /* Start with sensible size */
u32 bytes_recvd;
u64 req_id;
int error;

buffer = kmalloc(bufferlen, GFP_ATOMIC);
if (!buffer)
return;

while (1) {
error = vmbus_recvpacket_raw(hv_dev->channel, buffer, bufferlen,
&bytes_recvd, &req_id);
switch (error) {
case 0:
if (bytes_recvd == 0) {
kfree(buffer);
return;
}

hv_kbd_handle_received_packet(hv_dev, buffer,
bytes_recvd, req_id);
break;
foreach_vmbus_pkt(desc, hv_dev->channel) {
bytes_recvd = desc->len8 * 8;
req_id = desc->trans_id;

case -ENOBUFS:
kfree(buffer);
/* Handle large packet */
bufferlen = bytes_recvd;
buffer = kmalloc(bytes_recvd, GFP_ATOMIC);
if (!buffer)
return;
break;
}
hv_kbd_handle_received_packet(hv_dev, desc, bytes_recvd,
req_id);
}
}

Expand Down
2 changes: 1 addition & 1 deletion tools/hv/hv_kvp_daemon.c
Original file line number Diff line number Diff line change
Expand Up @@ -809,7 +809,7 @@ kvp_get_ip_info(int family, char *if_name, int op,
int sn_offset = 0;
int error = 0;
char *buffer;
struct hv_kvp_ipaddr_value *ip_buffer;
struct hv_kvp_ipaddr_value *ip_buffer = NULL;
char cidr_mask[5]; /* /xyz */
int weight;
int i;
Expand Down

0 comments on commit 3614692

Please sign in to comment.