lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080724111450.GM28817@elte.hu>
Date:	Thu, 24 Jul 2008 13:14:50 +0200
From:	Ingo Molnar <mingo@...e.hu>
To:	Yinghai Lu <yhlu.kernel@...il.com>
Cc:	Thomas Gleixner <tglx@...utronix.de>,
	"H. Peter Anvin" <hpa@...or.com>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Andi Kleen <andi@...stfloor.org>,
	Arjan van de Ven <arjan@...radead.org>,
	"Eric W. Biederman" <ebiederm@...ssion.com>,
	Greg KH <greg@...ah.com>, linux-kernel@...r.kernel.org,
	linux-usb@...r.kernel.org
Subject: Re: [PATCH] x86: usb debug port early console v3


very nice feature!

The code structure looks good to me, here's a few minor style nits:

> +	/* Now that we have observed the completed transaction,
> +	 * clear the done bit.
> +	 */

while i understand that this is cut & pasted code, please use standard 
comment style:

  /*
   * Comment ...
   *  ... line.
   */

(ditto the same mistake in other places too)

> +	/* Read the result */
> +	ret = dbgp_bulk_read(devnum, 0, data, size);
> +	return ret;

do:

    return dbgp_bulk_read(devnum, 0, data, size);

> +	if (!(read_pci_config_16(num, slot, func, PCI_STATUS) &
> +		PCI_STATUS_CAP_LIST))
> +		return 0;
> +	pos = read_pci_config_byte(num, slot, func, PCI_CAPABILITY_LIST);

it's generally nicer to the eyes to add an extra newline after a block 
with return in it.

> +	for (bytes = 0; bytes < 48 && pos >= 0x40; bytes++) {
> +		u8 id;
> +		pos &= ~3;

please put a newline between variable definitions and first statement.

> +
> +static __u32 __init find_dbgp(int ehci_num, unsigned *rbus, unsigned *rslot,
> +				unsigned *rfunc)
> +{
> +	unsigned bus, slot, func;
> +
> +	for (bus = 0; bus < 256; bus++) {
> +		for (slot = 0; slot < 32; slot++) {
> +			for (func = 0; func < 8; func++) {
> +				u32 class;
> +				unsigned cap;
> +
> +				class = read_pci_config(bus, slot, func,
> +							 PCI_CLASS_REVISION);
> +				if ((class >> 8) != PCI_CLASS_SERIAL_USB_EHCI)
> +					continue;
> +				cap = find_cap(bus, slot, func,
> +						 PCI_CAP_ID_EHCI_DEBUG);

the line 80 breaks you had to add here show that the nesting is too deep 
here - i'd suggest a helper __find_dbgp() function to put the iterator 
into.

> +	if ((ctrl & DBGP_CLAIM) != DBGP_CLAIM) {
> +		dbgp_printk("No device in debug port\n");
> +		writel(ctrl & ~DBGP_CLAIM, &ehci_debug->control);
> +		return -1;
> +
> +	}

stray newline.

> +static int __init early_dbgp_init(char *s)
> +{
> +	struct usb_debug_descriptor dbgp_desc;
> +	void __iomem *ehci_bar;
> +	unsigned ctrl, devnum;
> +	unsigned bus, slot, func, cap;
> +	unsigned debug_port, bar, offset;
> +	unsigned bar_val;
> +	char *e;
> +	int ret;
> +	unsigned dbgp_num;

use an explicit integer type please instead of 'unsigned'. Also, try to 
use reverse christmas-tree ordering for same-type entries (and where 
possible, between different types as well):

> +	struct usb_debug_descriptor dbgp_desc;
> +	unsigned int debug_port, bar, offset;
> +	unsigned int bus, slot, func, cap;
> +	unsigned int ctrl, devnum;
> +	unsigned int dbgp_num;
> +	unsigned int bar_val;
> +	void __iomem *ehci_bar;
> +	char *e;
> +	int ret;


here:

> +	dbgp_num = 0;
> +	if (*s)
> +		dbgp_num = simple_strtoul(s, &e, 10);
> +	dbgp_printk("dbgp_num: %d\n", dbgp_num);
> +	cap = find_dbgp(dbgp_num, &bus, &slot, &func);
> +	if (!cap)
> +		return -1;
> +
> +	dbgp_printk("Found EHCI debug port\n");

i'd suggest a newline after the first dbgp_printk(), to make the two 
sections stand out better.

> +	}
> +
> +

stray newline.

> +	/* FIXME I don't have the bar size so just guess PAGE_SIZE is more
> +	 * than enough.  1K is the biggest I have seen.
> +	 */

comment style.

> +	ret = ehci_setup();
> +	if (ret < 0) {
> +		dbgp_printk("ehci_setup failed\n");
> +		ehci_debug = 0;
> +		return -1;

please put newlines before return statements, to make sure there's a 
hickup in the visual flow during review. (which hickup return statements 
should cause, they must not be glossed over)

> +	}
> +
> +

stray newline.

> Index: linux-2.6/drivers/usb/host/ehci.h
> ===================================================================
> --- linux-2.6.orig/drivers/usb/host/ehci.h
> +++ linux-2.6/drivers/usb/host/ehci.h
> @@ -210,146 +210,11 @@ timer_action (struct ehci_hcd *ehci, enu

i suggest you make this code movement a separate patch. In the unlikely 
event of there being any regression it's an easier bisection target.

looks good to me otherwise.

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