From: Hollis B. <ho...@us...> - 2008-02-25 17:21:42
|
On Mon, 2008-02-25 at 17:34 +0800, Zhang, Xiantao wrote: > From: Xiantao Zhang <xia...@in...> > Date: Mon, 25 Feb 2008 17:11:43 +0800 > Subject: [PATCH] kvm: Using kzalloc to avoid allocating kvm_regs from > kernel stack. > > Since the size of struct kvm_regs maybe too big to allocate from kernel > stack, > here use kzalloc to allocate it. > Signed-off-by: Xiantao Zhang <xia...@in...> > --- > virt/kvm/kvm_main.c | 15 ++++++++------- > 1 files changed, 8 insertions(+), 7 deletions(-) > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index cf6df51..5348538 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -806,25 +806,26 @@ static long kvm_vcpu_ioctl(struct file *filp, > r = kvm_arch_vcpu_ioctl_run(vcpu, vcpu->run); > break; > case KVM_GET_REGS: { > - struct kvm_regs kvm_regs; > + struct kvm_regs *kvm_regs; > > - memset(&kvm_regs, 0, sizeof kvm_regs); > - r = kvm_arch_vcpu_ioctl_get_regs(vcpu, &kvm_regs); > + kvm_regs = kzalloc(sizeof(struct kvm_regs), GFP_KERNEL); > + r = kvm_arch_vcpu_ioctl_get_regs(vcpu, kvm_regs); > if (r) > goto out; > r = -EFAULT; > - if (copy_to_user(argp, &kvm_regs, sizeof kvm_regs)) > + if (copy_to_user(argp, kvm_regs, sizeof(struct > kvm_regs))) > goto out; > r = 0; > break; > } > case KVM_SET_REGS: { > - struct kvm_regs kvm_regs; > + struct kvm_regs *kvm_regs; > > + kvm_regs = kzalloc(sizeof(struct kvm_regs), GFP_KERNEL); > r = -EFAULT; > - if (copy_from_user(&kvm_regs, argp, sizeof kvm_regs)) > + if (copy_from_user(kvm_regs, argp, sizeof(struct > kvm_regs))) > goto out; > - r = kvm_arch_vcpu_ioctl_set_regs(vcpu, &kvm_regs); > + r = kvm_arch_vcpu_ioctl_set_regs(vcpu, kvm_regs); > if (r) > goto out; > r = 0; Where is this freed? -- Hollis Blanchard IBM Linux Technology Center |