2024年1月26日 星期五

disable anydesk autostart

systemctl disable anydesk.service

「systemctl list-unit-files」可列出系統服務。另外 LXQT 有另一套 autostart 在 /etc/xdg/autostart。

參考

2024年1月5日 星期五

copy_from_user() 和 copy_to_user()

unsigned long copy_from_user (void *to, const void *from, unsigned long count);
unsigned long copy_to_user (void *to, const void *from, unsigned long count);

在 read()、write()、或 ioctl() 等,可能需要在 user-space 和 kernel-space 間搬移資料,本質是 memcpy(),回傳未完成的 byte 數。此外也 access_ok() 檢查 user-space 指標是否 valid。另外有 __get_user() 和 __put_user()。

User-space 資料

  • user-space 指標在 kernel 未必是對的,和運行的 architecture 和 kernel 的設定有關。(有不對的例子嗎?)
  • user-space 資料可能 page-out 而不在記憶體中,直接存取會造成 page fault OOPS。
  • user program 提供的 pointer 可能是 buggy or malicious,而開了一個後門造成安全問題。例如指到 kernel-space 並寫入資料,變成 kernel 資料無故被改變。

如果不需要 access_ok() 檢查,例如已經檢查過,__copy_to_user()、__copy_from_user()、__get_user() 和 __put_user() 版本。

driver accesses user space must be reentrant, must be able to execute concurrently with other driver functions, and, in particular, must be in a position where it can legally sleep.

參考

  1. LDD chap 3
  • LDD chap 6

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...