Apa yang menyebabkan tambalan: **** tambalan rusak pada baris

1

Saya punya file diff yang saya buat. Saya mencoba menerapkannya pada cabang lain dengan patch -p1 --dry-run < ~/patch_name(saya di direktori 1 - karenanya -p1), tetapi saya dapatkan

tambalan: **** tambalan yang salah pada baris 45: diff --FILE_LOCATION ...

Sebelum kesalahan itu muncul, garis itu dicetak;

checking file file_a
checking file file_b

Jadi, saya mengerti bahwa file_a, file_bitu ok dan bahwa saya memiliki masalah di baris 45, jadi saya menghapus baris 45 ke file-akhir (saya melakukannya 2 kali - sekali tanpa-baris baru pada akhirnya, sekali dengan).

Sekarang kesalahannya

tambalan: **** tambalan yang salah pada baris 44: diff --FILE_LOCATION ...

Apa yang salah dengan tambalan ini?

Ini adalah tambalan itu sendiri:

diff --git a/trunk/rf_iss/ISS/code/future/inc/params.h b/trunk/rf_iss/ISS/code/future/inc/params.h
index 1983556..16a8375 100755
--- a/trunk/rf_iss/ISS/code/future/inc/params.h
+++ b/trunk/rf_iss/ISS/code/future/inc/params.h
@@ -2348,6 +2348,7 @@ typedef UINT1 tLocalPortList [CONTEXT_PORT_LIST_SIZE];
 #define MAX_SLI_SLL_NODES               1500
 #define MAX_SLI_BUFF_BLOCKS             2
 #define MAX_SLI_FD_ARR_BLOCKS           2
+#define MAX_SLI_WAKEUP                  25
 #define MAX_SLI_SDT_BLOCKS              MAX_NO_OF_SOCKETS
 #define MAX_SLI_RAW_HASH_NODES          MAX_NO_OF_SOCKETS
 #define MAX_SLI_RAW_RCV_Q_NODES         MAX_NO_OF_SOCKETS
diff --git a/trunk/rf_iss/ISS/code/future/netip/fsip/udp/src/udptskmg.c b/trunk/rf_iss/ISS/code/future/netip/fsip/udp/src/udptskmg.c
index 9db6034..c5ac3ad 100755
--- a/trunk/rf_iss/ISS/code/future/netip/fsip/udp/src/udptskmg.c
+++ b/trunk/rf_iss/ISS/code/future/netip/fsip/udp/src/udptskmg.c
@@ -11,6 +11,7 @@

 static VOID Udp_timer_expiry_handler PROTO ((VOID));
 extern tMemPoolId   gUdp4MemPoolId;
+extern INT4         gi4SelectWakeupFd;
 /*-------------------------------------------------------------------+
  * Function           : Ip_Udp_Task_Init
  *
@@ -191,6 +192,20 @@ udp_task_enqueue_to_applications_in_cxt (UINT4 u4ContextId, UINT2 u2Port,
                                          t_UDP * pUdpHdr)
 {
     t_UDP_TO_APP_MSG_PARMS *pParms = NULL;
+
+    /* If queue is depleting reserved wakeupFd blocks drop packet */
+    if (pCtrlBlk->i4SockDesc != gi4SelectWakeupFd)
+    {
+       if (MemGetFreeUnits (gUdp4MemPoolId) <= MAX_SLI_WAKEUP)
+       {
+           IP_CXT_TRC (u4ContextId, UDP_MOD_TRC,
+                    ALL_FAILURE_TRC | CONTROL_PLANE_TRC, UDP_NAME,
+                    "Packet Discarded since memory goes over reserved wakeup fd's\n");
+           IP_RELEASE_BUF (pBuf, FALSE);
+           return IP_FAILURE;
+       }
+    }

     pParms = (t_UDP_TO_APP_MSG_PARMS *) MemAllocMemBlk (gUdp4MemPoolId);
     if (pParms == NULL)
diff --git a/trunk/rf_iss/ISS/code/future/sli/socket.c b/trunk/rf_iss/ISS/code/future/sli/socket.c
index 1ca5641..2ad721f 100755
--- a/trunk/rf_iss/ISS/code/future/sli/socket.c
+++ b/trunk/rf_iss/ISS/code/future/sli/socket.c
@@ -3244,6 +3244,26 @@ SliSendtoWithTrace (INT4 i4SockDesc, CONST VOID *pi1Buf, INT4 i4BufLen,
             }
             cpPeerSdtSock = SOCK_DESC_TABLE[i4PeerSockDesc];

