Linux 5.12 ಕರ್ನಲ್ ಮೆಮೊರಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ದೋಷಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು KFence ಉಪವ್ಯವಸ್ಥೆಯನ್ನು ಅಳವಡಿಸಿಕೊಂಡಿದೆ

ಅಭಿವೃದ್ಧಿಯಲ್ಲಿರುವ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ 5.12, ಕೆಫೆನ್ಸ್ (ಕರ್ನಲ್ ಎಲೆಕ್ಟ್ರಿಕ್ ಫೆನ್ಸ್) ಯಾಂತ್ರಿಕತೆಯ ಅನುಷ್ಠಾನವನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದು ಮೆಮೊರಿ ನಿರ್ವಹಣೆ, ಕ್ಯಾಚಿಂಗ್ ಬಫರ್ ಓವರ್‌ರನ್‌ಗಳು, ಮುಕ್ತಗೊಳಿಸಿದ ನಂತರ ಮೆಮೊರಿ ಪ್ರವೇಶಗಳು ಮತ್ತು ಇದೇ ರೀತಿಯ ವರ್ಗದ ಇತರ ದೋಷಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ.

ಇದೇ ರೀತಿಯ ಕಾರ್ಯವು ಈಗಾಗಲೇ KASAN ಬಿಲ್ಡ್ ಆಯ್ಕೆಯ ರೂಪದಲ್ಲಿ ಕರ್ನಲ್‌ನಲ್ಲಿದೆ (ಕರ್ನಲ್ ವಿಳಾಸ ಸ್ಯಾನಿಟೈಜರ್, ಆಧುನಿಕ gcc ಮತ್ತು ಕ್ಲಾಂಗ್‌ನಲ್ಲಿ ವಿಳಾಸ ಸ್ಯಾನಿಟೈಜರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ) - ಆದಾಗ್ಯೂ, ಇದನ್ನು ಮುಖ್ಯವಾಗಿ ಡೀಬಗ್ ಮಾಡುವ ಬಳಕೆಗಾಗಿ ಇರಿಸಲಾಗಿದೆ. KFence ಉಪವ್ಯವಸ್ಥೆಯು KASAN ನಿಂದ ಅದರ ಹೆಚ್ಚಿನ ಕಾರ್ಯಾಚರಣಾ ವೇಗದಲ್ಲಿ ಭಿನ್ನವಾಗಿದೆ, ಇದು ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿನ ಕೋರ್‌ಗಳಲ್ಲಿಯೂ ಸಹ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ.

ಉತ್ಪಾದನಾ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿನ ಅಪ್ಲಿಕೇಶನ್ ಪರೀಕ್ಷಾ ರನ್‌ಗಳಲ್ಲಿ ಕಂಡುಬರದ ಮೆಮೊರಿ ದೋಷಗಳನ್ನು ಹಿಡಿಯಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ ಮತ್ತು ಕೆಲಸದ ಹೊರೆಗಳ ಸಮಯದಲ್ಲಿ ಅಥವಾ ದೀರ್ಘಾವಧಿಯ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ ಮಾತ್ರ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ (ದೊಡ್ಡ ಸಮಯದೊಂದಿಗೆ). ಹೆಚ್ಚುವರಿಯಾಗಿ, ಉತ್ಪಾದನಾ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ KFence ಬಳಕೆಯು ಮೆಮೊರಿಯೊಂದಿಗೆ ಕರ್ನಲ್ನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪರಿಶೀಲಿಸುವಲ್ಲಿ ಒಳಗೊಂಡಿರುವ ಯಂತ್ರಗಳ ಸಂಖ್ಯೆಯನ್ನು ಗಣನೀಯವಾಗಿ ಹೆಚ್ಚಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ.

