All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen Gang <gang.chen@asianux.com>
To: fengguang.wu@intel.com, isdn@linux-pingi.de,
	Linus Torvalds <torvalds@linux-foundation.org>
Cc: David Miller <davem@davemloft.net>, netdev <netdev@vger.kernel.org>
Subject: [Suggestion] ISDN: isdnloop:  C grammar issue,  '}' miss match 'if' and 'switch' statement.
Date: Wed, 03 Apr 2013 21:35:55 +0800	[thread overview]
Message-ID: <515C303B.1040304@asianux.com> (raw)

Hello Maintainers:

in drivers/isdn/isdnloop/isdnloop.c

  issue description:
    it is in function 'isdnloop_command'.
    it seems a C grammar issue for '}' miss match 'if' and 'switch' statement
    please check the line 1243, 1265, 1341.

  building:
    make allyesconfig, can not let it built.
    in menuconfig, we (at least for me) can not let ISDN_DRV_LOOP = 'y' or 'm'.
    is this module a waste module which should be deleted ?

  the related commit:
    commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
    Author: Linus Torvalds <torvalds@ppc970.osdl.org>
    Date:   Sat Apr 16 15:20:36 2005 -0700


  please help check, thanks.

gchen.

1120 /*
1121  * Main handler for commands sent by linklevel.
1122  */
1123 static int
1124 isdnloop_command(isdn_ctrl *c, isdnloop_card *card)
1125 {
1126         ulong a;
1127         int i;
1128         char cbuf[60];
1129         isdn_ctrl cmd;
1130         isdnloop_cdef cdef;
1131 
1132         switch (c->command) {
1133         case ISDN_CMD_IOCTL:
1134                 memcpy(&a, c->parm.num, sizeof(ulong));
1135                 switch (c->arg) {
1136                 case ISDNLOOP_IOCTL_DEBUGVAR:
1137                         return (ulong) card;
1138                 case ISDNLOOP_IOCTL_STARTUP:
1139                         if (!access_ok(VERIFY_READ, (void *) a, sizeof(isdnloop_sdef)))
1140                                 return -EFAULT;
1141                         return (isdnloop_start(card, (isdnloop_sdef *) a));
1142                         break;
1143                 case ISDNLOOP_IOCTL_ADDCARD:
1144                         if (copy_from_user((char *)&cdef,
1145                                            (char *)a,
1146                                            sizeof(cdef)))
1147                                 return -EFAULT;
1148                         return (isdnloop_addcard(cdef.id1));
1149                         break;
1150                 case ISDNLOOP_IOCTL_LEASEDCFG:
1151                         if (a) {
1152                                 if (!card->leased) {
1153                                         card->leased = 1;
1154                                         while (card->ptype == ISDN_PTYPE_UNKNOWN)
1155                                                 schedule_timeout_interruptible(10);
1156                                         schedule_timeout_interruptible(10);
1157                                         sprintf(cbuf, "00;FV2ON\n01;EAZ1\n02;EAZ2\n");
1158                                         i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1159                                         printk(KERN_INFO
1160                                                "isdnloop: (%s) Leased-line mode enabled\n",
1161                                                CID);
1162                                         cmd.command = ISDN_STAT_RUN;
1163                                         cmd.driver = card->myid;
1164                                         cmd.arg = 0;
1165                                         card->interface.statcallb(&cmd);
1166                                 }
1167                         } else {
1168                                 if (card->leased) {
1169                                         card->leased = 0;
1170                                         sprintf(cbuf, "00;FV2OFF\n");
1171                                         i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1172                                         printk(KERN_INFO
1173                                                "isdnloop: (%s) Leased-line mode disabled\n",
1174                                                CID);
1175                                         cmd.command = ISDN_STAT_RUN;
1176                                         cmd.driver = card->myid;
1177                                         cmd.arg = 0;
1178                                         card->interface.statcallb(&cmd);
1179                                 }
1180                         }
1181                         return 0;
1182                 default:
1183                         return -EINVAL;
1184                 }
1185                 break;
1186         case ISDN_CMD_DIAL:
1187                 if (!(card->flags & ISDNLOOP_FLAGS_RUNNING))
1188                         return -ENODEV;
1189                 if (card->leased)
1190                         break;
1191                 if ((c->arg & 255) < ISDNLOOP_BCH) {
1192                         char *p;
1193                         char dial[50];
1194                         char dcode[4];
1195 
1196                         a = c->arg;
1197                         p = c->parm.setup.phone;
1198                         if (*p == 's' || *p == 'S') {
1199                                 /* Dial for SPV */
1200                                 p++;
1201                                 strcpy(dcode, "SCA");
1202                         } else
1203                                 /* Normal Dial */
1204                                 strcpy(dcode, "CAL");
1205                         strcpy(dial, p);
1206                         sprintf(cbuf, "%02d;D%s_R%s,%02d,%02d,%s\n", (int) (a + 1),
1207                                 dcode, dial, c->parm.setup.si1,
1208                                 c->parm.setup.si2, c->parm.setup.eazmsn);
1209                         i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1210                 }
1211                 break;
1212         case ISDN_CMD_ACCEPTD:
1213                 if (!(card->flags & ISDNLOOP_FLAGS_RUNNING))
1214                         return -ENODEV;
1215                 if (c->arg < ISDNLOOP_BCH) {
1216                         a = c->arg + 1;
1217                         cbuf[0] = 0;
1218                         switch (card->l2_proto[a - 1]) {
1219                         case ISDN_PROTO_L2_X75I:
1220                                 sprintf(cbuf, "%02d;BX75\n", (int) a);
1221                                 break;
1222 #ifdef CONFIG_ISDN_X25
1223                         case ISDN_PROTO_L2_X25DTE:
1224                                 sprintf(cbuf, "%02d;BX2T\n", (int) a);
1225                                 break;
1226                         case ISDN_PROTO_L2_X25DCE:
1227                                 sprintf(cbuf, "%02d;BX2C\n", (int) a);
1228                                 break;
1229 #endif
1230                         case ISDN_PROTO_L2_HDLC:
1231                                 sprintf(cbuf, "%02d;BTRA\n", (int) a);
1232                                 break;
1233                         }
1234                         if (strlen(cbuf))
1235                                 i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1236                         sprintf(cbuf, "%02d;DCON_R\n", (int) a);
1237                         i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1238                 }
1239                 break;
1240         case ISDN_CMD_ACCEPTB:
1241                 if (!(card->flags & ISDNLOOP_FLAGS_RUNNING))
1242                         return -ENODEV;
1243                 if (c->arg < ISDNLOOP_BCH) {
1244                         a = c->arg + 1;
1245                         switch (card->l2_proto[a - 1]) {
1246                         case ISDN_PROTO_L2_X75I:
1247                                 sprintf(cbuf, "%02d;BCON_R,BX75\n", (int) a);
1248                                 break;
1249 #ifdef CONFIG_ISDN_X25
1250                         case ISDN_PROTO_L2_X25DTE:
1251                                 sprintf(cbuf, "%02d;BCON_R,BX2T\n", (int) a);
1252                                 break;
1253                         case ISDN_PROTO_L2_X25DCE:
1254                                 sprintf(cbuf, "%02d;BCON_R,BX2C\n", (int) a);
1255                                 break;
1256 #endif
1257                         case ISDN_PROTO_L2_HDLC:
1258                                 sprintf(cbuf, "%02d;BCON_R,BTRA\n", (int) a);
1259                                 break;
1260                         default:
1261                                 sprintf(cbuf, "%02d;BCON_R\n", (int) a);
1262                         }
1263                         printk(KERN_DEBUG "isdnloop writecmd '%s'\n", cbuf);
1264                         i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1265                         break;
1266                 case ISDN_CMD_HANGUP:
1267                         if (!(card->flags & ISDNLOOP_FLAGS_RUNNING))
1268                                 return -ENODEV;
1269                         if (c->arg < ISDNLOOP_BCH) {
1270                                 a = c->arg + 1;
1271                                 sprintf(cbuf, "%02d;BDIS_R\n%02d;DDIS_R\n", (int) a, (int) a);
1272                                 i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1273                         }
1274                         break;
1275                 case ISDN_CMD_SETEAZ:
1276                         if (!(card->flags & ISDNLOOP_FLAGS_RUNNING))
1277                                 return -ENODEV;
1278                         if (card->leased)
1279                                 break;
1280                         if (c->arg < ISDNLOOP_BCH) {
1281                                 a = c->arg + 1;
1282                                 if (card->ptype == ISDN_PTYPE_EURO) {
1283                                         sprintf(cbuf, "%02d;MS%s%s\n", (int) a,
1284                                                 c->parm.num[0] ? "N" : "ALL", c->parm.num);
1285                                 } else
1286                                         sprintf(cbuf, "%02d;EAZ%s\n", (int) a,
1287                                                 c->parm.num[0] ? c->parm.num : (u_char *) "0123456789");
1288                                 i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1289                         }
1290                         break;
1291                 case ISDN_CMD_CLREAZ:
1292                         if (!(card->flags & ISDNLOOP_FLAGS_RUNNING))
1293                                 return -ENODEV;
1294                         if (card->leased)
1295                                 break;
1296                         if (c->arg < ISDNLOOP_BCH) {
1297                                 a = c->arg + 1;
1298                                 if (card->ptype == ISDN_PTYPE_EURO)
1299                                         sprintf(cbuf, "%02d;MSNC\n", (int) a);
1300                                 else
1301                                         sprintf(cbuf, "%02d;EAZC\n", (int) a);
1302                                 i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1303                         }
1304                         break;
1305                 case ISDN_CMD_SETL2:
1306                         if (!(card->flags & ISDNLOOP_FLAGS_RUNNING))
1307                                 return -ENODEV;
1308                         if ((c->arg & 255) < ISDNLOOP_BCH) {
1309                                 a = c->arg;
1310                                 switch (a >> 8) {
1311                                 case ISDN_PROTO_L2_X75I:
1312                                         sprintf(cbuf, "%02d;BX75\n", (int) (a & 255) + 1);
1313                                         break;
1314 #ifdef CONFIG_ISDN_X25
1315                                 case ISDN_PROTO_L2_X25DTE:
1316                                         sprintf(cbuf, "%02d;BX2T\n", (int) (a & 255) + 1);
1317                                         break;
1318                                 case ISDN_PROTO_L2_X25DCE:
1319                                         sprintf(cbuf, "%02d;BX2C\n", (int) (a & 255) + 1);
1320                                         break;
1321 #endif
1322                                 case ISDN_PROTO_L2_HDLC:
1323                                         sprintf(cbuf, "%02d;BTRA\n", (int) (a & 255) + 1);
1324                                         break;
1325                                 case ISDN_PROTO_L2_TRANS:
1326                                         sprintf(cbuf, "%02d;BTRA\n", (int) (a & 255) + 1);
1327                                         break;
1328                                 default:
1329                                         return -EINVAL;
1330                                 }
1331                                 i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
1332                                 card->l2_proto[a & 255] = (a >> 8);
1333                         }
1334                         break;
1335                 case ISDN_CMD_SETL3:
1336                         if (!(card->flags & ISDNLOOP_FLAGS_RUNNING))
1337                                 return -ENODEV;
1338                         return 0;
1339                 default:
1340                         return -EINVAL;
1341                 }
1342         }
1343         return 0;
1344 }

             reply	other threads:[~2013-04-03 13:36 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-03 13:35 Chen Gang [this message]
2013-04-03 14:08 ` [Suggestion] ISDN: isdnloop: C grammar issue, '}' miss match 'if' and 'switch' statement Michal Kubecek
2013-04-03 14:31   ` Eric Dumazet
2013-04-03 15:08     ` Michal Kubecek
2013-04-03 15:30     ` Linus Torvalds
2013-04-04  8:30       ` Chen Gang
2013-04-04 18:09         ` David Miller
2013-04-05  3:00           ` Joe Perches
2013-04-05  6:13             ` Chen Gang
2013-04-05 20:37             ` Dan Williams
2013-04-06  4:56               ` Chen Gang
2013-04-05  6:09           ` Chen Gang
2013-04-04  9:05   ` Chen Gang
2013-04-04 14:42     ` Joe Perches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=515C303B.1040304@asianux.com \
    --to=gang.chen@asianux.com \
    --cc=davem@davemloft.net \
    --cc=fengguang.wu@intel.com \
    --cc=isdn@linux-pingi.de \
    --cc=netdev@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.