+            /* check added to ensure that MAX_SLI_WAKEUP 
+             * units are reserved for WakeupFD socket. This is to 
+             * ensure wakeup fd is always protected such that once
+             * it gets notification, it will cleanup the filled
+             * udp queue. but wakeup fd could
+             * not be triggered because of lack of space in queue
+             * so explicitly reserve space for wakeup fd socket.
+             */
+            if (i4SockDesc != gi4SelectWakeupFd)
+            {
+                if (MemGetFreeUnits (gUdp4MemPoolId) <= MAX_SLI_WAKEUP)
+                {
+                     SLI_Release_Buffer (pBufChnHdr, FALSE);
+                     CpsdtSock->i1ErrorCode = SLI_EMEMFAIL;
+                     SLI_ERR (SLI_EMEMFAIL);
+                     GiveSliProtectSem(CpsdtSock->ProtectSemId);
+                     return SLI_FAILURE;
+                }
+            }
+ 
             /* allocate memory for UDP message from UDP4 mem pool */
             pParms = (t_UDP_TO_APP_MSG_PARMS *) MemAllocMemBlk (gUdp4MemPoolId);
             if (pParms == NULL)

Saya membuatnya menggunakan diffjadi saya tidak mengerti bagaimana bisa cacat ...

CIsForCookies
sumber
1
Saya tidak punya bola kristal. Patch Anda entah bagaimana melanggar format yang diharapkan, mis. Tidak ada ruang sebelum baris yang tidak berubah. Berikan tambalan dengan pertanyaan Anda, jika Anda membutuhkan jawaban yang lebih baik. :-)
mvw
@ mvw saya menambahkan tambalan (tidak panjang ~ 70 baris)
CIsForCookies

Jawaban:

1

Saya baru-baru ini mengalami masalah ini sendiri ketika mengedit secara manual file tambalan karena berisi beberapa perubahan yang tidak diinginkan.

Di sinilah letak masalahnya (Saya telah menambahkan nomor baris untuk diilustrasikan):

@@ -191,6 +192,20 @@ udp_task_enqueue_to_applications_in_cxt (UINT4 u4ContextId, UINT2 u2Port,
1                                          t_UDP * pUdpHdr)
2 {
3     t_UDP_TO_APP_MSG_PARMS *pParms = NULL;
4+
5+    /* If queue is depleting reserved wakeupFd blocks drop packet */
6+    if (pCtrlBlk->i4SockDesc != gi4SelectWakeupFd)
7+    {
8+       if (MemGetFreeUnits (gUdp4MemPoolId) <= MAX_SLI_WAKEUP)
9+       {
10+           IP_CXT_TRC (u4ContextId, UDP_MOD_TRC,
11+                    ALL_FAILURE_TRC | CONTROL_PLANE_TRC, UDP_NAME,
12+                    "Packet Discarded since memory goes over reserved wakeup fd's\n");
13+           IP_RELEASE_BUF (pBuf, FALSE);
14+           return IP_FAILURE;
15+       }
16+    }
17
18    pParms = (t_UDP_TO_APP_MSG_PARMS *) MemAllocMemBlk (gUdp4MemPoolId);
19    if (pParms == NULL)

Secara khusus, masalahnya terletak pada "+192,20"

Patch mengharapkan bagian akhir yang ditambal menjadi 20 baris, tetapi jika Anda menghitung 6 baris konteks, ditambah 13 baris tambahan, minus 0 penghapusan, ini hanya menambahkan hingga 19. Seperti yang akan Anda perhatikan, baris setelah if (pParms == NULL)terjadi menjadi baris 45, yang merupakan nomor baris yang tercantum dalam pesan kesalahan - itu mencapai baris 45 mengharapkan satu baris lagi di bingkisan, tetapi sebaliknya menerima baris yang menyatakan bingkisan baru.

Jika Anda mengubah baris pertama menjadi

@@ -191,6 +192,19 @@ udp_task_enqueue_to_applications_in_cxt (UINT4 u4ContextId, UINT2 u2Port,

Patch Anda harus diterapkan dengan benar.

Mobus Dorphin
sumber