@@ -479,15 +479,12 @@ func CreateCgroupConfig(opts *CreateOpts, defaultDevs []*devices.Device) (*confi
479479 if r != nil {
480480 for i , d := range spec .Linux .Resources .Devices {
481481 var (
482- dt = devices . WildcardDevice
482+ t = "a"
483483 major = int64 (- 1 )
484484 minor = int64 (- 1 )
485485 )
486486 if d .Type != "" {
487- dt = devices .Type (d .Type )
488- if ! dt .CanCgroup () {
489- return nil , fmt .Errorf ("invalid cgroup device type %q" , d .Type )
490- }
487+ t = d .Type
491488 }
492489 if d .Major != nil {
493490 major = * d .Major
@@ -498,6 +495,10 @@ func CreateCgroupConfig(opts *CreateOpts, defaultDevs []*devices.Device) (*confi
498495 if d .Access == "" {
499496 return nil , fmt .Errorf ("device access at %d field cannot be empty" , i )
500497 }
498+ dt , err := stringToCgroupDeviceRune (t )
499+ if err != nil {
500+ return nil , err
501+ }
501502 c .Resources .Devices = append (c .Resources .Devices , & devices.Rule {
502503 Type : dt ,
503504 Major : major ,
@@ -634,7 +635,20 @@ func CreateCgroupConfig(opts *CreateOpts, defaultDevs []*devices.Device) (*confi
634635 return c , nil
635636}
636637
637- func stringToDeviceType (s string ) (devices.Type , error ) {
638+ func stringToCgroupDeviceRune (s string ) (devices.Type , error ) {
639+ switch s {
640+ case "a" :
641+ return devices .WildcardDevice , nil
642+ case "b" :
643+ return devices .BlockDevice , nil
644+ case "c" :
645+ return devices .CharDevice , nil
646+ default :
647+ return 0 , fmt .Errorf ("invalid cgroup device type %q" , s )
648+ }
649+ }
650+
651+ func stringToDeviceRune (s string ) (devices.Type , error ) {
638652 switch s {
639653 case "p" :
640654 return devices .FifoDevice , nil
@@ -643,7 +657,7 @@ func stringToDeviceType(s string) (devices.Type, error) {
643657 case "b" :
644658 return devices .BlockDevice , nil
645659 default :
646- return "" , fmt .Errorf ("invalid device type %q" , s )
660+ return 0 , fmt .Errorf ("invalid device type %q" , s )
647661 }
648662}
649663
@@ -679,7 +693,7 @@ next:
679693 if d .GID != nil {
680694 gid = * d .GID
681695 }
682- dt , err := stringToDeviceType (d .Type )
696+ dt , err := stringToDeviceRune (d .Type )
683697 if err != nil {
684698 return nil , err
685699 }
0 commit comments