diff --git a/net/atm/common.c b/net/atm/common.c index 81195727fa18..73057bb016f7 100644 --- a/net/atm/common.c +++ b/net/atm/common.c @@ -378,8 +378,11 @@ static int __vcc_connect(struct atm_vcc *vcc, struct atm_dev *dev, short vpi, int error; if ((vpi != ATM_VPI_UNSPEC && vpi != ATM_VPI_ANY && + dev->ci_range.vpi_bits != ATM_CI_MAX && vpi >> dev->ci_range.vpi_bits) || (vci != ATM_VCI_UNSPEC && - vci != ATM_VCI_ANY && vci >> dev->ci_range.vci_bits)) + vci != ATM_VCI_ANY && + dev->ci_range.vci_bits != ATM_CI_MAX && + vci >> dev->ci_range.vci_bits)) return -EINVAL; if (vci > 0 && vci < ATM_NOT_RSV_VCI && !capable(CAP_NET_BIND_SERVICE)) return -EPERM;