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]
Date:	Fri, 29 Aug 2008 02:14:46 -0600
From:	<stefan_kopp@...lent.com>
To:	<oliver@...kum.org>
Cc:	<korgull@...e.nl>, <greg@...ah.com>, <stern@...land.harvard.edu>,
	<linux-usb@...r.kernel.org>, <me@...ipebalbi.com>,
	<linux-kernel@...r.kernel.org>, <stefan_kopp@...lent.com>
Subject: RE: [PATCH] USB: add USB test and measurement class driver - round 2

Hi Oliver,

USBTMC has a different concept, the "termination character". If this is enabled and set to the appropriate character (usually /n), the read operation will be terminated by the device automatically. The last character in the response will be the termination character. Note, however, this capability is optional (not every vendor supports it) and even if it is supported, is might be deactivated (for good reason, e.g. for transfer of binary data).

If you are not using the termination character, the device will typically send its full output buffer contents. Usually, this works just fine because communication with the device is transactional, one query followed by a response, then another query, followed by another response, and so on.

The driver does return the number of characters received in both cases (with or without use of the term character feature).

The issue is more the habit of fread of "insisting" on receiving the full number of characters requested in the call to fread. Usually, you don't know how many characters will be returned by a USBTMC device, so you just ask for plenty and see how many you get. This works just fine with read(2). fread, unfortunately, retries the read by calling the driver's read entry point again. If you don't catch this retry and ask the USBTMC device for data, you will receive a timeout (unless there happens to be additional data in the device's output buffer).

In the original driver, I "simulated" an EOF by just returning 0 in the retry call to the read method. Not sure there's a better way of handling this issue because you can't rely on the termination character... However, I'm very open to ideas... As I said earlier, I avoided this whole issue by using read in my next layer.

Best regards
Stefan


-----Original Message-----
From: Oliver Neukum [mailto:oliver@...kum.org] 
Sent: Freitag, 29. August 2008 09:47
To: KOPP,STEFAN (A-Germany,ex1)
Cc: korgull@...e.nl; greg@...ah.com; stern@...land.harvard.edu; linux-usb@...r.kernel.org; me@...ipebalbi.com; linux-kernel@...r.kernel.org
Subject: Re: [PATCH] USB: add USB test and measurement class driver - round 2

Am Freitag 29 August 2008 08:57:54 schrieb stefan_kopp@...lent.com:
> The issue with using cat on the shell level is that it uses fread 
> which has the (in this case) ugly behaviour of recalling the driver's 
> read method until the full number of characters requested has been 
> accumulated (or until zero characters are returned, indicating the end 
> of file). With USBTMC instruments, this behavour is bad because the 
> retry

This may be problematic. The driver is throwing away EOF in other words.
Generally this is not a good idea. User space can no longer tell how long the reply was.

	Regards
		Oliver



--
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