From 297b60346df8beafee954a0fd7c2d64f33f3b9bc Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Sat, 11 May 2024 01:44:05 +0000 Subject: [PATCH] rtl8211F_led_control --- kernel/drivers/tty/rocket.c | 54 ++++++++++++++++++++++++++++++++---------------------- 1 files changed, 32 insertions(+), 22 deletions(-) diff --git a/kernel/drivers/tty/rocket.c b/kernel/drivers/tty/rocket.c index 6133830..2540b2e 100644 --- a/kernel/drivers/tty/rocket.c +++ b/kernel/drivers/tty/rocket.c @@ -1225,22 +1225,28 @@ */ static int get_ports(struct r_port *info, struct rocket_ports __user *retports) { - struct rocket_ports tmp; - int board; + struct rocket_ports *tmp; + int board, ret = 0; - memset(&tmp, 0, sizeof (tmp)); - tmp.tty_major = rocket_driver->major; + tmp = kzalloc(sizeof(*tmp), GFP_KERNEL); + if (!tmp) + return -ENOMEM; + + tmp->tty_major = rocket_driver->major; for (board = 0; board < 4; board++) { - tmp.rocketModel[board].model = rocketModel[board].model; - strcpy(tmp.rocketModel[board].modelString, rocketModel[board].modelString); - tmp.rocketModel[board].numPorts = rocketModel[board].numPorts; - tmp.rocketModel[board].loadrm2 = rocketModel[board].loadrm2; - tmp.rocketModel[board].startingPortNumber = rocketModel[board].startingPortNumber; + tmp->rocketModel[board].model = rocketModel[board].model; + strcpy(tmp->rocketModel[board].modelString, + rocketModel[board].modelString); + tmp->rocketModel[board].numPorts = rocketModel[board].numPorts; + tmp->rocketModel[board].loadrm2 = rocketModel[board].loadrm2; + tmp->rocketModel[board].startingPortNumber = + rocketModel[board].startingPortNumber; } - if (copy_to_user(retports, &tmp, sizeof (*retports))) - return -EFAULT; - return 0; + if (copy_to_user(retports, tmp, sizeof(*retports))) + ret = -EFAULT; + kfree(tmp); + return ret; } static int reset_rm2(struct r_port *info, void __user *arg) @@ -1286,23 +1292,29 @@ return -ENXIO; switch (cmd) { - case RCKP_GET_STRUCT: - if (copy_to_user(argp, info, sizeof (struct r_port))) - ret = -EFAULT; - break; case RCKP_GET_CONFIG: + dev_warn_ratelimited(tty->dev, + "RCKP_GET_CONFIG option is deprecated\n"); ret = get_config(info, argp); break; case RCKP_SET_CONFIG: + dev_warn_ratelimited(tty->dev, + "RCKP_SET_CONFIG option is deprecated\n"); ret = set_config(tty, info, argp); break; case RCKP_GET_PORTS: + dev_warn_ratelimited(tty->dev, + "RCKP_GET_PORTS option is deprecated\n"); ret = get_ports(info, argp); break; case RCKP_RESET_RM2: + dev_warn_ratelimited(tty->dev, + "RCKP_RESET_RM2 option is deprecated\n"); ret = reset_rm2(info, argp); break; case RCKP_GET_VERSION: + dev_warn_ratelimited(tty->dev, + "RCKP_GET_VERSION option is deprecated\n"); ret = get_version(info, argp); break; default: @@ -1873,7 +1885,7 @@ */ static __init int register_PCI(int i, struct pci_dev *dev) { - int num_aiops, aiop, max_num_aiops, num_chan, chan; + int num_aiops, aiop, max_num_aiops, chan; unsigned int aiopio[MAX_AIOPS_PER_BOARD]; CONTROLLER_t *ctlp; @@ -2145,8 +2157,7 @@ /* Reset the AIOPIC, init the serial ports */ for (aiop = 0; aiop < num_aiops; aiop++) { sResetAiopByNum(ctlp, aiop); - num_chan = ports_per_aiop; - for (chan = 0; chan < num_chan; chan++) + for (chan = 0; chan < ports_per_aiop; chan++) init_r_port(i, aiop, chan, dev); } @@ -2154,11 +2165,10 @@ if ((rcktpt_type[i] == ROCKET_TYPE_MODEM) || (rcktpt_type[i] == ROCKET_TYPE_MODEMII) || (rcktpt_type[i] == ROCKET_TYPE_MODEMIII)) { - num_chan = ports_per_aiop; - for (chan = 0; chan < num_chan; chan++) + for (chan = 0; chan < ports_per_aiop; chan++) sPCIModemReset(ctlp, chan, 1); msleep(500); - for (chan = 0; chan < num_chan; chan++) + for (chan = 0; chan < ports_per_aiop; chan++) sPCIModemReset(ctlp, chan, 0); msleep(500); rmSpeakerReset(ctlp, rocketModel[i].model); -- Gitblit v1.6.2