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

Commit 7ea0a2bc authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman
Browse files

USB: uhci: don't use pseudo negative values



The code in uhci-q.c doesn't have to use pseudo-negative values.  I did
it that way because it was easy and because it would give the expected
output during debugging.  But it doesn't have to work that way.  Here's
another approach.

Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Cc: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 66760169
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -118,7 +118,9 @@ static int uhci_show_urbp(struct urb_priv *urbp, char *buf, int len, int space)
	}

	out += sprintf(out, "%s%s", ptype, (urbp->fsbr ? " FSBR" : ""));
	out += sprintf(out, " Actlen=%d", urbp->urb->actual_length);
	out += sprintf(out, " Actlen=%d%s", urbp->urb->actual_length,
			(urbp->qh->type == USB_ENDPOINT_XFER_CONTROL ?
				"-8" : ""));

	if (urbp->urb->unlinked)
		out += sprintf(out, " Unlinked=%d", urbp->urb->unlinked);
+4 −7
Original line number Diff line number Diff line
@@ -899,8 +899,6 @@ static int uhci_submit_control(struct uhci_hcd *uhci, struct urb *urb,
	}
	if (qh->state != QH_STATE_ACTIVE)
		qh->skel = skel;

	urb->actual_length = -8;	/* Account for the SETUP packet */
	return 0;

nomem:
@@ -1494,11 +1492,10 @@ __acquires(uhci->lock)

	if (qh->type == USB_ENDPOINT_XFER_CONTROL) {

		/* urb->actual_length < 0 means the setup transaction didn't
		 * complete successfully.  Either it failed or the URB was
		 * unlinked first.  Regardless, don't confuse people with a
		 * negative length. */
		urb->actual_length = max(urb->actual_length, 0);
		/* Subtract off the length of the SETUP packet from
		 * urb->actual_length.
		 */
		urb->actual_length -= min_t(u32, 8, urb->actual_length);
	}

	/* When giving back the first URB in an Isochronous queue,