ನಿಗದಿತ ಮಧ್ಯಂತರಗಳಲ್ಲಿ ಗಾರ್ಡ್ ಪುಟಗಳನ್ನು ರಾಶಿಗೆ ಸೇರಿಸುವ ಮೂಲಕ KFence ಕನಿಷ್ಟ ಲೋಡ್-ಸ್ವತಂತ್ರ ಓವರ್ಹೆಡ್ ಅನ್ನು ಸಾಧಿಸುತ್ತದೆ. ಮುಂದಿನ ರಕ್ಷಣೆಯ ಮಧ್ಯಂತರ ಅವಧಿ ಮುಗಿದ ನಂತರ, KFence, ಪ್ರಮಾಣಿತ ಮೆಮೊರಿ ಹಂಚಿಕೆ ವ್ಯವಸ್ಥೆ (SLAB ಅಥವಾ SLUB ಅಲೋಕೇಟರ್) ಮೂಲಕ KFence ಆಬ್ಜೆಕ್ಟ್ ಪೂಲ್‌ನಿಂದ ಮುಂದಿನ ರಕ್ಷಣೆ ಪುಟವನ್ನು ಸೇರಿಸುತ್ತದೆ ಮತ್ತು ಹೊಸ ಸಮಯದ ಕೌಂಟರ್ ವರದಿಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು KFence ವಸ್ತುವು ಪ್ರತ್ಯೇಕ ಮೆಮೊರಿ ಪುಟದಲ್ಲಿದೆ, ಮತ್ತು ಎಡ ಮತ್ತು ಬಲ ಗಡಿಗಳ ಉದ್ದಕ್ಕೂ ಮೆಮೊರಿ ಪುಟಗಳು ಗಾರ್ಡ್ ಪುಟಗಳನ್ನು ರೂಪಿಸುತ್ತವೆ, ಅದರ ಗಾತ್ರವನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ.

ಹೀಗಾಗಿ, ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳನ್ನು ರಕ್ಷಣೆ ಪುಟಗಳಿಂದ ಪರಸ್ಪರ ಬೇರ್ಪಡಿಸಲಾಗುತ್ತದೆ, ಯಾವುದೇ ಪ್ರವೇಶದ ಮೇಲೆ "ಪುಟ ದೋಷ" ವನ್ನು ಸೃಷ್ಟಿಸಲು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ. ಆಬ್ಜೆಕ್ಟ್ ಪುಟಗಳ ಒಳಗೆ ಬೌಂಡರಿ-ಆಫ್-ಬೌಂಡರಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು, ಪ್ಯಾಟರ್ನ್-ಆಧಾರಿತ "ಕೆಂಪು ವಲಯಗಳನ್ನು" ಹೆಚ್ಚುವರಿಯಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ, ಇದು ಆಬ್ಜೆಕ್ಟ್‌ಗಳಿಂದ ಬಳಸದ ಮೆಮೊರಿಯನ್ನು ಆಕ್ರಮಿಸುತ್ತದೆ, ಮೆಮೊರಿ ಪುಟಗಳ ಗಾತ್ರವನ್ನು ಜೋಡಿಸಿದಾಗ ಉಳಿದಿದೆ. —+————+————+———+———+—————+— | xxxxxxxx | ಒ: | xxxxxxxx | :O | xxxxxxxx | | xxxxxxxx | ಬಿ: | xxxxxxxx | :B | xxxxxxxx | | x ಗಾರ್ಡ್ x | ಜೆ : ಕೆಂಪು- | x ಗಾರ್ಡ್ x | ಕೆಂಪು- : ಜೆ | x ಗಾರ್ಡ್ x | | xxxxxxxx | ಇ: ವಲಯ | xxxxxxxx | ವಲಯ: ಇ | xxxxxxxx | | xxxxxxxx | ಸಿ: | xxxxxxxx | :ಸಿ | xxxxxxxx | | xxxxxxxx | ಟಿ: | xxxxxxxx | : ಟಿ | xxxxxxxx | —+————+———+———+———+————+————+—+—

ಬಫರ್ ಗಡಿಯ ಹೊರಗಿನ ಪ್ರದೇಶವನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಿದರೆ, ಕಾರ್ಯಾಚರಣೆಯು ರಕ್ಷಣೆ ಪುಟದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ, ಇದು "ಪುಟ ದೋಷ" ದ ಉತ್ಪಾದನೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಇದು KFence ಅನ್ನು ಪ್ರತಿಬಂಧಿಸುತ್ತದೆ ಮತ್ತು ಗುರುತಿಸಲಾದ ಸಮಸ್ಯೆಯ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಲಾಗ್ ಮಾಡುತ್ತದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, KFence ದೋಷವನ್ನು ನಿರ್ಬಂಧಿಸುವುದಿಲ್ಲ ಮತ್ತು ಲಾಗ್‌ನಲ್ಲಿ ಎಚ್ಚರಿಕೆಯನ್ನು ಮಾತ್ರ ಪ್ರದರ್ಶಿಸುತ್ತದೆ, ಆದರೆ ದೋಷ ಪತ್ತೆಯಾದರೆ ಕರ್ನಲ್ ಅನ್ನು ಪ್ಯಾನಿಕ್ ಸ್ಥಿತಿಗೆ ಇರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ "panic_on_warn" ಸೆಟ್ಟಿಂಗ್ ಇದೆ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