hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/tty/rocket.c
....@@ -1225,22 +1225,28 @@
12251225 */
12261226 static int get_ports(struct r_port *info, struct rocket_ports __user *retports)
12271227 {
1228
- struct rocket_ports tmp;
1229
- int board;
1228
+ struct rocket_ports *tmp;
1229
+ int board, ret = 0;
12301230
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;
12331236
12341237 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;
12401245 }
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;
12441250 }
12451251
12461252 static int reset_rm2(struct r_port *info, void __user *arg)
....@@ -1286,23 +1292,29 @@
12861292 return -ENXIO;
12871293
12881294 switch (cmd) {
1289
- case RCKP_GET_STRUCT:
1290
- if (copy_to_user(argp, info, sizeof (struct r_port)))
1291
- ret = -EFAULT;
1292
- break;
12931295 case RCKP_GET_CONFIG:
1296
+ dev_warn_ratelimited(tty->dev,
1297
+ "RCKP_GET_CONFIG option is deprecated\n");
12941298 ret = get_config(info, argp);
12951299 break;
12961300 case RCKP_SET_CONFIG:
1301
+ dev_warn_ratelimited(tty->dev,
1302
+ "RCKP_SET_CONFIG option is deprecated\n");
12971303 ret = set_config(tty, info, argp);
12981304 break;
12991305 case RCKP_GET_PORTS:
1306
+ dev_warn_ratelimited(tty->dev,
1307
+ "RCKP_GET_PORTS option is deprecated\n");
13001308 ret = get_ports(info, argp);
13011309 break;
13021310 case RCKP_RESET_RM2:
1311
+ dev_warn_ratelimited(tty->dev,
1312
+ "RCKP_RESET_RM2 option is deprecated\n");
13031313 ret = reset_rm2(info, argp);
13041314 break;
13051315 case RCKP_GET_VERSION:
1316
+ dev_warn_ratelimited(tty->dev,
1317
+ "RCKP_GET_VERSION option is deprecated\n");
13061318 ret = get_version(info, argp);
13071319 break;
13081320 default:
....@@ -1873,7 +1885,7 @@
18731885 */
18741886 static __init int register_PCI(int i, struct pci_dev *dev)
18751887 {
1876
- int num_aiops, aiop, max_num_aiops, num_chan, chan;
1888
+ int num_aiops, aiop, max_num_aiops, chan;
18771889 unsigned int aiopio[MAX_AIOPS_PER_BOARD];
18781890 CONTROLLER_t *ctlp;
18791891
....@@ -2145,8 +2157,7 @@
21452157 /* Reset the AIOPIC, init the serial ports */
21462158 for (aiop = 0; aiop < num_aiops; aiop++) {
21472159 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++)
21502161 init_r_port(i, aiop, chan, dev);
21512162 }
21522163
....@@ -2154,11 +2165,10 @@
21542165 if ((rcktpt_type[i] == ROCKET_TYPE_MODEM) ||
21552166 (rcktpt_type[i] == ROCKET_TYPE_MODEMII) ||
21562167 (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++)
21592169 sPCIModemReset(ctlp, chan, 1);
21602170 msleep(500);
2161
- for (chan = 0; chan < num_chan; chan++)
2171
+ for (chan = 0; chan < ports_per_aiop; chan++)
21622172 sPCIModemReset(ctlp, chan, 0);
21632173 msleep(500);
21642174 rmSpeakerReset(ctlp, rocketModel[i].model);