.. | .. |
---|
1225 | 1225 | */ |
---|
1226 | 1226 | static int get_ports(struct r_port *info, struct rocket_ports __user *retports) |
---|
1227 | 1227 | { |
---|
1228 | | - struct rocket_ports tmp; |
---|
1229 | | - int board; |
---|
| 1228 | + struct rocket_ports *tmp; |
---|
| 1229 | + int board, ret = 0; |
---|
1230 | 1230 | |
---|
1231 | | - memset(&tmp, 0, sizeof (tmp)); |
---|
1232 | | - tmp.tty_major = rocket_driver->major; |
---|
| 1231 | + tmp = kzalloc(sizeof(*tmp), GFP_KERNEL); |
---|
| 1232 | + if (!tmp) |
---|
| 1233 | + return -ENOMEM; |
---|
| 1234 | + |
---|
| 1235 | + tmp->tty_major = rocket_driver->major; |
---|
1233 | 1236 | |
---|
1234 | 1237 | for (board = 0; board < 4; board++) { |
---|
1235 | | - tmp.rocketModel[board].model = rocketModel[board].model; |
---|
1236 | | - strcpy(tmp.rocketModel[board].modelString, rocketModel[board].modelString); |
---|
1237 | | - tmp.rocketModel[board].numPorts = rocketModel[board].numPorts; |
---|
1238 | | - tmp.rocketModel[board].loadrm2 = rocketModel[board].loadrm2; |
---|
1239 | | - tmp.rocketModel[board].startingPortNumber = rocketModel[board].startingPortNumber; |
---|
| 1238 | + tmp->rocketModel[board].model = rocketModel[board].model; |
---|
| 1239 | + strcpy(tmp->rocketModel[board].modelString, |
---|
| 1240 | + rocketModel[board].modelString); |
---|
| 1241 | + tmp->rocketModel[board].numPorts = rocketModel[board].numPorts; |
---|
| 1242 | + tmp->rocketModel[board].loadrm2 = rocketModel[board].loadrm2; |
---|
| 1243 | + tmp->rocketModel[board].startingPortNumber = |
---|
| 1244 | + rocketModel[board].startingPortNumber; |
---|
1240 | 1245 | } |
---|
1241 | | - if (copy_to_user(retports, &tmp, sizeof (*retports))) |
---|
1242 | | - return -EFAULT; |
---|
1243 | | - return 0; |
---|
| 1246 | + if (copy_to_user(retports, tmp, sizeof(*retports))) |
---|
| 1247 | + ret = -EFAULT; |
---|
| 1248 | + kfree(tmp); |
---|
| 1249 | + return ret; |
---|
1244 | 1250 | } |
---|
1245 | 1251 | |
---|
1246 | 1252 | static int reset_rm2(struct r_port *info, void __user *arg) |
---|
.. | .. |
---|
1286 | 1292 | return -ENXIO; |
---|
1287 | 1293 | |
---|
1288 | 1294 | switch (cmd) { |
---|
1289 | | - case RCKP_GET_STRUCT: |
---|
1290 | | - if (copy_to_user(argp, info, sizeof (struct r_port))) |
---|
1291 | | - ret = -EFAULT; |
---|
1292 | | - break; |
---|
1293 | 1295 | case RCKP_GET_CONFIG: |
---|
| 1296 | + dev_warn_ratelimited(tty->dev, |
---|
| 1297 | + "RCKP_GET_CONFIG option is deprecated\n"); |
---|
1294 | 1298 | ret = get_config(info, argp); |
---|
1295 | 1299 | break; |
---|
1296 | 1300 | case RCKP_SET_CONFIG: |
---|
| 1301 | + dev_warn_ratelimited(tty->dev, |
---|
| 1302 | + "RCKP_SET_CONFIG option is deprecated\n"); |
---|
1297 | 1303 | ret = set_config(tty, info, argp); |
---|
1298 | 1304 | break; |
---|
1299 | 1305 | case RCKP_GET_PORTS: |
---|
| 1306 | + dev_warn_ratelimited(tty->dev, |
---|
| 1307 | + "RCKP_GET_PORTS option is deprecated\n"); |
---|
1300 | 1308 | ret = get_ports(info, argp); |
---|
1301 | 1309 | break; |
---|
1302 | 1310 | case RCKP_RESET_RM2: |
---|
| 1311 | + dev_warn_ratelimited(tty->dev, |
---|
| 1312 | + "RCKP_RESET_RM2 option is deprecated\n"); |
---|
1303 | 1313 | ret = reset_rm2(info, argp); |
---|
1304 | 1314 | break; |
---|
1305 | 1315 | case RCKP_GET_VERSION: |
---|
| 1316 | + dev_warn_ratelimited(tty->dev, |
---|
| 1317 | + "RCKP_GET_VERSION option is deprecated\n"); |
---|
1306 | 1318 | ret = get_version(info, argp); |
---|
1307 | 1319 | break; |
---|
1308 | 1320 | default: |
---|
.. | .. |
---|
1873 | 1885 | */ |
---|
1874 | 1886 | static __init int register_PCI(int i, struct pci_dev *dev) |
---|
1875 | 1887 | { |
---|
1876 | | - int num_aiops, aiop, max_num_aiops, num_chan, chan; |
---|
| 1888 | + int num_aiops, aiop, max_num_aiops, chan; |
---|
1877 | 1889 | unsigned int aiopio[MAX_AIOPS_PER_BOARD]; |
---|
1878 | 1890 | CONTROLLER_t *ctlp; |
---|
1879 | 1891 | |
---|
.. | .. |
---|
2145 | 2157 | /* Reset the AIOPIC, init the serial ports */ |
---|
2146 | 2158 | for (aiop = 0; aiop < num_aiops; aiop++) { |
---|
2147 | 2159 | sResetAiopByNum(ctlp, aiop); |
---|
2148 | | - num_chan = ports_per_aiop; |
---|
2149 | | - for (chan = 0; chan < num_chan; chan++) |
---|
| 2160 | + for (chan = 0; chan < ports_per_aiop; chan++) |
---|
2150 | 2161 | init_r_port(i, aiop, chan, dev); |
---|
2151 | 2162 | } |
---|
2152 | 2163 | |
---|
.. | .. |
---|
2154 | 2165 | if ((rcktpt_type[i] == ROCKET_TYPE_MODEM) || |
---|
2155 | 2166 | (rcktpt_type[i] == ROCKET_TYPE_MODEMII) || |
---|
2156 | 2167 | (rcktpt_type[i] == ROCKET_TYPE_MODEMIII)) { |
---|
2157 | | - num_chan = ports_per_aiop; |
---|
2158 | | - for (chan = 0; chan < num_chan; chan++) |
---|
| 2168 | + for (chan = 0; chan < ports_per_aiop; chan++) |
---|
2159 | 2169 | sPCIModemReset(ctlp, chan, 1); |
---|
2160 | 2170 | msleep(500); |
---|
2161 | | - for (chan = 0; chan < num_chan; chan++) |
---|
| 2171 | + for (chan = 0; chan < ports_per_aiop; chan++) |
---|
2162 | 2172 | sPCIModemReset(ctlp, chan, 0); |
---|
2163 | 2173 | msleep(500); |
---|
2164 | 2174 | rmSpeakerReset(ctlp, rocketModel[i].model); |
---|