Old English smoc "garment worn by women, corresponding to the shirt on men," from Proto-Germanic *smukkaz (cf. Old Norse smokkr "a smock," but this is perhaps from Old English; Old High German smoccho "smock," a rare word; North Frisian smok "woman's shift," but this, too, perhaps from English).
Klein's sources, Barnhart and the OED see this as connected to a group of Germanic sm- words having to do with creeping or pressing close, e.g. Old Norse smjuga "to creep (through an opening), to put on (a garment)," smuga "narrow cleft to creep through; small hole;" Old Swedish smog "a round hole for the head;" Old English smugan, smeogan "to creep," smygel ...