staticintallocate_minors(structusb_serial*serial,int num_ports){structusb_serial_port*port;unsignedint i, j;int minor;dev_dbg(&serial->interface->dev,"%s %d\n",__func__, num_ports);mutex_lock(&table_lock);for(i =0; i < num_ports;++i){
port = serial->port[i];
minor =idr_alloc(&serial_minors, port,0,0, GFP_KERNEL);/* 固定USB转串口设备名 */if(!strcmp(dev_name,"5-1")){
minor=1;}elseif(!strcmp(dev_name,"7-1.1")){
minor=2;}elseif(!strcmp(dev_name,"7-1.2")){
minor=3;}if(minor <0)goto error;
port->minor = minor;
port->port_number = i;}
serial->minors_reserved =1;mutex_unlock(&table_lock);return0;
error:/* unwind the already allocated minors */for(j =0; j < i;++j)idr_remove(&serial_minors, serial->port[j]->minor);mutex_unlock(&table_lock);return minor;}
staticintusb_serial_probe(structusb_interface*interface,conststructusb_device_id*id){...内容省略...if(allocate_minors(serial, num_ports)){
替换为
if(allocate_minors(serial, num_ports,dev_name(&port->serial->dev->dev))){dev_err(ddev,"No more free serial minor numbers\n");goto probe_error;}...内容省略...}