Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7116e6b9 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge 5.4.141 into android11-5.4-lts



Changes in 5.4.141
	KVM: SVM: Fix off-by-one indexing when nullifying last used SEV VMCB
	tee: Correct inappropriate usage of TEE_SHM_DMA_BUF flag
	media: v4l2-mem2mem: always consider OUTPUT queue during poll
	tracing: Reject string operand in the histogram expression
	usb: dwc3: Stop active transfers before halting the controller
	usb: dwc3: gadget: Allow runtime suspend if UDC unbinded
	usb: dwc3: gadget: Restart DWC3 gadget when enabling pullup
	usb: dwc3: gadget: Prevent EP queuing while stopping transfers
	usb: dwc3: gadget: Clear DEP flags after stop transfers in ep disable
	usb: dwc3: gadget: Disable gadget IRQ during pullup disable
	usb: dwc3: gadget: Avoid runtime resume if disabling pullup
	KVM: X86: MMU: Use the correct inherited permissions to get shadow page
	USB:ehci:fix Kunpeng920 ehci hardware problem
	ALSA: hda: Add quirk for ASUS Flow x13
	ppp: Fix generating ppp unit id when ifname is not specified
	ovl: prevent private clone if bind mount is not allowed
	btrfs: make qgroup_free_reserved_data take btrfs_inode
	btrfs: make btrfs_qgroup_reserve_data take btrfs_inode
	btrfs: qgroup: allow to unreserve range without releasing other ranges
	btrfs: qgroup: try to flush qgroup space when we get -EDQUOT
	btrfs: transaction: Cleanup unused TRANS_STATE_BLOCKED
	btrfs: qgroup: remove ASYNC_COMMIT mechanism in favor of reserve retry-after-EDQUOT
	btrfs: fix lockdep splat when enabling and disabling qgroups
	net: xilinx_emaclite: Do not print real IOMEM pointer
	btrfs: qgroup: don't commit transaction when we already hold the handle
	btrfs: export and rename qgroup_reserve_meta
	btrfs: don't flush from btrfs_delayed_inode_reserve_metadata
	Linux 5.4.141

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
Change-Id: I859f5efd0857ba315a6f4d1a8928b407d2c8ca28
parents c33130b1 b704883a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -152,8 +152,8 @@ Shadow pages contain the following information:
    shadow pages) so role.quadrant takes values in the range 0..3.  Each
    quadrant maps 1GB virtual address space.
  role.access:
    Inherited guest access permissions in the form uwx.  Note execute
    permission is positive, not negative.
    Inherited guest access permissions from the parent ptes in the form uwx.
    Note execute permission is positive, not negative.
  role.invalid:
    The page is invalid and should not be used.  It is a root page that is
    currently pinned (by a cpu hardware register pointing to it); once it is
+1 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 4
SUBLEVEL = 140
SUBLEVEL = 141
EXTRAVERSION =
NAME = Kleptomaniac Octopus

+9 −5
Original line number Diff line number Diff line
@@ -90,8 +90,8 @@ struct guest_walker {
	gpa_t pte_gpa[PT_MAX_FULL_LEVELS];
	pt_element_t __user *ptep_user[PT_MAX_FULL_LEVELS];
	bool pte_writable[PT_MAX_FULL_LEVELS];
	unsigned pt_access;
	unsigned pte_access;
	unsigned int pt_access[PT_MAX_FULL_LEVELS];
	unsigned int pte_access;
	gfn_t gfn;
	struct x86_exception fault;
};
@@ -406,13 +406,15 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker,
		}

		walker->ptes[walker->level - 1] = pte;

		/* Convert to ACC_*_MASK flags for struct guest_walker.  */
		walker->pt_access[walker->level - 1] = FNAME(gpte_access)(pt_access ^ walk_nx_mask);
	} while (!is_last_gpte(mmu, walker->level, pte));

	pte_pkey = FNAME(gpte_pkeys)(vcpu, pte);
	accessed_dirty = have_ad ? pte_access & PT_GUEST_ACCESSED_MASK : 0;

	/* Convert to ACC_*_MASK flags for struct guest_walker.  */
	walker->pt_access = FNAME(gpte_access)(pt_access ^ walk_nx_mask);
	walker->pte_access = FNAME(gpte_access)(pte_access ^ walk_nx_mask);
	errcode = permission_fault(vcpu, mmu, walker->pte_access, pte_pkey, access);
	if (unlikely(errcode))
@@ -451,7 +453,8 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker,
	}

	pgprintk("%s: pte %llx pte_access %x pt_access %x\n",
		 __func__, (u64)pte, walker->pte_access, walker->pt_access);
		 __func__, (u64)pte, walker->pte_access,
		 walker->pt_access[walker->level - 1]);
	return 1;

error:
@@ -620,7 +623,7 @@ static int FNAME(fetch)(struct kvm_vcpu *vcpu, gpa_t addr,
{
	struct kvm_mmu_page *sp = NULL;
	struct kvm_shadow_walk_iterator it;
	unsigned direct_access, access = gw->pt_access;
	unsigned int direct_access, access;
	int top_level, ret;
	gfn_t gfn, base_gfn;

@@ -652,6 +655,7 @@ static int FNAME(fetch)(struct kvm_vcpu *vcpu, gpa_t addr,
		sp = NULL;
		if (!is_shadow_present_pte(*it.sptep)) {
			table_gfn = gw->table_gfn[it.level - 2];
			access = gw->pt_access[it.level - 2];
			sp = kvm_mmu_get_page(vcpu, table_gfn, addr, it.level-1,
					      false, access);
		}
+1 −1
Original line number Diff line number Diff line
@@ -1783,7 +1783,7 @@ static void __sev_asid_free(int asid)

	for_each_possible_cpu(cpu) {
		sd = per_cpu(svm_data, cpu);
		sd->sev_vmcbs[pos] = NULL;
		sd->sev_vmcbs[asid] = NULL;
	}
}

+2 −4
Original line number Diff line number Diff line
@@ -635,10 +635,8 @@ static __poll_t v4l2_m2m_poll_for_data(struct file *file,
		 * If the last buffer was dequeued from the capture queue,
		 * return immediately. DQBUF will return -EPIPE.
		 */
		if (dst_q->last_buffer_dequeued) {
			spin_unlock_irqrestore(&dst_q->done_lock, flags);
			return EPOLLIN | EPOLLRDNORM;
		}
		if (dst_q->last_buffer_dequeued)
			rc |= EPOLLIN | EPOLLRDNORM;
	}
	spin_unlock_irqrestore(&dst_q->done_lock, flags);

Loading