diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-03-26 17:16:14 +0000 | 
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-03-26 17:16:14 +0000 | 
| commit | 49bc389ec2318b75e86a3c3239a495d7a8311046 (patch) | |
| tree | 5fe953bd06a535b262ac3da29ab9aa09e5a57d8c /net/sctp/tsnmap.c | |
| parent | aed9913e6fad5a7eccce2b7a3ee6daa96b575157 (diff) | |
| parent | df8c3dbee9e6f19ddb0ae8e05cdf76eb2d3b7f00 (diff) | |
| download | olio-linux-3.10-49bc389ec2318b75e86a3c3239a495d7a8311046.tar.xz olio-linux-3.10-49bc389ec2318b75e86a3c3239a495d7a8311046.zip  | |
Merge tag 'arizona-extcon-asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/misc into asoc-arizona
ASoC/extcon: arizona: Fix interaction between HPDET and headphone outputs
This patch series covers both ASoC and extcon subsystems and fixes an
interaction between the HPDET function and the headphone outputs - we
really shouldn't run HPDET while the headphone is active.  The first
patch is a refactoring to make the extcon side easier.
Diffstat (limited to 'net/sctp/tsnmap.c')
| -rw-r--r-- | net/sctp/tsnmap.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/net/sctp/tsnmap.c b/net/sctp/tsnmap.c index 5f25e0c92c3..396c45174e5 100644 --- a/net/sctp/tsnmap.c +++ b/net/sctp/tsnmap.c @@ -51,7 +51,7 @@  static void sctp_tsnmap_update(struct sctp_tsnmap *map);  static void sctp_tsnmap_find_gap_ack(unsigned long *map, __u16 off,  				     __u16 len, __u16 *start, __u16 *end); -static int sctp_tsnmap_grow(struct sctp_tsnmap *map, u16 gap); +static int sctp_tsnmap_grow(struct sctp_tsnmap *map, u16 size);  /* Initialize a block of memory as a tsnmap.  */  struct sctp_tsnmap *sctp_tsnmap_init(struct sctp_tsnmap *map, __u16 len, @@ -124,7 +124,7 @@ int sctp_tsnmap_mark(struct sctp_tsnmap *map, __u32 tsn,  	gap = tsn - map->base_tsn; -	if (gap >= map->len && !sctp_tsnmap_grow(map, gap)) +	if (gap >= map->len && !sctp_tsnmap_grow(map, gap + 1))  		return -ENOMEM;  	if (!sctp_tsnmap_has_gap(map) && gap == 0) { @@ -360,23 +360,24 @@ __u16 sctp_tsnmap_num_gabs(struct sctp_tsnmap *map,  	return ngaps;  } -static int sctp_tsnmap_grow(struct sctp_tsnmap *map, u16 gap) +static int sctp_tsnmap_grow(struct sctp_tsnmap *map, u16 size)  {  	unsigned long *new;  	unsigned long inc;  	u16  len; -	if (gap >= SCTP_TSN_MAP_SIZE) +	if (size > SCTP_TSN_MAP_SIZE)  		return 0; -	inc = ALIGN((gap - map->len),BITS_PER_LONG) + SCTP_TSN_MAP_INCREMENT; +	inc = ALIGN((size - map->len), BITS_PER_LONG) + SCTP_TSN_MAP_INCREMENT;  	len = min_t(u16, map->len + inc, SCTP_TSN_MAP_SIZE);  	new = kzalloc(len>>3, GFP_ATOMIC);  	if (!new)  		return 0; -	bitmap_copy(new, map->tsn_map, map->max_tsn_seen - map->base_tsn); +	bitmap_copy(new, map->tsn_map, +		map->max_tsn_seen - map->cumulative_tsn_ack_point);  	kfree(map->tsn_map);  	map->tsn_map = new;  	map->len = len;  |