diff options
author | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2010-07-13 17:25:06 +0000 |
---|---|---|
committer | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2010-07-13 17:25:06 +0000 |
commit | dfa545814b61b3e1d527e842dd883b153277c4b4 (patch) | |
tree | 1d44d19b37b1337e0bda53255c5c3a7f363d42f1 /drivers/dahdi/xpp/card_global.c | |
parent | 624e11908da4c775717011a31bad086d2c268d2d (diff) |
prevent handling of duplicate Astribanks
Don't let AB which are unplugged/replugged create duplicate XBUS's (if
asterisk don't close the original channels).
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@8905 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/xpp/card_global.c')
-rw-r--r-- | drivers/dahdi/xpp/card_global.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/dahdi/xpp/card_global.c b/drivers/dahdi/xpp/card_global.c index 4cf5ca5..e731560 100644 --- a/drivers/dahdi/xpp/card_global.c +++ b/drivers/dahdi/xpp/card_global.c @@ -431,6 +431,8 @@ static void global_packet_dump(const char *msg, xpacket_t *pack); DBG(DEVICES, "NO XBUS\n"); return -EINVAL; } + if (xbus_check_unique(xbus)) + return -EBUSY; XFRAME_NEW_CMD(xframe, pack, xbus, GLOBAL, AB_REQUEST, 0); RPACKET_FIELD(pack, GLOBAL, AB_REQUEST, rev) = XPP_PROTOCOL_VERSION; RPACKET_FIELD(pack, GLOBAL, AB_REQUEST, reserved) = 0; @@ -614,6 +616,8 @@ HANDLER_DEF(GLOBAL, AB_DESCRIPTION) /* 0x08 */ goto proto_err; } XBUS_INFO(xbus, "DESCRIPTOR: %d cards, protocol revision %d\n", count_units, rev); + if (xbus_check_unique(xbus)) + return -EBUSY; xbus->revision = rev; worker = &xbus->worker; if (!worker->wq) { |