git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'fix/hda' of git://github.com/tiwai/sound
[pandora-kernel.git]
/
drivers
/
misc
/
ti-st
/
st_core.c
diff --git
a/drivers/misc/ti-st/st_core.c
b/drivers/misc/ti-st/st_core.c
index
54c91ff
..
ba168a7
100644
(file)
--- a/
drivers/misc/ti-st/st_core.c
+++ b/
drivers/misc/ti-st/st_core.c
@@
-338,6
+338,12
@@
void st_int_recv(void *disc_data,
/* Unknow packet? */
default:
type = *ptr;
/* Unknow packet? */
default:
type = *ptr;
+ if (st_gdata->list[type] == NULL) {
+ pr_err("chip/interface misbehavior dropping"
+ " frame starting with 0x%02x", type);
+ goto done;
+
+ }
st_gdata->rx_skb = alloc_skb(
st_gdata->list[type]->max_frame_size,
GFP_ATOMIC);
st_gdata->rx_skb = alloc_skb(
st_gdata->list[type]->max_frame_size,
GFP_ATOMIC);
@@
-354,6
+360,7
@@
void st_int_recv(void *disc_data,
ptr++;
count--;
}
ptr++;
count--;
}
+done:
spin_unlock_irqrestore(&st_gdata->lock, flags);
pr_debug("done %s", __func__);
return;
spin_unlock_irqrestore(&st_gdata->lock, flags);
pr_debug("done %s", __func__);
return;
@@
-717,9
+724,10
@@
static void st_tty_close(struct tty_struct *tty)
*/
spin_lock_irqsave(&st_gdata->lock, flags);
for (i = ST_BT; i < ST_MAX_CHANNELS; i++) {
*/
spin_lock_irqsave(&st_gdata->lock, flags);
for (i = ST_BT; i < ST_MAX_CHANNELS; i++) {
- if (st_gdata->
list[i] != NULL
)
+ if (st_gdata->
is_registered[i] == true
)
pr_err("%d not un-registered", i);
st_gdata->list[i] = NULL;
pr_err("%d not un-registered", i);
st_gdata->list[i] = NULL;
+ st_gdata->is_registered[i] = false;
}
st_gdata->protos_registered = 0;
spin_unlock_irqrestore(&st_gdata->lock, flags);
}
st_gdata->protos_registered = 0;
spin_unlock_irqrestore(&st_gdata->lock, flags);