Is It Possible to Automatically Port Kernel Modules?

As essential components in Linux kernel, kernel modules (kmods) account for over 70% of Linux source code and are heavily dependent on fast evolving and non-stable kernel internal interfaces. Forward and back porting kmods to target versions of Linux kernel is hard but necessary. We conducted a comprehensive study to investigate the characteristics of kernel internal interface changes by analyzing 256 representative patches selected from Linux development history in last 7 years. We gained some new insights into challenges and opportunities on automatic porting of kernel modules. The study allows us a better understanding of the problem and it is useful for designing automated tools to assist in porting kmods.

[1]  Stas Negara,et al.  A Comparative Study of Manual and Automated Refactorings , 2013, ECOOP.

[2]  Miryung Kim,et al.  A graph-based approach to API usage adaptation , 2010, OOPSLA.

[3]  Stas Negara,et al.  Is It Dangerous to Use Version Control Histories to Study Source Code Evolution? , 2012, ECOOP.

[4]  Miryung Kim,et al.  An empirical investigation into the role of API-level refactorings during software evolution , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[5]  Flávio Medeiros,et al.  Safely Evolving Preprocessor-Based Configurable Systems , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[6]  Sebastian Erdweg,et al.  Variability-aware parsing in the presence of lexical macros and conditional compilation , 2011, OOPSLA '11.

[7]  Ralph E. Johnson,et al.  The role of refactorings in API evolution , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[8]  Julia L. Lawall,et al.  Generic patch inference , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[9]  Julia L. Lawall,et al.  Understanding collateral evolution in Linux device drivers , 2006, EuroSys '06.

[10]  Miryung Kim,et al.  An Empirical Study of RefactoringChallenges and Benefits at Microsoft , 2014, IEEE Transactions on Software Engineering.

[11]  Andreas Zeller,et al.  The impact of tangled code changes , 2013, 2013 10th Working Conference on Mining Software Repositories (MSR).

[12]  David Lo,et al.  Understanding Widespread Changes: A Taxonomic Study , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

[13]  Fan Long,et al.  Staged program repair with condition synthesis , 2015, ESEC/SIGSOFT FSE.

[14]  Julia L. Lawall,et al.  Fast and Precise Retrieval of Forward and Back Porting Information for Linux Device Drivers , 2017, USENIX Annual Technical Conference.

[15]  Abhik Roychoudhury,et al.  Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[16]  Miryung Kim,et al.  Discovering and representing systematic code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[17]  Miryung Kim,et al.  Interactive Code Review for Systematic Changes , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[18]  Marco Tulio Valente,et al.  Recording and replaying system specific, source code transformations , 2015, 2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM).

[19]  Julia L. Lawall,et al.  Documenting and automating collateral evolutions in linux device drivers , 2008, Eurosys '08.

[20]  Claire Le Goues,et al.  GenProg: A Generic Method for Automatic Software Repair , 2012, IEEE Transactions on Software Engineering.

[21]  Miryung Kim,et al.  Systematic editing: generating program transformations from an example , 2011, PLDI '11.

[22]  Miryung Kim,et al.  Lase: Locating and applying systematic edits by learning from examples , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[23]  Julia L. Lawall,et al.  SmPL: A Domain-Specific Language for Specifying Collateral Evolutions in Linux Device Drivers , 2006, Electron. Notes Theor. Comput. Sci..

[24]  Miryung Kim,et al.  Ref-Finder: a refactoring reconstruction tool based on logic query templates , 2010, FSE '10.

[25]  Robert Grimm,et al.  SuperC: parsing all of C by taming the preprocessor , 2012, PLDI.

[26]  Márcio Ribeiro,et al.  The Love/Hate Relationship with the C Preprocessor: An Interview Study , 2015, ECOOP.

[27]  David Lo,et al.  Recommending Code Changes for Automatic Backporting of Linux Device Drivers , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[28]  Jeffrey Overbey,et al.  A foundation for refactoring C with macros , 2014, SIGSOFT FSE.

[29]  Marco Tulio Valente,et al.  System specific, source code transformations , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).