diff options
| author | Michał Mirosław <mirq-linux@rere.qmqm.pl> | 2011-11-15 15:29:55 +0000 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-11-16 17:43:10 -0500 | 
| commit | c8f44affb7244f2ac3e703cab13d55ede27621bb (patch) | |
| tree | 62e7aea2916a8d7cab825fe500670c5113854c0f /lib | |
| parent | a59e2ecb859f2ab03bb2e230709f8039472ad2c3 (diff) | |
| download | olio-linux-3.10-c8f44affb7244f2ac3e703cab13d55ede27621bb.tar.xz olio-linux-3.10-c8f44affb7244f2ac3e703cab13d55ede27621bb.zip  | |
net: introduce and use netdev_features_t for device features sets
v2:	add couple missing conversions in drivers
	split unexporting netdev_fix_features()
	implemented %pNF
	convert sock::sk_route_(no?)caps
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/vsprintf.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 993599e66e5..8e75003d62f 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -777,6 +777,18 @@ char *uuid_string(char *buf, char *end, const u8 *addr,  	return string(buf, end, uuid, spec);  } +static +char *netdev_feature_string(char *buf, char *end, const u8 *addr, +		      struct printf_spec spec) +{ +	spec.flags |= SPECIAL | SMALL | ZEROPAD; +	if (spec.field_width == -1) +		spec.field_width = 2 + 2 * sizeof(netdev_features_t); +	spec.base = 16; + +	return number(buf, end, *(const netdev_features_t *)addr, spec); +} +  int kptr_restrict __read_mostly;  /* @@ -824,6 +836,7 @@ int kptr_restrict __read_mostly;   *       Do not use this feature without some mechanism to verify the   *       correctness of the format string and va_list arguments.   * - 'K' For a kernel pointer that should be hidden from unprivileged users + * - 'NF' For a netdev_features_t   *   * Note: The difference between 'S' and 'F' is that on ia64 and ppc64   * function pointers are really function descriptors, which contain a @@ -896,6 +909,12 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr,  		       has_capability_noaudit(current, CAP_SYSLOG))))  			ptr = NULL;  		break; +	case 'N': +		switch (fmt[1]) { +		case 'F': +			return netdev_feature_string(buf, end, ptr, spec); +		} +		break;  	}  	spec.flags |= SMALL;  	if (spec.field_width == -1) {  |