Re: [PATCH] KEYS: Make request_key() and co fundamentally asynchronous

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andrew Morton <akpm@...>
Cc: <dhowells@...>, <torvalds@...>, <kwc@...>, <Trond.Myklebust@...>, <linux-kernel@...>, <smfrench@...>, <nfsv4@...>
Date: Monday, September 17, 2007 - 6:56 am

Andrew Morton <akpm@linux-foundation.org> wrote:


Well, Kevin Coffman has reviewed it and tested it against his NFS keys patches.


For this warning:

ERROR: need space after that ',' (ctx:WxV)
#627: FILE: security/keys/internal.h:28:
+#define kenter(FMT, ...) no_printk("==> %s("FMT")\n",__FUNCTION__ ,##__VA_ARGS__)

                                                                   ^

This is with good reason.  Some versions of cpp get the ## resolution "wrong"
if __VA_ARGS__ is empty (ie: there are no arguments to the macro that
correspond to the "...").  This can be worked around by abutting the "," the
"##" and the "__VA_ARGS__" with no spaces, and inserting a space before the
comma.

If I remember correctly, the comma won't be removed if it doesn't abut the
##__VA_ARGS__, and the comma and everthing that abuts it on its LHS can be
removed if there's also no space.  Without the "##", the comma isn't removed.

Consider the result of doing x("a"); where x(y, ...) is #defined to each of the
folowing:

	DEFINITION			RESULT
	===============================	=======================
	printk(y, __VA_ARGS__)		print(y, );
	printk(y ,__VA_ARGS__)		print(y ,);
	printk(y,##__VA_ARGS__)		print();
	printk(y, ##__VA_ARGS__)	print(y, );
	printk(y ,##__VA_ARGS__)	print(y );


I'll change the comment to:

	/* make sure no one's trying to change or use the key when we mark it
	 * - we tell lockdep that we might nest because we might be revoking an
	 *   authorisation key whilst holding the sem on a key we've just
	 *   instantiated
	 */


I could, but that potentially wastes time in two ways: firstly, there can be an
error before we've finished setting up, and that can lead to us having wasted
the time spent making the copy; and secondly, the call to kstrdup itself wastes
a bit of time because of the extra call made.

On the other hand, the code might end up a bit shorter, and isn't particularly
fast path anyway.


Fixed.


Kevin Coffman and Trond for the NFS stuff, both of whom are CC'd.

David
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH] KEYS: Make request_key() and co fundamentally as..., David Howells, (Mon Sep 17, 6:56 am)