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: <20140114141523.GC11820@lee--X1>
Date:	Tue, 14 Jan 2014 14:15:23 +0000
From:	Lee Jones <lee.jones@...aro.org>
To:	Dan Carpenter <dan.carpenter@...cle.com>
Cc:	rogerable@...ltek.com, Samuel Ortiz <sameo@...ux.intel.com>,
	Alex Dubov <oakad@...oo.com>,
	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	driverdev-devel@...uxdriverproject.org, linux-mmc@...r.kernel.org,
	linux-kernel@...r.kernel.org, wei_wang@...lsil.com.cn,
	Chris Ball <cjb@...top.org>,
	Maxim Levitsky <maximlevitsky@...il.com>
Subject: Re: [PATCH 1/3] mfd: Add realtek USB card reader driver

> [ Sorry, I am coming down with the flu today so I'm doing dorky things
>   like reviewing review comments.  I'm not sure how coherent I am.  ]

Always welcome.

NB: I did this review in double-quick time, which may account for some
of the weird thought processes (or lack there of).

> > > +static void rtsx_usb_sg_timed_out(unsigned long data)
> > > +{
> > > +	struct rtsx_ucr *ucr = (struct rtsx_ucr *)data;
> > 
> > What's going to happen when your device runs 64bit?
> > 
> 
> I'm not sure I understand what you mean here.  On linux sizeof(long) is
> always the same as sizeof(void *).

I had an odd moment where I thought we'd need long long for 64bit.

Nevermind.

> > > +	if (cmd_len > IOBUF_SIZE)
> > > +		return -EINVAL;
> > > +
> > > +	if (cmd_len % 4)
> > > +		cmd_len += (4 - cmd_len % 4);
> > 
> > Please document in a comment.
> 
> There is a kernel macro for this:
> 
> 	cmd_len = ALIGN(cmd_len, 4);
> 
> 	if (cmd_len > IOBUF_SIZE)
> 		return -EINVAL;

I had a feeling this was the intention, hence why I was asking for a
comment. But yes, if all this is doing is alignment then the kernel
macro is preferred.

> > > +
> > > +
> > 
> > Extra '/n'
> > 
> 
> It weirds me out when you mix up '\n' and /n'.

Typos happen on occasion...

> > > +int rtsx_usb_ep0_write_register(struct rtsx_ucr *ucr, u16 addr,
> > > +		u8 mask, u8 data)
> > > +{
> > > +	u16 value = 0, index = 0;
> > > +
> > > +	value |= 0x03 << 14;
> > > +	value |= addr & 0x3FFF;
> > > +	value = ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF);
> > > +	index |= (u16)mask;
> > > +	index |= (u16)data << 8;
> > 
> > Lots of random numbers here, please #define for clarity and ease of
> > reading.
> > 
> 
> The only really random number is the 0x03, but yeah, it would help if
> that we a define.

See ---^

As I say, I just glossed over the code, thus didn't spend the time to
work out the arithmetic. Now I do, most of it is pretty self
explanatory. I would also like to see the SHIFT #defined, although
this may become superfluous once the 0x03 is clarified.

> 	addr |= 0x03 << 14;
> 
> 	value = __swab16(addr);
> 	index = mask | (data << 8);

This is 100% better/clearer.

> > > +
> > > +	dev_dbg(&intf->dev,
> > > +		": Realtek USB Card Reader found at bus %03d address %03d\n",
> > > +		 usb_dev->bus->busnum, usb_dev->devnum);
> > > +
> > > +	ucr = kzalloc(sizeof(struct rtsx_ucr), GFP_KERNEL);
> > 
> > s/struct rtsx_ucr/*ucr/
> > 
> > Any reason for not using managed resources?
> > 
> Roger, he means the devm_kzalloc().

That I do.

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
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