projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sparc/ldc: create separate ldc_unbind from ldc_free
[linux-2.6-block.git]
/
arch
/
sparc
/
kernel
/
ldc.c
diff --git
a/arch/sparc/kernel/ldc.c
b/arch/sparc/kernel/ldc.c
index 4310332872d4cf90727b1e91b900dcbe601d296f..274a9f59d95cee9b2f6fcb0318a9ac78d8b17e6b 100644
(file)
--- a/
arch/sparc/kernel/ldc.c
+++ b/
arch/sparc/kernel/ldc.c
@@
-1222,11
+1222,12
@@
out_err:
}
EXPORT_SYMBOL(ldc_alloc);
}
EXPORT_SYMBOL(ldc_alloc);
-void ldc_
free
(struct ldc_channel *lp)
+void ldc_
unbind
(struct ldc_channel *lp)
{
if (lp->flags & LDC_FLAG_REGISTERED_IRQS) {
free_irq(lp->cfg.rx_irq, lp);
free_irq(lp->cfg.tx_irq, lp);
{
if (lp->flags & LDC_FLAG_REGISTERED_IRQS) {
free_irq(lp->cfg.rx_irq, lp);
free_irq(lp->cfg.tx_irq, lp);
+ lp->flags &= ~LDC_FLAG_REGISTERED_IRQS;
}
if (lp->flags & LDC_FLAG_REGISTERED_QUEUES) {
}
if (lp->flags & LDC_FLAG_REGISTERED_QUEUES) {
@@
-1240,10
+1241,15
@@
void ldc_free(struct ldc_channel *lp)
lp->flags &= ~LDC_FLAG_ALLOCED_QUEUES;
}
lp->flags &= ~LDC_FLAG_ALLOCED_QUEUES;
}
- hlist_del(&lp->list);
+ ldc_set_state(lp, LDC_STATE_INIT);
+}
+EXPORT_SYMBOL(ldc_unbind);
+void ldc_free(struct ldc_channel *lp)
+{
+ ldc_unbind(lp);
+ hlist_del(&lp->list);
kfree(lp->mssbuf);
kfree(lp->mssbuf);
-
ldc_iommu_release(lp);
kfree(lp);
ldc_iommu_release(lp);
kfree(lp);